web-dev-qa-db-ja.com

これはパッチを作成する良い方法ですか?

公式リリースと比較して、特定のgccブランチからパッチを作成したいと思います。安定版リリースからtarballを解凍すると、パッチを適用して、特定のブランチにあったものと同等のものを取得できます。

パッチを作成する必要があるのは初めてなので、これを行うのはこれが初めてであり、非常に重要なソフトウェアについて話しているので、オプションと解析を正しく行うことが主な関心事です。

diff -crB GccStable GccGit > /tmp/fromStabletoBranch.patch

これで十分ですか、それを行う最善の方法ですか?

16
user2485710

はい、これはパッチを作成する良い方法です。

要するに:

  1. 単一ファイルのパッチを作成するには、コマンドは次のようになります。

    diff -Naru file_original file_updated > file.patch

    どこ

    • -N:存在しないファイルを空として扱います
    • -a:すべてのファイルをテキストとして扱います
    • -r:見つかったサブディレクトリを再帰的に比較します
    • -u:統合されたコンテキストのNUM(デフォルト3)行を出力します
  2. ディレクトリ全体のパッチを作成するには:

    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画面に出力された結果から満足できる場合。

21
jimmij

最新のgitチェックインをいくつかの安定したバージョンと比較したい場合は、リポジトリのgit diff the-stable-version(正確には、正確なバージョン番号またはバリアントなど)を説明するタグを見つけてください。 gitはプロジェクトの完全な履歴を保持します(通常、一部のみを取得する方法があります)。 the-stable-versionが別の開発ブランチにあるかどうかは関係ありません(つまり、開発が分岐し、stableブランチが土壇場で修正されました)。

0
vonbrand