5

hg mq プラグインの目的は、レポジトリに完全にコミットできるようにすることです。注意散漫な ADHD によって引き起こされたコードのとりとめのない変更を混乱させることはありません。

例えば....

バグ y に気付き、代わりにバグ x に取り組み始めたとき、私はバグ x に取り組んでいます。この時点でhg qfinish、リポジトリにコミットされたときに変更が混乱しないように、パッチ キューに新しいパッチを作成する必要があります。

ここで、新しいパッチを作成することを忘れて、その過程にあるとしますhg qrefresh。その後、間違いに気づき、その 1 つのパッチからの変更を 2 つのパッチに分けたいと思うでしょう。

キュー内のパッチ ファイル (および新しいパッチ ファイル) を編集して、変更を個別のパッチとその後のコミットに分ける必要があることを認識しています。ただし、差分パッチ ファイルの編集についてはまだ熟練していません。

これについてどこで学べますか? そして、これについてどうすればよいでしょうか?

4

4 に答える 4

3

もう 1 つのオプション (お使いのプラットフォームで動作すると仮定) は、TortoiseHG のバージョン 2.0 です。「不適切な」名前の Shelve ユーティリティを使用すると、チャンクやファイルをパッチ間で移動したり、作業ディレクトリに移動したりできます。Windows、Linux、およびおそらく OSX で利用できます。

http://tortoisehg.bitbucket.io/

于 2011-03-24T17:24:35.713 に答える
2

次の行を .hgrc に追加して、レコード拡張子を有効にすることができます。

[extensions]
hgext.record =

現在のパッチをクリアするには

hg qrefresh nothing

nothing(" " は単なるランダムな文字列であることに注意してください: への引数qrefreshは、現在のパッチに含める必要があるファイルのリストです。そのため、変更されたファイルの名前以外であれば何でも構いません - 私は通常 "0" を使用します)

これhg qrecord <patchName>で、新しいパッチにどの変更を加える必要があるかをインタラクティブに選択できるようになりました。残りの変更は、qnewまたは別のを使用して別のパッチに追加できqrecordます。最後にqpopqfoldまたは edit.hg/patches/seriesを使用して、パッチをマージして並べ替えることができます。

于 2011-05-17T14:28:34.443 に答える
2

この関連する SO の質問に記載されているように、MQ チュートリアルの「パッチを複数のパッチに分割する」セクションを確認してください。

于 2011-03-24T17:21:26.610 に答える
0

viq="vim $(hg root)/.hg/patches/"これらの状況にのみ使用するシェル エイリアス があります。

実行viqしてパッチを取得し、差分を手動で編集して、必要に応じてハンクを他のパッチに移動します。

私は対話型の方法 (例: git add -i) よりもこちらを好みます。対話型のプロンプトからの作業は、エディターからの作業ほど安全ではないと感じているからです (エディターがバックアップを作成したり、簡単な取り消し機能を備えていることは知っています)。

于 2011-03-24T16:58:37.587 に答える