
特定のブランチから公式リリースと比較するパッチを作成したいと思いますgcc
。安定リリースから tarball を解凍すると、パッチを適用して、その特定のブランチにあったものと同等のものを取得できます。
パッチを作成する必要があるのは初めてなので、これを行うのは初めてであり、非常に重要なソフトウェアについて話しているので、オプションと解析を正しく行うことが主な懸念事項です。
diff -crB GccStable GccGit > /tmp/fromStabletoBranch.patch
これは十分であり、最善の方法でしょうか?
答え1
はい、これはパッチを作成する良い方法です。
要するに:
単一ファイルのパッチを作成するには、コマンドは次のようになります。
diff -Naru file_original file_updated > file.patch
どこ
-N
: 存在しないファイルを空として扱う-a
: すべてのファイルをテキストとして扱う-r
: 見つかったサブディレクトリを再帰的に比較する-u
: 統合コンテキストのNUM行(デフォルトは3行)を出力します
ディレクトリ全体のパッチを作成するには:
diff -crB dir_original dir_updated > dfile.patch
どこ
-c
: コピーされたコンテキストのNUM行(デフォルトは3行)を出力します-r
: サブディレクトリを再帰的に比較する-B
: 行がすべて空白の変更を無視する
結局このパッチを適用するには
patch -p1 --dry-run < dfile.patch
ここで、スイッチはp
、ファイルが正しく識別されるように、パス プレフィックスを削除するように patch に指示します。ほとんどの場合、 になります1
。
--dry-run
画面に表示された結果に満足したら削除します。
答え2
最新の git チェックインを何らかの安定バージョンと比較したい場合は、git diff the-stable-version
リポジトリで に移動するだけです (どのタグがそれを説明するのか、おそらく正確なバージョン番号か何らかのバリエーションかを把握する必要があります)。 はgit
プロジェクトの完全な履歴を保持します (通常、一部だけを取得する方法があります)。 が別の開発ブランチにあるかどうかは関係ありませんthe-stable-version
(つまり、開発が分岐し、安定ブランチに土壇場で修正が加えられた場合)。