公式リリースと比較して、特定のgcc
ブランチからパッチを作成したいと思います。安定版リリースからtarballを解凍すると、パッチを適用して、特定のブランチにあったものと同等のものを取得できます。
パッチを作成する必要があるのは初めてなので、これを行うのはこれが初めてであり、非常に重要なソフトウェアについて話しているので、オプションと解析を正しく行うことが主な関心事です。
diff -crB GccStable GccGit > /tmp/fromStabletoBranch.patch
これで十分ですか、それを行う最善の方法ですか?
はい、これはパッチを作成する良い方法です。
要するに:
単一ファイルのパッチを作成するには、コマンドは次のようになります。
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
ここで、switch p
は、ファイルが正しく識別されるように、パスのプレフィックスを削除するようにpatchに指示します。ほとんどの場合、それは1
。
削除する --dry-run
画面に出力された結果から満足できる場合。
最新のgitチェックインをいくつかの安定したバージョンと比較したい場合は、リポジトリのgit diff the-stable-version
(正確には、正確なバージョン番号またはバリアントなど)を説明するタグを見つけてください。 git
はプロジェクトの完全な履歴を保持します(通常、一部のみを取得する方法があります)。 the-stable-version
が別の開発ブランチにあるかどうかは関係ありません(つまり、開発が分岐し、stableブランチが土壇場で修正されました)。