如何解决与SVN属性的合并冲突?

时间:2008-09-30 12:45:50

标签: svn

这一直困扰着我很久 - 如何在目录上设置的SVN属性中正确解决合并冲突?比如说有两个开发人员在一个项目上工作,在某个目录上设置了svn:ignore。如果两个开发人员都对此属性进行了更改,则当第二个更新时,他们将看到合并冲突。

与文件合并冲突不同,在名为“dir_conflicts.prej”的目录中生成单个文件,第二个开发人员必须阅读并手动更正。通常,我最终要做的是将我的所有更改还原到本地副本,然后使用dir_conflicts.prej中的信息手动重新设置这些属性。但是,当处理svn:externals属性中的大量URL列表时,这很麻烦,因为我们的许多项目都在使用。

必须有更好的方法来做到这一点 - 有人知道吗?

7 个答案:

答案 0 :(得分:11)

经过一些额外的研究后,只需快速更新 - 可以轻松合并SVN属性。我最初描述的方法(恢复,合并.prej文件中的数据,propset,重新提交)似乎是处理此类问题的最佳方法。

答案 1 :(得分:3)

与此同时,这可以在Eclipse + Subclipse(Indigo)中使用函数

  

团队 - >编辑属性冲突

(刚试过冲突的svn:忽略属性)

此功能打开一个对话框,显示属性版本(本地和存储库),您可以使用Team-> Mark Resolved复制和粘贴然后解决冲突。

答案 2 :(得分:3)

我遇到了同样的问题。

  

我尝试使用 Team->编辑属性冲突,但是我的STS被绞死而没有回应因此我被迫关闭。

可以用 TortoiseSVN

来解决
  

这是我解决的方法

  • 选择dir_conflicts.prej所在的文件夹
  • 右键单击 TortoiseSVN - >解决...
  • 然后会要求解决财产冲突
  • 解决并保存

答案 3 :(得分:1)

我希望我能提供更有希望的解决方案,但根据我的经验,目前无法使用TortoiseSVN合并svn属性。请参阅 http://svn.haxx.se/tsvn/archive-2008-09/0212.shtml

答案 4 :(得分:1)

你的意思是提交/更新或分支合并上的合并冲突?

SVN Book非常明确svn:ignore属性:

  

Subversion不会假设每一个   工作副本中的文件或子目录   目录适用于版本   控制。资源必须明确   置于Subversion的管理之下   使用svn add或svn import   命令。

...

  

要强制该存储库的每个用户将这些资源的模式添加到其运行时配置区域,这不仅仅是一种负担,而且可能会与用户已检出的其他工作副本的配置需求冲突

答案 5 :(得分:0)

为了清楚起见,SVN似乎使用dir_conflicts.prej文件来推导出目录存在冲突的事实。如果您打算手动解决冲突,只需删除dir_conflicts.prej文件,然后根据需要手动设置svn属性。 (当然要确保在删除之前从.prej文件中获取所需内容!)

答案 6 :(得分:0)

我有类似的冲突。我在文本编辑器中打开dir_conflicts.prej,发现svn ignore list已被更改。幸运的是,列表的内容是相同的,只是订单改变了。因此,在TortoiseSVN 1.9.3中,我只需右键单击文件夹,然后TortoiseSVN -> Resolve...。冲突是固定的。