SVN冲突,硬盘上没有文件

时间:2012-08-04 10:49:06

标签: linux svn

我有两台电脑和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:

这是什么意思?

1 个答案:

答案 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属性中的冲突。

最简单的方法就是摆脱问题并接受存储库中现在的任何内容:

  1. 对文件执行svn resolved。这将使其脱离冲突状态
  2. 现在对文件执行svn status。这将告诉你Subversion认为你做了什么。例如,您是删除此文件还是添加此文件。
  3. 如果您看到该文件是已修改,请对其执行差异操作,以便您可以查看已修改的内容。请记住,差异也可以是属性值!
  4. 为安全起见,如果工作副本中存在该文件,请将该文件复制到其他位置。
  5. 对其进行svn revertsvn status应该显示该文件是原始的。
  6. 现在,您可以对文件执行svn update。您现在将拥有存储库中的最新副本。
  7. 一旦清除了所有内容,您就可以决定如何继续。即使这是我所做出的改变与某些人所做出的改变之间的真正冲突,我仍然喜欢这样做。我可以使用vimdiff来查看差异是什么以及更新的内容比在更新过程中更容易。