2

特定の種類のファイルへの特定の種類の変更を拒否する pre-receive フックを作成しようとして、そのスクリプトで次のことが合法である理由について困惑しています。

git show <new_commit>:<file>

こので使用されているように ( --name-only を指定した diff を使用して影響を受けるファイルを抽出した後)、しかしそうではありません

git diff <old_commit> <new_commit> -- <file>

ファイルに既に存在するパターンではなく、導入された変更のみを拒否するように後者を好みますが、このスクリプトから実行すると、「不明なリビジョンまたは作業ツリーにないパス」というエラーが生成されます。

どちらもベアレポのコマンドラインで機能するため、イベントの順序に関係していると思われますが、違いを理解したいと思います。

4

1 に答える 1

-3

リンクした答えが指摘しているように、pre-receiveフックが実行されたとき、ファイルはまだ受信されておらず、どの参照が更新される必要があるかだけです (これと他のフックの詳細はgithooks(5) マンページで見つけることができます)。

古いデータと比較できるデータがないため、差分を作成できません。

于 2012-11-30T15:48:14.180 に答える