【问题标题】:How to avoid svn:mergeinfos on sub-folders?如何避免子文件夹上的 svn:mergeinfos?
【发布时间】:2010-12-31 08:57:38
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: svn tortoisesvn intellij-idea ankhsvn mergeinfo


    【解决方案1】:

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

    【讨论】:

    • 能分享一下钩子脚本吗?
    • @WinstonSmith - 我不再在同一家公司工作,所以我无法使用钩子。如果它对您真的很重要,我可以尝试四处询问,但实现起来应该非常简单(如果不是,请在这里问一个关于如何做的问题)。
    【解决方案2】:

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

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

    不时清理它们。这样做时要小心,因为它会破坏您已经完成的任何部分合并记录,所以只有在您真的不进行部分合并时才应该这样做。提问者没有,我们在我们的环境中也没有。

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

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

    【讨论】:

    • 这不会破坏现有的合并信息,还是那里的合并信息是多余的?
    • 在我们的例子中,mergeinfo 是多余的。但你是对的,它会破坏你所做的 ant 部分合并信息。
    • 更新了答案以提及此问题,并描述问题以及何时解决。
    【解决方案3】:

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

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

    【讨论】:

    • 即使没有对子文件夹进行任何合并,我也得到了这个属性。
    • 对于投反对票的人,请提供原因?如果您只想将合并信息放在主级别,则不要在子级别进行合并。
    • 我没有对你投反对票,但是虽然你说的是正确的,但问题是副本也生成了这些条目。这已在 1.5.5 中修复(* 不要为 wc-wc 移动或复制创建合并信息(r34184,-585))
    【解决方案4】:

    我无法提供这样的列表。 我建议你使用 svn hook 记录导致文件夹属性更改的用户操作 并发出警告或拒绝该提交, 根据您的工作流程采取适当的措施。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-15
      • 2023-03-07
      • 2010-10-24
      相关资源
      最近更新 更多