Mercurial Queuesはパッチに関するものであり、パッチはファイルの名前変更について何も知りません。これが、Mercurial Queuesがファイルの名前変更をサポートしていない理由ですか、それともファイルの名前変更を間違って行っているのですか?と呼ばれる1つのファイルだけを変更するパッチキューに取り組んできましたfoo
。ここで、パッチ4に戻り、次の方法でファイルの名前を変更しますhg mv
。
hg qpop 4 # Unapply all patches until patch 4.
hg mv foo bar # Rename file and led Mercuial know about it.
hg qrefresh # Should apply changes to unapplied patch 4.
hg qpush -a # Should apply all unapplied patches.
次のエラーが発生します。
unable to find 'foo' for patching
1 out of 1 hunks FAILED -- saving rejects to file foo.rej
patch failed, unable to continue (try -v)
patch failed, rejects left in working dir
errors during apply, please fix and refresh 5.diff
では、Mercurial Queuesでファイルの名前変更を処理するにはどうすればよいですか?Mercurialは、ある理由でファイルの名前変更を処理します(そうでない場合と同様に、名前変更後のファイルの編集に関する履歴全体が失われます)。
アップデート
hg histedit
チェンジセットを折りたたむと、ファイルの名前変更の情報も失われることに気づきhg collapse
ました。ファイルは、名前が変更されたファイルではなく、新しいファイルとして表示されます。これも同じ理由だと思います。Mercurialでは、その情報を失うことなく、プライベートチェンジセットを折りたたむことはできないようです。
アップデート2
名前変更情報を失うことなくプライベートチェンジセットを折りたたむことが可能であることがわかりましhg rebase
た。他のコマンドが名前変更情報を保持する必要があるという問題はまだ空いていますが、コマンドを使用すると、少なくとも目的の結果を達成する方法があります。--collapse
hg rebase -s 5 -d 4 --collapse
hg rebase