如何解决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
的本地修改。
答案 0 :(得分:6)
文件属性就像Subversion中文件的内容一样。他们也需要修改提交并且可能存在冲突。
执行svn status
,您会看到更多关于冲突的描述。有三种可能性:
有两种方法可以解决这个问题:
svn propdel --force
。因为这是一个目录,所以不要执行svn revert .
,因为您将还原此目录中的所有更改。你不想那样做。只需还原此属性即可。您可以通过执行svn revert --depth=empty
来仅还原属性。我从未尝试过。svn resolved .
。这将标记.
中的冲突已解决。它不一定已经解决,但您至少可以将其标记为并在以后修复它。如果您还原了属性更改并以此方式解决了冲突,请执行svn update
并重新编辑该属性。如果您对冲突做了svn resolved .
,那么请执行svn propget -rPREV svn:ignore .
来查看以前版本的值。这样,您可以查看先前修订版的设置,并将其考虑在内。这可能是一个简单的订购问题。例如,先前的修订版将其设置为:
target
build.properties
您将其设置为:
build.properties
target
最后,两者都是相同的值。或者,可能是以前的版本在那里有一个你没有的文件名目录。例如,它被设置为:
*.log
并将其设置为:
build.properties
target
您可能希望将其设置为:
build.properties
target
*.log
首先解决冲突,执行更新,然后将其设置为您需要的值。
答案 1 :(得分:1)
svn:ignore
是父文件夹的属性,其中包含您设置为要忽略的文件。因此,该文件夹表现出冲突。
计划A 最简单的解决方案是删除包含文件夹,然后执行SVN更新以恢复存储库中存在的更新。
计划B
如果由于某种原因删除文件夹不是您的选项(例如,如果您要保留一些已修改的文件),则重命名该文件夹(例如,重命名为yourfolder-TEMP
)并再次执行SVN更新。这将重新创建yourfolder
,并且svn属性中没有冲突。现在将您需要的文件从yourfolder-TEMP
复制回yourfolder
,然后在您确信已保留所需内容后删除旧文件夹。