パッチファイルを効率的に Araxis Merge で作成
ソフトウェアの不具合の修正や小規模なアップデートを行うために、パッチ(オリジナルファイルに更新内容を反映させるため、差分情報のみを含めたプログラム)を作成して適用する場合があります。
この作業を行うためには、UNIX/Linux の基本的なコマンド diff を使用して次のように記述し、差分を unified(ユニファイド)形式で書き出してパッチファイルを作成されている方も多いのではないでしょうか。
$ diff -u(または -c) 変更前のファイル 変更後のファイル > パッチファイル名
Araxis Mergeでは、このような手続きをテキスト比較のリボンボタンで行うことができます。テキスト比較時にこのボタンをクリックすると、別タブで差分(diff)をユニファイド形式で作成・表示し、さらにそれをパッチとして保存することもできます。
このブログでは、Python を例に、Araxis Merge で実現するパッチファイルの作成方法の勘所をご紹介したいと思います。
それでは具体的に Python ソースコードの変更前後のファイルを比較し、差分をユニファイド形式で出力して、パッチファイルとして保存してみましょう。
図1.ユニファイド diff ボタン
(画像をクリックすると、新しいタブで画像が開きます。)
変更前のファイル(python-gui-chart.py)と変更後のファイル(python-gui-chart_edit.py)の差分をユニファイド形式で別タブに出力
※変更箇所とその前後 3 行を UNIX(LF)改行コードで区切り、– 記号と + 記号で変更箇所が示されます。
図2.Python ソースコード、変更前後の差分結果(Unified 形式)
(※画像をクリックすると、新しいタブで画像が開きます。)
ユニファイド形式の出力の見方の詳細については、diff コマンドの説明サイトをご参照ください。
このユニファイド形式の差分は必要に応じて、リボンにある保存ボタンを使用して保存するか(デフォルトのファイル形式:パッチファイル .patch)、または別の場所へコピー&ペーストすることができます。
メモ:上記以外の方法でユニファイド形式の差分(diff)ファイルを作成、または、ユニファイド形式以外の種類のレポートを作成したい場合は、ファイル比較レポートの生成の UNIX diff オプションを使用できます。
さらに、ここで生成したユニファイド形式の差分はパッチとして活用できます。Araxis Merge の標準テキスト比較の別バージョン[パッチ用の新規テキスト比較]では、パッチファイルで記述されたハンク(差分を表すコードブロックの集まり)を確認し、それらを選択的に(パッチが当てられていない)元のテキストファイルへ適用することができます。
図3.パッチ比較画面
(※画像をクリックすると、新しいタブで画像が開きます。)
このパッチ用のテキスト比較は、一般的に使用される git diff、git format-patch、hg diff、diff -u などのツールで作成された、テキストベースのパッチファイルもサポートしています。
[パッチ用の新規テキスト比較]の各ペインの説明や操作、および柔軟に行えるパッチ適用の詳しい手順については、こちらをご参照ください。
Araxis Merge は、さまざまな作業効率の改善にお役立ていただけるツールです。この情報が皆様のこれからの業務に少しでもお役立ていただけたら幸いです。Araxis Merge では、評価版をご用意しておりますので、ぜひ、お試しください。