我想按年龄“重新排序”存储库中的提交(完全出于可视化目的,我根本不想在功能上改变任何东西)。 “Rev”号仅用于方便,目前取决于提交何时被推入存储库。这意味着我们从一个半小时前“提前”获得了比一个月提交的提交,并且更容易显示什么时候完成一个简单的度假胜地,根本不改变结构。这将使存储库保持完全相同,但是使存储库显示每次提交后立即推送每个更改集。是否有办法执行此操作?
答案 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
,因为您将丢失维护指向原始存储库的链接所需的额外元数据。有可能重建元数据(我还没试过)。