【问题标题】:Weird output in tortoisehg log windowtortoisehg 日志窗口中的奇怪输出
【发布时间】:2008-11-20 14:03:59
【问题描述】:

我有两个分支,主分支(黑色)和功能分支(黄色)。

如您所见,由于功能分支是分叉的,因此它会保持最新状态,从 main 获取更改:

alt text http://azkotoki.org/images/stackoverflow/tgh-reintegrate1.gif

当我将功能分支重新集成回主分支时,日志窗口会显示这个丑陋的图表:

alt text http://azkotoki.org/images/stackoverflow/tgh-reintegrate2.gif

它将每个合并点显示为与功能分支合并的新分支。如果我有几个功能分支,这将变得几乎不可能阅读。我也试过hg view,结果更奇怪。

不管上面显示的图片,最终的合并结果都很好,但是重新集成的分支的图表让我很烦。

我是否因为太多次合并到功能分支而做错了什么?或者我对 tortoisehg 的日志窗口期望过高:)?

提前致谢

【问题讨论】:

    标签: mercurial merge tortoisehg


    【解决方案1】:

    图表看起来像这样,因为修订是按修订号排序的。主存储库的修订顺序和编号如下:

    0 Imported initial repo.
    1 Trivial change to also echo b.
    2 Added another echo for c.
    3 Echo for d.
    4 Echo for e.
    

    这反映了将变更集添加到存储库的顺序。功能分支存储库有这样的顺序:

    0 Imported initial repo.
    1 Trivial change to also echo b.
    3 Added another echo for c.
    4 Automatic merge...
    5 Echo for d.
    6 Automatic merge...
    7 Echo for e.
    8 Automatic merge...
    

    再次,一切都井井有条。但是,当您将功能分支拉入主存储库时,只会添加缺少的变更集。因此 main 中的结果是:

    0 Imported initial repo.
    1 Trivial change to also echo b.
    2 Added another echo for c.
    3 Echo for d.
    4 Echo for e.
    5 Refactored echos to print.
    6 Automatic merge...
    7 Automatic merge...
    8 Automatic merge...
    

    图表反映了这一点。

    正如您所注意到的,存储库很好——这只是变更集如何在磁盘上排序的工件。如果需要,您可以将存储库与漂亮的图形交换为具有丑陋图形的存储库,因为它们现在包含相同的变更集。只要记住从.hg/hgrc 移动任何重要设置(从带有丑陋图形的克隆中复制文件)。

    顺便说一句,当我查看我的http://hg.intevation.org/mercurial/crew/(Mercurial 的开发分支)克隆中的图表并将其与https://www.mercurial-scm.org/repo/hg(Mercurial 的主分支)的新克隆中的图表进行比较时,我看到了同样的现象。

    【讨论】:

    • 感谢马丁的回答。顺便说一句,我注意到在绘制图表时,属于合并修订的第二个父级的修订(及其各自的父级)被认为来自外部分支。那是对的吗?这意味着在重新整合分支时,通过推或拉来进行会导致不同的(图表)结果。
    • 确实如此。起初我也被高估了,因为我期望完全对称。但是 Mercurial 会跟踪每个变更集的两个父节点,并且它们实际上是有序的。当您进行正常的非合并提交时,工作副本父级变为 parent1 并且 parent2 设置为空修订。因此,根据您的工作副本在进行合并时反映的磁头,您将获得不同的图表。有点贵,但在我的经验中不会引起任何问题。
    【解决方案2】:

    获得“更好”图形的一种方法是使用具有紧凑图形模式的 2.0 之前的 TortoiseHg。在这种模式下,您的第二个存储库将只有两列行,类似于您的第一个屏幕截图中的内容。

    很遗憾,此功能尚未从 GTK 移植到 Qt,因此 TortoiseHg 的当前版本 (2.1.2) 中不存在此功能。

    【讨论】:

      【解决方案3】:

      当您仔细观察时,您会发现这两个图表(几乎)相同,但呈现方式不同。那看起来像是 3 个不同的分支,实际上是一个分支,只是呈现方式略有不同。

      我写“几乎”是因为修订号已重新排序。而且这真的很奇怪……

      【讨论】:

      • 第一张图片属于分支仓库,第二张图片属于原始但是将分支仓库的更改合并回来。两张图片不应该看起来一样吗?
      • 它解释了很多。不同存储库中的修订数量不必相同。显然,主分支首先被合并,然后第二个分支被合并,最后 - 存储库的尖端。版本号不同,但还是有相同的两个分支。
      猜你喜欢
      • 2019-05-18
      • 1970-01-01
      • 2017-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多