リポジトリ内のコミットを年齢別に「再ソート」したいと思います(完全に視覚化の目的で、機能的に何も変更したくありません)。「Rev」番号は便宜上のみ存在し、現在、コミットがリポジトリにプッシュされた時期に依存しています。これは、1 か月前のコミットよりも "早い" 30 分前のコミットを取得したことを意味し、構造をまったく変更しない単純な手段を使用して、いつ完了したかを示す方が簡単です。これにより、リポジトリはまったく同じに保たれますが、各コミットの直後に各変更セットがプッシュされたようにリポジトリに表示されます。これを行う方法はありますか?
質問する
636 次
3 に答える
2
revsetを使用すると、それを支援できます。特にsort
機能。
tip
これは、 (ローカル変更セット ID で)から最新の 10 個の変更セットを返し、それらを日付順に並べ替えて返します。
hg log -r "sort(last(:tip, 10), date)"
于 2013-07-29T20:09:15.830 に答える
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
于 2014-07-09T13:22:51.970 に答える
0
hg help convert
を使って特にご覧くださいhg convert --datesort SOURCE DEST
。ただし、結果のリポジトリは、他の並べ替え方法を使用する場合に比べて巨大になる可能性があることに注意してください。
hg convert
元のリポジトリへのリンクを維持するために必要な追加のメタデータが失われるため、通常、hgsubversion または hg-git を使用して作成されたリポジトリでは使用しないでください。メタデータを再構築できる可能性があります (私は試していません)。
于 2013-07-31T22:51:00.627 に答える