パッチからHunkを選択的に適用する
複数Hunkパッチから特定のHunkをチェリーピックする方法を学びます。必要な変更のみを適用し、それ以外を拒否できます。
Multi-Hunk Patches
詳細な説明
Hunkのチェリーピック
パッチ内のすべての変更が必要とは限りません。Diffパッチ適用ツールでは、初回適用後に各Hunkのオン・オフを切り替えられます。git add -p(インタラクティブステージング)と同様の機能です。
ワークフロー
- オリジナルテキストと完全なパッチを貼り付け
- 適用をクリック — すべてのHunkが適用されチェックボックス付きで表示
- 各Hunkを確認
- 拒否したいHunkのチェックを外す
- 結果が自動更新されて承認されたHunkのみを反映
シナリオ例
4つのHunkを含むパッチを受け取りました:
| Hunk | 変更内容 | 判断 |
|---|---|---|
| 1 | コメントのタイポ修正 | 承認 |
| 2 | デバッグログの追加 | 拒否(本番向けでない) |
| 3 | NULLポインタバグの修正 | 承認 |
| 4 | 変数名の変更 | 拒否(命名規約が異なる) |
選択的適用の仕組み
Hunkがオフにされると、エンジンは最初からパッチを再実行し、承認されたHunkのみを適用します。行オフセットは承認された変更のみに基づいて再計算され、結果の内部整合性が保たれます。
Gitとの比較
以下と同様の機能:
git add -p— Hunkを対話的にステージングgit checkout -p— Hunkを対話的に破棄git stash -p— Hunkを対話的にスタッシュ
違いは、このツールがGitリポジトリに限らずあらゆるテキストで動作する点です。
ユースケース
設定ファイル用のコミュニティパッチをダウンロードしましたが、特定の設定のみ変更したい場合。不要なHunkをオフにして必要なものだけを適用します。