我们尝试仅将“svn:mergeinfo”属性保留在根分支文件夹上。然而,我们不断看到它渗入子文件夹中。我们已经能够确定一些可能的原因:

  1. 在存储库浏览器中移动文件夹
  2. 在 IntelliJ 中移动和/或重命名包
  3. 使用旧的 svn 客户端

任何人都可以提供我们不应该做的事情的列表,以避免意外创建这些属性吗?

我们使用的工具是 IntelliJ 8(即将推出 9)、Ankh、TortoiseSVN 和 SlikSvn。

有帮助吗?

解决方案 2

我们编写了一个 SVN 挂钩/触发器,它只是拒绝对非主干上的 svn:properties 的提交。我们从未回头。

其他提示

不幸的是,旧的 svn 客户端就是这么做的,任何基于这些旧版本 svn 的工具也都被破坏了。解决此问题的唯一方法是在提交之前删除创建的 svn:mergeinfo 条目。由于大多数人不知道它们已被创建,因此强制执行这一点的唯一真正方法是预提交挂钩,或者只是简单地执行以下操作:

svn propdel --recursive svn:mergeinfo $ROOT/*

时不时地清理它们。执行此操作时要小心,因为它会破坏您所创建的部分合并的任何记录 完成,所以你真的应该只在你确实不进行部分合并的情况下才这样做。提问者不知道,我们所处的环境也不知道。

该问题已在较新的 svn 客户端中得到解决,因此问题应该会慢慢消失,但这可能需要一些时间才能替换工作流程中的所有工具。

根据此问题的另一个答案,快速解释导致问题的原因。当您执行工作副本移动或删除 1.5.5 之前的 svn 客户端时,会创建一个虚假的 svn:mergeinfo 条目。这是 svn 1.5.5 已解决.

我无法提供这样的清单。我建议您使用SVN挂钩,该挂钩将记录导致文件夹属性更改并发出警告或拒绝该提交的用户操作,无论根据您的工作流程是否适用。

对子文件夹或单个文件执行合并会导致这种情况,并且它 应该 导致它,因为它必须记录合并信息。

最好的方法是在主级别执行合并,并在需要时有选择地应用它,恢复您不想合并的更改,然后提交。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top