2012-08-04 56 views
1

我有两个PC和SVN回购。我已经使用我的笔记本向svn添加了文件,并在另一台上说了svn。该文件是新的,它不存在我的第二个PC上,但我得到:SVN与硬盘上没有文件冲突

@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

也许这是两个删除的冲突? (df)显示什么? – 2012-08-04 11:28:29

+0

这是你的web/web/browser.xslt.xml错误,但是在web/web/WEB-INF/xslt/browser.xslt.xml中出现冲突吗?冲突的路径中有'WEB-INF','ls'-路径不... – eckes 2012-08-04 12:19:22

+0

你是对的,eckes,但我仍然不确定文件是否在那里。如果我再次遇到这个问题,我会更新这个问题。 – 2012-08-04 14:07:04

回答

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。 A svn status应该显示该文件是原始文件。
  6. 现在,您可以在文件上执行svn update。您现在将拥有存储库中的最新副本。

一旦你清除了一切,你可以决定如何继续。即使这是我改变和改变某人所做改变之间的真实冲突,我仍然倾向于这样做。我可以使用vimdiff来查看差异和更新内容,比在更新过程中更容易。