2013-07-29 40 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,因爲您將失去維護到原始存儲庫的鏈接所需的額外元數據。可能重建元數據(我還沒有嘗試過)。

相關問題