2013-07-29 22 views
2

我想按年龄对存储库中的提交进行“重新排序”(完全用于可视化目的,我不想在功能上改变任何内容)。 “修订版”号码只是为了方便,目前取决于提交被推入存储库的时间。这意味着我们已经从一个半小时前的“提前”提交了比一个月的提交更多的提交,并且当一个简单的方法完成并不会改变结构的时候,显示会更容易。这会使存储库完全一样,但是会使存储库显示每个更改集在每次提交后立即被推送。是否有办法执行此操作?有没有办法对mercurial中的修订进行重新排序?

回答

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 
+1

在最后一行中,'%1'应该是'.. \%1 '。 – Stijn

2

您可以使用revsets来帮助!特别是sort功能。

这将返回最后10名的变更从tip(由当地变更ID)并返回它们按日期排序:使用hg convert --datesort SOURCE DEST特别是在hg help convert

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

看。但要注意的是,与使用其他排序方法相比,最终的存储库可能会很大。

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

相关问题