5

デフォルト ブランチで行ったバグ修正を Mercurial の名前付きブランチにするにはどうすればよいですか? 私は最近、新機能の作業を開始したので、ブランチでこの作業を行うことを考えました (これまで実際に行ったことはありませんでした)。そうすれば、作業が完了するまで変更をメインのデフォルト ブランチから外しておくことができます。機能をデプロイする準備ができました。デフォルトのブランチに更新し、必要に応じてバグ修正を適用できるという考えです。

TortoiseHg 分岐

ここで、名前付きブランチにバグ修正を適用したいと考えています。ヒント (rev 739) には、BoardSummary ブランチに組み込みたい変更が含まれています。マージできることはわかっていますが、BoardSummary の変更をデフォルト ブランチに持ち込みたくありません。

Mercurial: apply a bugfix change from stable named branch to dev branch の回答を見ましたが、意味がありませんでした。

編集:「次に、チェンジセット2がバグを導入したことを発見する」までは賛成です。私の場合、732に戻ってバグを修正し、コミットしました(デフォルトに)。分岐する前に修正が行われているという考えです。しかし、2 つのブランチをマージせずにその修正を 738 にするにはどうすればよいでしょうか? バグは実際には 739 で修正されているようです。そのため、まだ BoardSummary ブランチにはありません。これは、回答で2番目のツリーが示すもののようですが、3番目の図は「代わりにこれを行う」と説明されています-私はそのビットを理解していません

4

2 に答える 2

7

明らかに、デフォルトブランチには、 BoardSummaryブランチに存在しない変更セットが 1 つだけ含まれています 。デフォルトBoardSummaryにマージする必要があり、その逆ではありません。このように、BoardSummaryは修正され、BoardSummaryはいずれもデフォルトにはなりません。

要約する:

$ hg up BoardSummary
$ hg merge default
$ hg commit -m "Merge the fix for #247"

説明

採用できる支店の種類が多い。最も一般的なものは次のとおりです。

  • リリースされたバージョンを維持するための安定した (生産) ブランチ、
  • 多かれ少なかれ安定した開発活動を含むデフォルト (マスター、トランク) ブランチ、
  • トランクにマージできるほど成熟していないフィーチャー ブランチ。

ここでの主な考え方は、安定版からデフォルトへ、およびデフォルトから機能へのマージは常に安全であるということです。これは、変更セットに関して、安定したブランチはデフォルトのサブセットであり、デフォルトは機能ブランチのサブセットであることを意味します。

たとえば、機能ブランチnew-dal (主要な機能) でデータ アクセス レベルを作り直しています。同時に、デフォルトでいくつかの新しいレポート (マイナーな機能) を追加し、 1.0-stableのバグを見つけて修正しました。まあ、古いものから新しいものへとブランチをマージするだけです ( 1.0-stable -> default -> new-dal )。それだけです。

これは、Mercurial wiki: Standard Branching: Release branchで非常によく説明されています。

あなたの場合

あなたの場合、BoardSummaryは明らかに機能ブランチであるため、ためらうことなくデフォルトをマージできます。逆は、新しい機能をデフォルトに統合する準備ができている場合にのみ行う必要があります。

于 2012-06-15T11:41:02.957 に答える
0

最初に、履歴からコミット 739 (修正) をロールバック/削除する必要があります。次に、r732 で修正をコミットします。これにより、新しいヘッドが作成され、新しい r739 になります。履歴は次のようになります。

  r329
    |
--r232-----default branch
       \
        \
         feature branch

ここで、新しいヘッド (r329) をデフォルト ブランチと機能ブランチにマージします。これで、履歴はリンクされた回答の最後のツリーのように見えるはずです。

于 2012-06-15T11:19:51.817 に答える