0

ここでパッチを適用しようとしています。xLoader.patch として保存しています。

http://gitorious.org/x-load-omap3/mainline/commit/ee120c894c3377054bda149748eb0621f2f843c8?format=パッチ

複数のファイルを変更し、ベース ディレクトリからスムーズに移行できません。以下のコマンドを使用すると、ハンクの失敗に関する多くのエラーが発生します。これを正しく行うにはどうすればよいですか? 各ファイルを個別に処理するセグメントにファイルを分割する方法はありますか?

patch -p1 --dry-run -i xLoader.patch

エラー:

x-loader$ patch -p1 --dry-run -i xLoader-512_patch.txt
patching file board/omap3beagle/omap3beagle.c
Hunk #1 succeeded at 310 (offset 45 lines).
Hunk #2 FAILED at 305.
1 out of 2 hunks FAILED -- saving rejects to file board/omap3beagle/omap3beagle.c.rej
patching file drivers/k9f1g08r0a.c
Hunk #1 succeeded at 221 (offset 67 lines).
Hunk #2 FAILED at 185.
1 out of 2 hunks FAILED -- saving rejects to file drivers/k9f1g08r0a.c.rej
patching file include/asm/arch-omap3/mem.h
Hunk #2 FAILED at 72.
Hunk #3 succeeded at 305 (offset 52 lines).
Hunk #4 succeeded at 364 (offset 52 lines).
1 out of 4 hunks FAILED -- saving rejects to file include/asm/arch-omap3/mem.h.rej
4

2 に答える 2

3

それが必要なすべてである場合は、はい、パッチを適用するファイルごとにセグメントに分割することができます。---/+++ヘッダー行で分割するだけです。これらの各セグメントは、独立したパッチファイルとして完全に機能します。

于 2012-12-23T03:30:37.217 に答える
1

git を使用して git 作業ディレクトリに適用する場合は、パッチの代わりに git-apply を使用できます。

パッチがきれいに適用されていないようです。一度に 1 つのファイルだけに適用する必要はありません。完全に適用されるファイルに適用され、失敗したファイルのリジェクトが保存されます。

必要に応じてファイルを分割することもできます。各ファイルは「diff」コマンドの行で始まります。

GNU パッチを使用している場合、リジェクト ファイルを通常の diff ではなく統合 diff に保存する「-U」オプションがあります。統一された差分を読むことに慣れている場合は、拒否されたハンクを手動で適用するときに、これにより作業がずっと楽になります。

もう 1 つのオプションは、異なる git ブランチを作成することです。1 つはパッチが完全に適用されるブランチで、もう 1 つはパッチが完全に適用されないような変更を含むブランチです。次に、ブランチを自分のパッチに適用されたパッチとマージします。これにより、.rej ファイルではなく、インライン diff3 スタイルのマージ競合が発生する可能性があります。

于 2012-12-23T03:38:52.260 に答える