我有两台电脑和svn回购。我已经使用我的笔记本将文件添加到svn并在另一个上面说svn了。该文件是新的,它在我的第二台PC上不存在,但我得到:
@konrad:~/svn$ ls web/web/browser.xslt.xml
ls: cannot access web/web/browser.xslt.xml: No such file or directory
@konrad~/svn$ svn up
Conflict discovered in 'web/web/WEB-INF/xslt/browser.xslt.xml'.
Select: (p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options:
这是什么意思?
答案 0 :(得分:0)
您的ls
会显示不同的文件:web/web/browser.xslt.xml
而非web/web/WEB-INF/xslt/browser.xslt.xml
。您确定系统中没有web/web/WEB-INF/xslt/browser.xslt.xml
吗?
我一直遇到这些神秘的冲突而且令人沮丧,因为在你解决这个问题之前你不能做任何事情。我想你可以做一个 diff-full ,然后决定合并什么或如何合并,但我总是觉得很沮丧因为我不能真正花时间思考和解决问题。
终止更新并执行svn status
。这会给你原因。也许您已使用svn delete
删除了该文件,并且此文件有一个传入更新。也许你添加了文件,其他人也这样做了。也许你的驱动器上有一个非颠覆版本的文件,有人在Subversion中添加了它。有时,我发现冲突只不过是svn:mergeinfo
属性中的冲突。
最简单的方法就是摆脱问题并接受存储库中现在的任何内容:
svn resolved
。这将使其脱离冲突状态。svn status
。这将告诉你Subversion认为你做了什么。例如,您是删除此文件还是添加此文件。svn revert
。 svn status
应该显示该文件是原始的。svn update
。您现在将拥有存储库中的最新副本。一旦清除了所有内容,您就可以决定如何继续。即使这是我所做出的改变与某些人所做出的改变之间的真正冲突,我仍然喜欢这样做。我可以使用vimdiff
来查看差异是什么以及更新的内容比在更新过程中更容易。