git post receive hooks を使用して Web サイトを公開する際に、この例を使用しています。
フックはベア リポジトリを一時ディレクトリにほぼ複製し、サイトを生成した後、その一時的な git クローンを削除します。
#!/bin/sh
# clone a repo, generate site etc
# done generating site, remove the TMP_GIT_CLONE
rm -rf $TMP_GIT_CLONE
プッシュを実行すると、他のすべてのタスクは正常に実行されますが、すべてのファイルが削除されるわけではありません。
次のエラーが表示されます。
remote: rm: <TMP_GIT_CLONE>/.git/objects/pack: Directory not empty
remote: rm: <TMP_GIT_CLONE>/.git/objects: Directory not emppty
...
あなたはアイデアを得る
post-receive
ただし、コマンド ラインからスクリプトを直接呼び出すと、rm
期待どおりに動作します。
なんで?
注: Post-hook receive act's different from shell を見てきました.askerの問題は、ワークツリーではなく裸のレポにあることに関係していました。