1

我有两台电脑和 svn repo。我已经使用我的笔记本将文件添加到 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:

这是什么意思?

4

1 回答 1

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 revert。Asvn status应该显示文件是原始的。
  6. 现在,您可以svn update对文件执行操作。您现在将获得存储库中的最新副本。

一旦你把一切都清理干净,你可以决定如何继续。即使这是我所做的更改与某人所做的更改之间的真正冲突,我仍然更喜欢这样做。我可以用它vimdiff来查看差异是什么以及更新什么比在更新过程中更容易。

于 2012-10-28T03:11:50.297 回答