2

Mercurial にマージしたい 2 つのパッチがあります。残念ながら、これらのパッチをエクスポートしたブランチを削除しました。2 つのパッチをマージする方法を教えてください。

ubuntu 12.04 ボックスで Mercurial 2.0.2 を使用しています。

4

2 に答える 2

5

MQ を有効にしており、空のパッチ キューから開始すると仮定すると、次のようになります。

> hg qimport patch1        # Import & apply the first patch into a patch queue
> hg qimport patch2        # Import & apply the second patch into a patch queue
> hg qpop;                 # Pop the second patch (unapply)
> hg qfold patch2          # Fold the second patch into the first (result is called 'patch1')
> hg qexport > new_merged_patch

その後、次のいずれかを実行できます。

> hg qfinish -a            # Convert the currently applied patches (e.g. patch1) to changesets)

また:

> hg qpop                  # Pop the merged patch
> hg qdel patch1           # Delete it from the queue

正直なところ、これに MQ を使用するのはやり過ぎですが、知っておくと便利な拡張機能です。

于 2012-11-30T11:22:04.857 に答える
3

パッチをパッチ ファイルとして持っている場合は、それらを重ねて適用し、結果に基づいてパッチを生成できます。

$ patch -p0 < patch1
$ patch -p0 < patch2
$ hg diff > cumulative.patch

パッチ レベル は-p0、パッチの構造によって異なる場合があります。

于 2012-11-30T02:05:05.687 に答える