svn 惯用
svn 常用
(0)解决冲突 (分析原因) [root@host150 svntest]# svn ci -m " " a.php 正在发送 a.php 传输文件数据.svn: 提交失败(细节见下):====>有冲突 服务器版本为10127 ,而本地版本为10126说明刚才有人已经提交过一个版本 svn: Out of date: '/svntest/a.php' in transaction '12127-1' [root@host150 svntest]# svn log a.php ------------------------------------ r12126 | wangxj | 2011-02-12 16:12:17 +0800 (六, 12 2月 2011) | 1 line ------------------------------------ r12125 | wangxj | 2011-02-12 16:02:35 +0800 (六, 12 2月 2011) | 1 line ------------------------------------ r12124 | wangxj | 2011-02-12 15:59:27 +0800 (六, 12 2月 2011) | 1 line ------------------------------------ #比较本地版本和仓库中的版本有什么区别 [root@host150 svntest]# svn diff -r HEAD a.php Index: a.php =================================================================== --- a.php (修订版 12127) +++ a.php (工作拷贝) @@ -1,2 +1,2 @@ -ida..........................dddadad(=====>svn服务器仓库中的版本) +idaddadad=============ddadad(===>本地最新的版本) [root@host150 svntest]# 例子==>(2) [root@host150 svntest]# svn ci -m "" a.php 正在发送 a.php 传输文件数据.svn: 提交失败(细节见下): svn: Out of date: '/svntest/a.php' in transaction '12134-1' [root@host150 svntest]# svn up Conflict discovered in 'a.php'. Select: (p) postpone, (df) diff-full, (e) edit, (mc) mine-conflict, (tc) theirs-conflict, (s) show all options: p C a.php 更新至修订版 12134。 Summary of conflicts: Text conflicts: 1 [root@host150 svntest]# [root@host150 svntest]# [root@host150 svntest]# [root@host150 svntest]# [root@host150 svntest]# [root@host150 svntest]# svn up 于修订版 12134。 [root@host150 svntest]# [root@host150 svntest]# [root@host150 svntest]# [root@host150 svntest]# svn st -v 12134 12133 wangxj . ? a.php.r12134 ? a.php.r12126 ? a.php.mine 12134 10884 wangxj trunk 12134 10884 wangxj branches 12134 12124 wangxj test.php C 12134 12133 wangxj a.php 12134 12124 wangxj b.php 12134 10884 wangxj tags [root@host150 svntest]# [root@host150 svntest]# svn merge -r 12133:12134 a.php [root@host150 svntest]# svn resolved a.php “a.php”的已解决的冲突状态 (注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的 相关文件,然后让 PATH 可以再次提交。) [root@host150 svntest]# svn ci -m " " a.php 正在发送 a.php 传输文件数据. 提交后的修订版为 12138。 (1) 导入项目 $ cd ~/project $ mkdir -p svntest/{trunk,branches,tags} $ svn import svntest https://localhost/test/svntest --message "Start project" (2) 导出项目 svn co svn://192.168.1.125/newipcentrex/exchange --username wangxj --password wangxj123 . [root@host150 tmp]# svn co svn://192.168.1.125/newipcentrex/svntest svntest A svntest/trunk A svntest/branches A svntest/test.php A svntest/a.php A svntest/b.php A svntest/tags 取出修订版 12128。 [root@host150 tmp]# [root@host150 tmp]# [root@host150 tmp]# [root@host150 tmp]# [root@host150 tmp]# cd svntest/ [root@host150 svntest]# svn st -v 12128 12127 wangxj . 12128 10884 wangxj trunk 12128 10884 wangxj branches 12128 12124 wangxj test.php 12128 12127 wangxj a.php 12128 12124 wangxj b.php 12128 10884 wangxj tags [root@host150 svntest]# 备注:第一列表示BASE, 第二列表示COMMITTED 可以看出checkout一个working-copy后,svn会给这个working-copy分一个新的、统一的BASE版本号(如 12128)。 接下来可以修改pi.cpp代码,然后checkin,你就会发现这个文件的BASE和COMMITTED会同时增加,并且相等。如下 [root@host150 svntest]# svn st -v 12128 12127 wangxj . 12128 10884 wangxj trunk 12128 10884 wangxj branches 12128 12124 wangxj test.php 12133 12133 wangxj a.php 12128 12124 wangxj b.php 12128 10884 wangxj tags [root@host150 svntest]# 接下来在此目录下执行update动作,你就会发现所有文件的BASE都进行了升级,但是COMMITTED没有改变,如下 ost150 svntest]# svn up 于修订版 12133。 [root@host150 svntest]# svn st -v 12133 12133 wangxj . 12133 10884 wangxj trunk 12133 10884 wangxj branches 12133 12124 wangxj test.php 12133 12133 wangxj a.php 12133 12124 wangxj b.php 12133 10884 wangxj tags [root@host150 svntest]# (3)查看日志 ============>比较差异 #比较上一次提交的版本和当前提交的版本有什么区别 svn diff --revision PREV:COMMITTED users_controller.php svn di -r PREV:COMMITTED users_controller.php #比较本地文件和版本库中的文件的最新改动 [root@host150 app]# svn diff --revision HEAD controllers/clientrates_controller.php 例子: #显示这个文件的所有修改记录,及其版本号的变化 [root@host150 svntest]# svn log a.php ------------------------------------ r12127 | wangxj | 2011-02-12 16:26:50 +0800 (六, 12 2月 2011) | 1 line ------------------------------------ r12126 | wangxj | 2011-02-12 16:12:17 +0800 (六, 12 2月 2011) | 1 line ------------------------------------ r12125 | wangxj | 2011-02-12 16:02:35 +0800 (六, 12 2月 2011) | 1 line ------------------------------------ r12124 | wangxj | 2011-02-12 15:59:27 +0800 (六, 12 2月 2011) | 1 line ------------------------------------比较12126和12127两个版本之间的差异 [root@host150 svntest]# svn diff a.php [root@host150 svntest]# svn diff -r 12126:12127 a.php Index: a.php =================================================================== --- a.php (修订版 12126) +++ a.php (修订版 12127) @@ -1,2 +1,2 @@ -idadddadad(===>代表12126版本) +ida..........................dddadad(====>12127版本) [root@host150 svntest]# (4) 显示log #显示最后1次修改的LOG $ svn log --revision HEAD #显示所有修改的LOG [root@host150 app]# svn log --revision BASE:HEAD (5)更新版本 #更新到前面一个版本 [root@host150 controllers]# svn update --revision PREV clientrates_controller.php #更新到1.10的版本 [root@host150 cdrreports]# svn update --revision {2011-01-10} 将版本库中的文件test.php还原到版本200 svn update -r 200 test.php (6)(显示文件和子目录状态) [root@host150 svntest]# svn st -v 12125 12125 wangxj . 12125 10884 wangxj trunk 12125 10884 wangxj branches 12125 12124 wangxj test.php 12126 12126 wangxj a.php 12125 12124 wangxj b.php 12125 10884 wangxj tags 第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。 【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】 (7)添加文件 #svn add *.php(添加当前目录下所有的php文件) #注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。 (8)删除文件 [root@host150 models]# svn del jurisdiction_prefix.php [root@host150 models]# svn ci -m " " svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file” (2) svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file” (9)查看文件详细信息 [root@host150 svntest]# svn info a.php 路径:a.php 文件名:a.php 地址(URL):svn://192.168.1.125/newipcentrex/svntest/a.php Repository Root: svn://192.168.1.125/newipcentrex 档案库 UUID:c004b24f-da91-4a55-83d2-5bfd46da7693 修订版:12125 节点种类:文件 调度:正常 最后修改的作者:wangxj 最后修改的修订版:12125 最后修改的时间: 2011-02-12 16:02:35 +0800 (六, 12 2月 2011) 文本最后更新: 2011-02-12 16:19:31 +0800 (六, 12 2月 2011) 校验和:32247a4a24368c64ea5d56cabcb5c8d7 (10) 加锁/解锁 [root@host150 svntest]# svn lock -m " " a.php “a.php”被用户“wangxj”锁定。 [root@host150 svntest]# [root@host150 svntest]# [root@host150 svntest]# svn unlock a.php “a.php”被解除锁定。 [root@host150 svntest]# 6.合并冲突 svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)