有没有办法对mercurial中的修订进行重新排序?
我想按年龄对存储库中的提交进行“重新排序”(完全出于可视化目的,我不想在功能上做任何更改)。“Rev”编号仅为方便起见,当前取决于提交何时被推入存储库。这意味着半小时前的提交比一个月前的提交要“早”,而且通过一个根本不会改变结构的简单方法,更容易显示何时完成了任务。这会使存储库保持完全相同,但会使存储库显示每次提交后都会立即推送每个更改集。有什么方法可以做到这一点吗?您可以使用它来帮助解决这个问题!特别是有没有办法对mercurial中的修订进行重新排序?,mercurial,Mercurial,我想按年龄对存储库中的提交进行“重新排序”(完全出于可视化目的,我不想在功能上做任何更改)。“Rev”编号仅为方便起见,当前取决于提交何时被推入存储库。这意味着半小时前的提交比一个月前的提交要“早”,而且通过一个根本不会改变结构的简单方法,更容易显示何时完成了任务。这会使存储库保持完全相同,但会使存储库显示每次提交后都会立即推送每个更改集。有什么方法可以做到这一点吗?您可以使用它来帮助解决这个问题!特别是排序功能 这将返回tip(按本地变更集id)中的最后10个变更集,并返回按日期排序的变更集:
排序
功能
这将返回tip
(按本地变更集id)中的最后10个变更集,并返回按日期排序的变更集:
hg log -r "sort(last(:tip, 10), date)"
查看
hg help convert
,尤其是使用hg convert--datesort SOURCE DEST
。但是需要注意的是,与使用其他排序方法相比,生成的存储库可能非常庞大
请注意,通常不应在使用hgsubversion或hg git创建的存储库上使用
hg convert
,因为这样会丢失维护到原始存储库的链接所需的额外元数据。有可能重建元数据(我还没有尝试过)。有人对这个问题投了赞成票,并提醒了我。我最终编写了以下批处理脚本(对不起,我在windows中,它应该很容易翻译成bash)
在最后一行中,两个
%1
都应该是。\%1
。
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