今日は小ネタです。
ソースコードやテキストファイルの変更内容を人に渡して、変更内容を人為的なミスなく確実にコピー(マージ)する際に、差分ファイルを生成して渡すことは非常に重要です。
そこで、今回は、その差分ファイルの作成の仕方についてシェアしようと思います。
今回は、WinMergeというツールを使って差分の生成をします。
WinMergeは、Windows上で動作するオープンソースのファイルおよびディレクトリの差分およびマージツールで、主にテキストファイルやディレクトリ構造の比較・統合(マージ)をするために使用できます。
商用利用も可能で無料で利用でき、オープンソースのプロジェクトですので、ユーザーが自由に改良や拡張を行うことも可能です。
以下からダウンロードできます。
差分ファイルは通常、「Diffファイル」または「パッチファイル」と呼ばれます。
「Diffファイル」、「パッチファイル」の違いは、「Diffファイル」は主にファイルやディレクトリの差分を表すテキストファイルを指し、「パッチファイル」は差分を元のファイルに適用するためのデータのことを指します。
まずは、WinMergeを起動してファイル2つを指定して、差分を表示します。
今回の例では、2行目と4行目に差があるものになっています。
差分ファイルの生成では、標準で内蔵しているツールを使用します。
メニューバーの「ツール」->「パッチの生成(G)」をクリックします。
以下のようなウィンドウが表示されます。
”ファイル1” ”ファイル2”の内容を確認して、結果を出力するファイルを指定します。
最後に、出力形式を指定して「OK」をクリックで、ファイルの出力完了です。
※gitなどでは、ユニファイドが使われているようですので、ユニファイドで出力しておくのが無難かんと思います。
※コンテキストは、変更点の前後どれくらい情報として出力するかの設定です。
これで、ファイルの出力完了です。
実際に出力されたファイルは以下です。
※先頭 -が削除する行で先頭 +が追加する行です。
--- D:/Pythonテスト/unidiff/Text1.txt Wed Feb 21 22:37:22 2024
+++ D:/Pythonテスト/unidiff/Text2.txt Wed Feb 21 22:37:25 2024
@@ -1,5 +1,5 @@
こんにちは
-今日は雨です。
+今日は快晴です。
-あしたは晴れるといいですね。
+あしたも晴れるといいですね。
ではさようなら
最近は、gitが流行っているので、このフォーマットのサイトはよく目にするかなと思いますが、実際に自分でこの形式のファイルを出力することはめったにないので、簡単に出力できるもんだなと思いました。皆さんもぜひ一回やってみてください。
今回作成したPatchファイルを適用する方法については、Pythonでパッチ充てる方法を以下にまとめましたので、こちらを確認してみてください
差分をPythonで生成したい方はこちら