MercurialQueueで出てしまった.rejファイルの対話的取り込み

閲覧: 54 回
最初の未読メッセージにスキップ

monjudoh

未読、
2009/05/11 2:15:112009/05/11
To: mercurial-ja
文殊堂です。

MercurialQueueで出てしまった.rejファイルの取り込み作業を
対話的に行う方法はありますか?

フジワラ

未読、
2009/05/12 0:53:142009/05/12
To: mercurial-ja
文殊堂さん:

フジワラです。

私が思いつく方法は2つぐらいかな?

(1) 対話的パッチ適用ツールを使う

設定ファイルの [ui] セクションで patch 項目が設定されている場合、
qpush 実行時にこの項目に設定されたツールが実行されます。

なので、これに対話的なパッチ適用を行うツールを設定してやればよいのですが、
「対話的なパッチツール」なるものがそもそも存在するの?ってあたりは、
私もよく知りません(笑)。

BOS Book では mpatch なるものを紹介していて、mpatch のページを
ざっと見る限りでは、rej 内容をマージしてくれるのかな?

http://oss.oracle.com/~mason/mpatch/

# 対話的ではないですが…

(2) 3-way merge でパッチを適用する

BOS Book では「Updating your patches when the underlying code changes」
と題して、ベースソースの改変でパッチが適用できなくなった場合に、
通常のマージと同じように 3-way merge しながらパッチを適用する方法を
説明しています。

http://hgbook.red-bean.com/read/managing-change-with-mercurial-queues.html#sec:mq:merge

大雑把なフローとしては:

1. qpush で適用
2. qsave で適用状態を保存
3. 新規適用対象リビジョンに update
4. qpush --merge でマージ実施
5. qrestore で qsave 状態を破棄

手順 4 で [ui] merge に設定されたマージツールが起動されるので、
設定ファイルを一時的に変更するか、--config グローバルオプションで
上書きして対話的なマージツールを起動すればOKです。

qpush --merge はマージ失敗時に状態を更に戻す(resolve とかができない)ので、
衝突が発生する場合は対話的なツールじゃないと駄目っぽいです。

以前、私の BOS Book 翻訳過程で書いた簡単な図解付きの説明が
以下にあるので、ご参考までに。

http://inside.ascade.co.jp/node/17

On 5月11日, 午後3:15, monjudoh <monju...@gmail.com> wrote:
> 文殊堂です。
>
> MercurialQueueで出てしまった.rejファイルの取り込み作業を
> 対話的に行う方法はありますか?

monjudoh

未読、
2009/05/12 7:54:422009/05/12
To: mercurial-ja
フジワラさん

文殊堂です。
ありがとうございます。

今度試してみます。

On 5月12日, 午後1:53, フジワラ <flying.fo...@gmail.com> wrote:
> 文殊堂さん:
>
> フジワラです。
>
> 私が思いつく方法は2つぐらいかな?
>
> (1) 対話的パッチ適用ツールを使う
>
> 設定ファイルの [ui] セクションで patch 項目が設定されている場合、
> qpush 実行時にこの項目に設定されたツールが実行されます。
>
> なので、これに対話的なパッチ適用を行うツールを設定してやればよいのですが、
> 「対話的なパッチツール」なるものがそもそも存在するの?ってあたりは、
> 私もよく知りません(笑)。
>
> BOS Book では mpatch なるものを紹介していて、mpatch のページを
> ざっと見る限りでは、rej 内容をマージしてくれるのかな?
>
> http://oss.oracle.com/~mason/mpatch/
>
> # 対話的ではないですが...
>
> (2) 3-way merge でパッチを適用する
>
> BOS Book では「Updating your patches when the underlying code changes」
> と題して、ベースソースの改変でパッチが適用できなくなった場合に、
> 通常のマージと同じように 3-way merge しながらパッチを適用する方法を
> 説明しています。
>
> http://hgbook.red-bean.com/read/managing-change-with-mercurial-queues...
全員に返信
投稿者に返信
転送
新着メール 0 件