9

我们尝试仅在根分支文件夹中保留 'svn:mergeinfo' 属性。但是,我们不断看到它潜入子文件夹。我们已经能够确定一些可能的原因:

  1. 在 repo-browser 中移动文件夹
  2. 在 IntelliJ 中移动和/或重命名包
  3. 使用旧的 svn 客户端

谁能提供一个我们不应该做的事情的清单,以避免意外创建这些属性?

我们使用的工具是 IntelliJ 8(很快 9)、Ankh、TortoiseSVN 和 SlikSvn。

4

4 回答 4

11

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

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

时不时地清理它们。执行此操作时要小心,因为它会破坏您所做的部分合并的任何记录因此只有在您确实不进行部分合并时才应该这样做。提问者没有,我们在我们的环境中也没有。

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

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

于 2009-12-31T10:32:37.027 回答
1

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

于 2010-11-24T12:36:40.543 回答
0

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

于 2009-12-31T09:47:59.647 回答
0

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

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

于 2010-01-01T02:05:47.467 回答