转自:http://blog.csdn.net/why3query/article/details/14209569
1. 本地文件过期
如果版本库中的某一文件已经改变了(另一个working copy 执行提交)。但是修改的部分(如只修改第一行)
和我本地的代码(如只是修改了第二行)不一致但是并不冲突。不过执行提交会报过期错误:
- E:\work\sesame>svn commit -m "1 line welcome to hello"
-
- Sending huanying.txt
-
- svn: E155011: Commit failed (details follow):
-
- svn: E155011: File 'E:\work\sesame\huanying.txt' is out of date
-
- svn: E160028: File '/sesame/trunk/huanying.txt' is out of date
2、所以使用更新操作(因为不冲突,所以可以照常更新)
- E:\work\sesame>svn update
-
- Updating '.':
-
- G huanying.txt
-
- Updated to revision 7.
其中
A添加
D删除
U更新
C冲突
G合并
2. 冲突
1、两个客户端有相同的代码库中的某一个代码文件。
一个客户端修改一行代码, 首先提交代码,版本库更新了。另一个客户端不修改这行代码也提交,即代码出现冲突。
svn将拒绝执行这样的提交。
理由:版本库中已经有这个版本的副本了。当然重复提交是不被允许的。(注:修改提交的注释再提交,也不行。)
- e:\work\sesame>svn commit -m "I am sesame a" huanying.txt
-
- Sending huanying.txt
- svn: E155011: Commit failed (details follow):
- svn: E155011: File 'E:\work\sesame\huanying.txt' is out of dat
- svn: E160028: File '/sesame/trunk/huanying.txt' is out of date
然后使用更新,他会报出冲突解决方案。
- e:\work\sesame>svn update
- Updating '.':
- Conflict discovered in 'E:/work/sesame/huanying.txt'.
- Select: (p) postpone, (df) diff-full, (e) edit,
- (mc) mine-conflict, (tc) theirs-conflict,
- (s) show all options: tc
- G huanying.txt
- Updated to revision 11.
其中p 表示延后解决,这样会产生4个文件(huanying.txt huanying.txt.mine huanying.txt.r10 huanying.txt.r11)
df 控制台显示冲突信息,和使用diff命令一样
e 直接用系统默认的Editor修改冲突
mc 使用自己的文件,然后使用 svn resolved huangying.txt 告诉仓库我已经解决冲突,可以随后提交
tc 使用仓库中文件,将本地文件同步更新
注意:此时本地工作拷贝虽然版本和仓库的版本同步,但是修改的文件内容却可以不一致,因为本地文件经过人手工修改。最后执行了提交语句,这样就上传到了代码库中,并将版本号增加一。
其它选项参照:http://ariejan.net/2007/07/04/how-to-resolve-subversion-conflicts/
2、svn log -r4 welcome.txt
3、手动修改了冲突之后,
告知svn我们已经解决了冲突
4、如果修改了本地的文件,同时又要删除本地的文件,可以进行还原。
- E:\work\sanother\trunk>svn del welcome.txt
-
- svn: E195006: Use --force to override this restriction (local modifications may be lost)
- svn: E195006: 'E:\work\sanother\trunk\welcome.txt' has local modifications -- commit or revert them first
-
- E:\work\sanother\trunk>svn revert welcome.txt
-
- Reverted 'welcome.txt'