svn命令使用常见问题
1.如何添加文件 ?
svn add filename
svn ci -m "add file"
2. svn ci 出现冲突
经常多人开发时难免多个人修改同一个文件导致冲突发送,或者在merge的时候也会出现,出现冲突时,svn up 出现
elect: (p) postpone, (df) diff-full, (e) edit, //(p) 推迟,(df) 显示全部差异,(e) 编辑,
(mc) mine-conflict, (tc) theirs-conflict, //(mc) 我的版本, (tc) 他人的版本,
(s) show all options: //(s) 显示全部选项:
一般选择p,会将冲突文件下载到你本地来处理,可以在本地看到test.txt(文件合并版本) test.txt.mine(我修改的版本) test.txt.r21(其他人修改前的版本) test.txt.r22(其他人修改的版本)这么几个文件,叫上其他人一起来修改test.txt合并版本,修改完成了删除删 除<<<<<<< .mine、=======和>>>>>>> .r22。再输入:
svn resolve --accept working test.txt (该命令会删除test.txt.mine test.txt.r21 test.txt.r22)
svn ci -m ’some comment’ a.txt
3. 版本合并,正常情况一个项目可能会有多个分支,当分支需要合并的时候该如何做?
eg:假设分支1要合并到主干,本地切换到分支1的文件目录,svn merge other_svn_url,你也可以指定要合并的分支版本svn merge other_svn_url -r22:HEAD ,出现冲突如2步骤解决。
最后记得,svn ci -m "xxx"
4. svn delete不小心删错了文件如何恢复
1) 第一种情况的svn delete filename了但是还没有commit(svn ci),那么可以使用 svn revert filename
2)如果已经commit了,那么可以通过创建新的分支来恢复,首先svn log --verbose --stop-on-copy svn_repo_url查看版本记录,使用svn cp source_url@version des_url -m "xx"创建新的分支,eg:假设当前r8是包含没有删除文件的版本号,
svn cp http://www.svnrepo.com/project/branche1/@8 http://www.svnrepo.com/project/branche2 -m "xxx"(branche1为之前svn url地址目录,别少了/,不然在新的分支文件结构是branche2/branche1,@8是版本号),然后在svn co http://www.svnrepo.com/project/branche2,就可以找回删除的文件
3)如果使用工具的请转这里
5. svn diff 详解
$ svn diff -r 2:3 rules.txt
(1)Index: rules.txt
(2)===================================================================
(3)--- rules.txt (revision 2)
(4)+++ rules.txt (revision 3)
(5)@@ -1,4 +1,4 @@
(6)Be kind to others
(7)-Freedom = Chocolate Ice Cream
(8)+Freedom = Responsibility
(9)Everything in moderation
(10)Chew with your mouth open
第一行,显示文件
第二行,分隔符
第三行,老版本用“-”表示
第四行,新版本用“+”表示
第五行,老版本显示1~4行,新版本显示1~4行
第六行,两个版本都有
第七行,只有老版本有
第八行,只有新版本有
第九行,两个版本都有
第十行,两个版本都有
==================
$ svn diff --revision PREV:COMMITTED foo.c
# shows the last change committed to foo.c
$ svn log --revision HEAD
# shows log message for the latest repository commit
$ svn diff --revision HEAD
# compares your working file (with local mods) to the latest version
# in the repository.
$ svn diff --revision BASE:HEAD foo.c
# compares your “pristine” foo.c (no local mods) with the
# latest version in the repository
$ svn log --revision BASE:HEAD
# shows all commit logs since you last updated
$ svn update --revision PREV foo.c
# rewinds the last change on foo.c.
# (foo.c's working revision is decreased.)