3

リポジトリ内のいくつかのファイルの名前を変更し、それらにいくつかの変更を加えました。ここで、ファイルの名前を変更したという事実のみをコミットしてから、変更を個別にコミットしたいと思います。Mercurialでそれは可能ですか?

私が見る1つのオプションは、すべての変更を棚上げしてから、すべての名前変更を手動で記録することです。より自動化され、エラーが発生しにくい方法があるのではないかと思います。

4

1 に答える 1

3

Mercurialでこれを行う組み込みの方法はありません。commitは常に名前の変更と新しいファイルの内容の両方を記録します。

ただし、いくつかの手順でそれを行うことができます。作業コピーの親がXの場合は、次のようにします。

  1. 混合された名前変更と変更をコミットし、これをYと呼びます

  2. 名前の変更を抽出してXにコミットし、このコミットをZと呼びます

  3. Y(混合コミット)をZ(名前変更のみ)にリベースします。リベースは、Yの名前変更がすでにZにあることを確認するのに十分賢いです

コマンドラインでは、次のようになります。

$ hg commit -m "mixed commit with both changes and renames"
$ hg update -r "p1(.)"
$ hg diff -c tip | grep "^\(diff\|rename\)" | hg import -m 'renames' -
$ hg rebase -s -2 -d .
于 2012-08-16T10:04:18.220 に答える