【问题标题】:Mercurial - should .hgtags be merged?Mercurial - .hgtags 应该合并吗?
【发布时间】:2011-07-02 02:31:32
【问题描述】:

如果要将存储库 B 中的更改合并到存储库 A 中,是否应该合并 .hgtags 中的更改?

存储库 B 可能具有不在 A 中的标签 1.01、1.02、1.03。为什么要将它们合并到存储库 A 的 .hgtags 文件中?如果我们合并然后尝试通过查看标签 1.01 来查看存储库 A,我认为这行不通。

【问题讨论】:

  • 我认为你的理解是你应该只标记你正在标记的修订的上游,那么就不可能在一个 .hgtags 文件中合并,该文件引用了合并没有拖动的变更集使用 .hgtags 文件。

标签: mercurial merge .hgtags


【解决方案1】:

简短回答:这确实可以正常工作,您应该合并.hgtags

你为什么要真正合并.hgtags,为什么它有意义?

所以你有

  • 带有变更集 3 (a1)、4 (a2)、5 (a3) 的回购 A
  • 带有变更集 3 (b1)、4 (b2)、5 (b3) 标记 1.01 的回购 B

以上被列为变更集编号(长唯一十六进制 id)标签

所以你将 repo B 合并到 Repo A 并得到一些看起来像的东西。

      9 (a4) merge 
     /   \
    |   8 (b3) tag 1.01
    |    |
    |   7 (b2)
    |    |
    |   6 (b1)
 5 (a3)  |
    |    |
 4 (a2)  |
    |    |
 3 (a1)  |
     \   /
     2 (a0) 

如果您将 repo 更新为标记 1.01,您将得到代码在那个时间点 当它在 Repo B 中时的样子,就像 mercurial 承诺的那样。

您应该合并它们,因为来自 Repo B 的已标记变更集现在是 Repo A 中变更集树的一部分,因此您在 Repo B 中标记的变更集现在在 Repo A 中标记。不合并它们只会导致您丢失您为变更集创建的标签。

【讨论】:

  • 假设我们在变更集 a1 中添加了一个文件。现在在合并的存储库中,如果您将存储库更新到 1.01,是否会包含在 a1 中添加的新文件?我原以为它会包含那个文件..这不是我们想要的..
  • @Marcus 1.01 在合并下方,因为它们位于不同的分支中,因此不会被包含在内。
  • 我指的是在合并之后。。当您合并 A 和 B 时,我们将合并 .hgtags,因此它将包含 1.01 标签。
  • @Marcus,如果您合并并且正在处理合并上方的变更集,那么所有代码​​都在那里。但是,通过在合并下方移动到标记的变更集,您正在将代码更改为与创建标记时的标记相同。这有意义吗
【解决方案2】:

一个有趣的事情要知道(来自mercurial wiki

“有效”标签取自 所有人头上的 .hgtags 文件 分支机构。最接近小费的标签 优先级。

所以当你合并(合并两个头)时,你需要合并.hgtags,否则一些标签会消失。

【讨论】:

    猜你喜欢
    • 2011-07-06
    • 2010-09-19
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    相关资源
    最近更新 更多