4

如何解决svn:ignore财产冲突?

我使用以下命令忽略了本地存储库中的一些文件:

svn propedit svn:ignore .

当我跑步svn update时,我看到了以下冲突:

Conflict for property 'svn:ignore' discovered on ''

当我运行时svn diff,我看到以下差异:

Property changes on: .
___________________________________________________________________
Modified: svn:ignore
   -

   + cache/*
log/*

我该如何解决这个冲突?我想删除我对svn ignore.

4

2 回答 2

6

文件属性就像 Subversion 中文件的内容一样。它们也需要修改提交,并且可能会发生冲突。

做一个svn status,你会看到更多的冲突描述。有三种可能:

  • 传入编辑和本地编辑:您和以前的版本都编辑了此属性。应该可以进行合并。
  • 传入添加和本地添加:您添加了此属性,其他人也添加了。
  • 传入的删除和本地编辑或添加:版本大战——此属性在存储库的先前版本中,并且该人删除了此属性。您已对其进行了编辑。

有两种方法可以解决这个问题:

  • 对此属性进行还原。如果您添加了它,请对其进行操作svn propdel --force。因为这是一个目录,所以不要执行 a svn revert .,因为您将还原此目录中的所有更改。你不想那样做。只需还原此属性。您也许可以通过执行svn revert --depth=empty. 我从来没有尝试过。
  • 做一个svn resolved .。这会将冲突标记.为已解决。它不一定已解决,但您至少可以将其标记为此类并稍后修复。

如果您还原了属性更改并以这种方式解决了冲突,请执行svn update并重新编辑该属性。如果您svn resolved .对冲突执行了 an ,则通过执行 a 来查看先前修订的值svn propget -rPREV svn:ignore .。通过这种方式,您可以查看之前的修订版将其设置为什么,并将其考虑在内。这可能是一个简单的订购问题。例如,之前的修订版将其设置为:

target
build.properties

您将其设置为:

build.properties
target

最后,两者的价值相同。或者,可能是以前的修订版中有一个您没有的文件名目录。例如,它被设置为:

*.log

并将其设置为:

build.properties
target

您可能希望将其设置为:

build.properties
target
*.log

首先解决冲突,进行更新,然后将其设置为您需要的值。

于 2013-06-07T18:21:08.423 回答
1

svn:ignore是包含您设置为忽略的文件的文件夹的属性。因此,正是该文件夹表现出冲突。

计划 A 最简单的解决方案是删除包含文件夹,然后执行 SVN 更新以将其恢复为存储库中存在的状态。

计划 B 如果出于某种原因(例如,如果您有一些修改过的文件要保留),您不能选择删除文件夹,则重命名文件夹(例如,改为yourfolder-TEMP)并再次进行 SVN 更新。这yourfolder在 svn 属性中没有冲突地重新创建。现在将您需要的文件复制回来yourfolder-TEMPyourfolder然后在您满意保留所需内容后删除旧文件夹。

于 2013-06-07T16:33:33.527 回答