有没有办法在mercurial中重新排序修订版?

时间:2013-07-29 19:41:59

标签: mercurial

我想按年龄“重新排序”存储库中的提交(完全出于可视化目的,我根本不想在功能上改变任何东西)。 “Rev”号仅用于方便,目前取决于提交何时被推入存储库。这意味着我们从一个半小时前“提前”获得了比一个月提交的提交,并且更容易显示什么时候完成一个简单的度假胜地,根本不改变结构。这将使存储库保持完全相同,但是使存储库显示每次提交后立即推送每个更改集。是否有办法执行此操作?

3 个答案:

答案 0 :(得分:2)

您可以使用revsets来帮助解决这个问题!特别是sort函数。

这将返回tip的最后10个变更集(按本地变更集ID),并按日期排序返回:

hg log -r "sort(last(:tip, 10), date)"

答案 1 :(得分:1)

有人提出了这个问题并提醒了我。我最后写了下面的批处理脚本(抱歉,我在windows中,应该很容易翻译成bash)

REM clone_sorted.bat
REM usage: clone_sorted source destination
@echo off
echo "Cloning from %1 to %2"
hg clone -r 0 %1 %2
cd %2
@echo on
for /F %%h in ('hg log -R %1 -r "sort(1:tip, date)" --template "{rev}\n"') DO hg pull %1 -r %%h

答案 2 :(得分:0)

特别使用hg help convert查看hg convert --datesort SOURCE DEST。但要注意的是,与使用其他排序方法相比,生成的存储库可能会很大。

请注意,您通常不应在使用hgsubversion或hg-git创建的存储库上使用hg convert,因为您将丢失维护指向原始存储库的链接所需的额外元数据。有可能重建元数据(我还没试过)。

相关问题