特定の種類のファイルへの特定の種類の変更を拒否する pre-receive フックを作成しようとして、そのスクリプトで次のことが合法である理由について困惑しています。
git show <new_commit>:<file>
この例で使用されているように ( --name-only を指定した diff を使用して影響を受けるファイルを抽出した後)、しかしそうではありません
git diff <old_commit> <new_commit> -- <file>
ファイルに既に存在するパターンではなく、導入された変更のみを拒否するように後者を好みますが、このスクリプトから実行すると、「不明なリビジョンまたは作業ツリーにないパス」というエラーが生成されます。
どちらもベアレポのコマンドラインで機能するため、イベントの順序に関係していると思われますが、違いを理解したいと思います。