是否可以手动更改/重新排序修订号(提供的拓扑保持不变)?

Ben*_*oit 7 mercurial tortoisehg

在Mercurial中,修订号是特定于本地克隆的,它们作为一种工具提供,以比用户更友好的方式指向特定的变更集.

但是,当显示时间线图时,TortoiseHG将按修订号排序.如果某个人不经常提交提交,你将立即使用相邻的修订版号获得所有提交,并且它会弄乱图表的整个点.

在此输入图像描述

这个图表将更具洞察力:有两个开发线,两个作者,一个合并另一个的工作:

在此输入图像描述

因此,是否可以手动重新排序修订号(只要变更集的拓扑顺序仍然与新数字兼容?

谢谢.

ale*_*xis 5

我有一个类似的用例:我来到这个问题,因为我一次从不同的分支推送了一堆变更集,并且它们没有按日期排序.我现在与低编号的父母合并,实际上并不是那么古老; 滚动日志以查看它们是一种痛苦.我按照@ Ry4an的答案中提出的方法 - 如果你能预测(即计算)你想要的变更集顺序,那真的很简单.

如果您的工作流仅合并分支头,则可以通过按日期对revsets进行排序来获得所需的修订顺序.您可以使用以下命令执行此操作:

hg log -r 'sort(0:tip, date)' --template '{rev}\n'
Run Code Online (Sandbox Code Playgroud)

然后,您可以克隆存储库并使用您喜欢的脚本语言中的循环按时间顺序逐个提取修订.我不是从头开始创建存储库,而是这样做:

hg clone -r 0 messy-repo sorted-repo
cd sorted-repo
for REV in `hg log -R ../messy-repo -r 'sort(1:tip, date)' --template '{rev}\n'`
do 
    hg pull ../messy-repo -r $REV
done
Run Code Online (Sandbox Code Playgroud)

我应该注意(在其他人做之前:-))这将增加存储的存储大小,因为计算增量的方式.我不介意.


ton*_*nfa 1

可以对您的存储库进行重新排序(就是这样contrib/shrink-revlog.py做的)。但在这种情况下,它似乎太过分和复杂了。

由于这主要是一个显示问题,因此您应该要求 THG 实现您想要的重新排序。诚然,我不知道您在上图中发现了什么混乱。

  • 它已经作为 THG 问题跟踪器的提案被记录下来了 [此处](https://bitbucket.org/tortoisehg/thg/issue/580/),但它是在 2011 年 4 月提出的,所以我猜 THG 团队不这样做也不把它作为一个高优先级。 (2认同)