【问题标题】:mercurial: mix named branches and bookmarksmercurial:混合命名分支和书签
【发布时间】:2012-01-02 09:51:44
【问题描述】:

我一直使用 mercurial 的命名分支功能来处理分支,我对此非常满意。我已经阅读了 mercurial 的书签功能,虽然还没有使用过。我可以看到使用书签的唯一原因是如果有人更喜欢 git 风格的分支模型,我不喜欢。

那么,有没有为同一个存储库混合命名分支和书签的用例? 它甚至有意义吗?

【问题讨论】:

    标签: version-control mercurial branch


    【解决方案1】:

    this thread 中详细介绍了混合使用的一种可能方案

    当我们看到书签改进(在远程 repo 上推/拉书签和跟踪默认激活的当前行为)时,我们决定使用:

    • 仅用于主要版本的命名分支(少于 10 个长期分支)和
    • 为每个功能策略的一个分支使用书签。

    但是,对书签的一些限制使得同时使用书签变得笨拙/错误。
    在最新的 1.9+/2.x+ Mercurial 版本中情况可能会更好,所以测试是有序的。
    1.9 version 确实修复了很多关于书签的错误/限制。

    【讨论】:

      【解决方案2】:

      确实有道理。如果您考虑一下 - 命名分支本质上是在每个子提交中复制自己的标签。所以你可以在同一个命名分支下得到两个不同的头(提示):

      @  changeset:   3:fe8f1a13eb95
      |  branch:      b1
      |  tag:         tip
      |  parent:      1:33674427026e
      |  user:        ...
      |  date:        ...
      |  summary:     Third commit on branch b1
      |
      | o  changeset:   2:0ad872ebd9b9
      |/   branch:      b1
      |    user:        ...
      |    date:        ...
      |    summary:     Second commit on branch b1
      |
      o  changeset:   1:33674427026e
      |  branch:      b1
      |  user:        ...
      |  date:        ...
      |  summary:     First commit on branch b1
      |
      o  changeset:   0:18c33e4b94ed
         user:        ...
         date:        ...
         summary:     First commit
      

      这似乎有点违反直觉。另一方面,书签就像从父提交移动到子提交的标签。他们保证只有一个头。如果您尝试使用名为 b1 的 书签 重现上述提交图,则变更集 #3 将不会获得书签名称——它将是匿名的:

      @  changeset:   3:c4dd0b7f9844
      |  tag:         tip
      |  parent:      1:0c00681b3cfa
      |  user:        ...
      |  date:        ...
      |  summary:     Third commit (on bookmark b1 or...?)
      |
      | o  changeset:   2:f4e700efd4a6
      |/   bookmark:    b1
      |    user:        ...
      |    date:        ...
      |    summary:     Second commit on bookmark b1
      |
      o  changeset:   1:0c00681b3cfa
      |  user:        ...
      |  date:        ...
      |  summary:     First commit on bookmark b1
      |
      o  changeset:   0:f2cc94a68cf0
         user:        ...
         date:        ...
         summary:     First commit
      

      在我看来,这更符合一个分支应该是什么——一个单一的开发线。

      现在,回答您关于用例的问题:鉴于上述情况,您可能希望在已经使用命名分支的存储库中使用书签......当您在命名分支中有多个头并想要命名时那些

      【讨论】:

        猜你喜欢
        • 2010-12-19
        • 2011-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-22
        • 2010-12-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多