3

[Mercurial の質問にタグを付けましたが、実際には、他のソース管理アプリにも適用される概念的な質問をしています。] バージョン管理下にあるアプリケーション ソース コードを含むフォルダーがあるとします。メイントランクと呼んでください。リポジトリのクローンを作成し、コードの変更を開始し、プログラムの新しいバージョンに取り組み、メイン トランクの一部になることのないリビジョンを次々とコミットします。

ある日、リビジョン 23 に取り組んでいるときに、バグを見つけました。

リビジョン 24 としてコミットします。

私が行った他のすべての変更はせずに、バグ修正をお願いします。リビジョン 24 のコード (バグ修正) だけをメイン トランクにプッシュまたはマージする一般的な手順は何ですか?

4

1 に答える 1

4

Mercurial には、いくつかのオプションがあります (他の DVCS にも同様の機能があると確信しています)。

最も簡単な方法: バグがメインライン トランクに属していることに気付いたら、メインライン ヒントに更新し、コミット、プッシュしてから、その変更セットをサイド プロジェクトにマージします。

hg up -r mainline
# make your changes
hg com -m "I fixed the bug"
hg push -r mainline   ## now others can pull it!
hg up -r sideproject
hg merge mainline
hg com -m "merge mainline bugfix into sideproject"

終わり。

mq エクステンションを使用したり、パッチをエクスポートしたりすることで、履歴を編集して同様の結果を得る方法がありますが、それらはすべて、単に上記の方法を事後に達成しようとしているだけです。

変更セットには、その祖先のすべての変更が含まれます。したがって、メインラインの変更 (リビジョン 24) をサイド プロジェクト (リビジョン 23 まで) からトポロジ的に分離する必要があります。

于 2013-07-12T21:01:38.077 に答える