SVN-文件过期、冲突解决方案

来源:互联网 发布:软件企业增值税 编辑:程序博客网 时间:2024/05/17 23:27

转自:http://blog.csdn.net/why3query/article/details/14209569


1. 本地文件过期
如果版本库中的某一文件已经改变了(另一个working copy 执行提交)。但是修改的部分(如只修改第一行)

和我本地的代码(如只是修改了第二行)不一致但是并不冲突。不过执行提交会报过期错误:

[plain] view plaincopy
  1. E:\work\sesame>svn commit -m "1 line welcome to hello"  
  2.   
  3.      Sending        huanying.txt   
  4.   
  5.      svn: E155011: Commit failed (details follow):   
  6.   
  7.      svn: E155011: File 'E:\work\sesame\huanying.txt' is out of date   
  8.   
  9.      svn: E160028: File '/sesame/trunk/huanying.txt' is out of date  

2、所以使用更新操作(因为不冲突,所以可以照常更新)
[plain] view plaincopy
  1. E:\work\sesame>svn update   
  2.   
  3.     Updating '.':   
  4.   
  5.     G    huanying.txt   
  6.   
  7.     Updated to revision 7.   

其中

A添加
D删除
U更新
C冲突
G合并


2. 冲突
1、两个客户端有相同的代码库中的某一个代码文件。
一个客户端修改一行代码, 首先提交代码,版本库更新了。另一个客户端不修改这行代码也提交,即代码出现冲突。
svn将拒绝执行这样的提交。
    理由:版本库中已经有这个版本的副本了。当然重复提交是不被允许的。(注:修改提交的注释再提交,也不行。)
[plain] view plaincopy
  1. e:\work\sesame>svn commit -m "I am sesame a" huanying.txt  
  2.   
  3.   Sending        huanying.txt  
  4.   svn: E155011: Commit failed (details follow):  
  5.   svn: E155011: File 'E:\work\sesame\huanying.txt' is out of dat  
  6.   svn: E160028: File '/sesame/trunk/huanying.txt' is out of date  
然后使用更新,他会报出冲突解决方案。
[plain] view plaincopy
  1. e:\work\sesame>svn update  
  2. Updating '.':  
  3. Conflict discovered in 'E:/work/sesame/huanying.txt'.  
  4. Select: (p) postpone, (df) diff-full, (e) edit,  
  5.         (mc) mine-conflict, (tc) theirs-conflict,  
  6.         (s) show all options: tc  
  7. G    huanying.txt  
  8. 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我们已经解决了冲突
[plain] view plaincopy
  1. svn resolved welcome.txt  
   然后提交 
[plain] view plaincopy
  1. svn commit -m "comment"  
4、如果修改了本地的文件,同时又要删除本地的文件,可以进行还原。
[plain] view plaincopy
  1. E:\work\sanother\trunk>svn del welcome.txt  
  2.   
  3.     svn: E195006: Use --force to override this restriction (local modifications may be lost)  
  4.     svn: E195006: 'E:\work\sanother\trunk\welcome.txt' has local modifications -- commit or revert them first   
  5.   
  6. E:\work\sanother\trunk>svn revert welcome.txt  
  7.   
  8.     Reverted 'welcome.txt' 
0 0