我们尝试仅将'svn:mergeinfo'属性保留在根分支文件夹中。但是,我们一直看到它爬进子文件夹。我们已经找到了一些可能的原因:
任何人都可以提供我们不应该做的事情列表,以避免意外创建这些属性吗?
我们使用的工具是IntelliJ 8(即将推出9款),Ankh,TortoiseSVN和SlikSvn。
答案 0 :(得分:11)
不幸的是,旧的svn客户端就是这样做的,任何基于这些旧版本的svn的工具也都会被破坏。解决此问题的唯一方法是在提交之前删除创建的svn:mergeinfo条目。由于大多数人都不知道它们是被创建的,因此唯一真正的强制执行方式是预先提交挂钩,或者只是简单地执行:
svn propdel --recursive svn:mergeinfo $ROOT/*
不时地清理它们。这样做时要小心,因为它会破坏你已经完成的部分合并的任何记录,所以如果你真的不做部分合并,你应该真的这样做。提问者不会,也不会在我们的环境中。
问题在较新的svn客户端中得到修复,因此问题应该慢慢消失,但在更换工作流程中的所有工具之前可能需要一些时间。
根据对此问题的另一个答案,快速解释导致问题的原因。当您执行工作副本移动或删除早于1.5.5的svn客户端时,会创建一个虚假的svn:mergeinfo条目。这是resolved in svn 1.5.5。
答案 1 :(得分:1)
我们写了一个SVN钩子/触发器,它简单地拒绝了对非trunk的svn:properties的提交。我们从未回头。
答案 2 :(得分:0)
我无法提供这样的清单。 我建议你使用svn hook 记录导致文件夹属性更改的用户操作 并发出警告或拒绝该提交, 根据您的工作流程做任何适当的事情。
答案 3 :(得分:0)
对子文件夹或单个文件执行合并会导致这种情况,并且应该导致它,因为它必须记录合并信息。
最好的方法是在主级别执行合并,并在需要时有选择地应用它,还原您不想合并的更改,然后提交。