4

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た。他のコマンドが名前変更情報を保持する必要があるという問題はまだ空いていますが、コマンドを使用すると、少なくとも目的の結果を達成する方法があります。--collapsehg rebase -s 5 -d 4 --collapsehg rebase

4

1 に答える 1

0

これが、Mercurial Queues がファイルの名前変更をサポートしていない理由ですか?

番号。

または、ファイルの名前を変更するのに何か間違っていますか?

番号。

はい、ファイル用に準備されていた場合、チェーン内のパッチにfoo問題がありますが、後で問題が発生しますがbar、さまざまな理由によります。パッチは独立しており、すべてのパッチは他のパッチの変更について何も知りません-それらはコンテキストで動作し、個別のパッチで一連の操作を行います。名前の変更は正しく行われましたが、この変更セットは、古いコンテンツで準備された後の変更セットを無効にします

于 2012-12-10T16:24:52.353 に答える