4

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

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

替代文字 http://azkotoki.org/images/stackoverflow/tgh-reintegrate1.gif

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

替代文字 http://azkotoki.org/images/stackoverflow/tgh-reintegrate2.gif

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

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

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

提前致谢

4

3 回答 3

4

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

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的主要分支)我看到了同样的现象。

于 2009-05-22T09:21:11.543 回答
1

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

不幸的是,这个特性还没有从 GTK 移植到 Qt,所以它在 TortoiseHg 的当前版本(2.1.2)中不存在。

于 2011-08-25T22:35:49.403 回答
0

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

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

于 2009-03-26T19:16:05.610 回答