背景
私は Subversion 用のコミット フックをいくつか実装しようとしています。単純なテスト フックを動作させるために多くの調査を行ってきましたが、うまくいきませんでした。
参考までに、私は以下のリンクの方法を調べ、実行し、そして組み合わせてみました:
1.ディレクトリ構成に関する Subversion マニュアル
2.サーバー側フックスクリプトの Tortoisevn マニュアル
3.Subversion マニュアルへのリンクを含むサーバー側フックの説明
4.コミット前のフックに関する wordaligned チュートリアル
5.コミットフックの問題に対する ServerFault の回答
他にも参照して使用したサイトは数多くありますが、それでもコミット フックを機能させることができません。
私の環境
私のマシンは RHEL6 (Cent OS) を実行しています。Subversion
は、上司の許可なしに直接アクセスできないリモート マシンにあります。
リモート マシンは Subversion 1.6 を実行しています。
これが私のリポジトリの現在の構造です:
test-for-svn-hooks
|-branches
|-hooks
| +-pre-commit
|-tags
+-trunk
ファイル pre-commit の権限は一時的に に設定されています777。すべてのディレクトリの権限は に設定されています775。
これはコミット フックをテストするために作成したサンプル スクリプトです。
#!/usr/bin/env bash
echo "THOU SHALL NOT PASS" 1>&2
exit 1
コミット前のフックが適切に動作していることを確認するために、できる限りのチェックとテストを行いました。動作を確認するために他に何をチェックする必要があるのかわかりません。好きなようにコミットでき、画面にメッセージは出力されません。
質問
1. フックの実装で、何か見落としたり、見逃したりしたことはありますか?
2. この方法でフックを実装した場合、同じフックを Tortoisesvn で再度実装する必要があるのでしょうか?
あらゆるフィードバックや提案をいただければ幸いです。
答え1
- フックの実装で見逃したり見落としたりしたことはありますか?
権限 777 を使用しないでください。これは、実際には逆効果になる場合があります。一部のツールは、このような疑わしい権限では動作しない可能性があります。私の場合は、この設定で動作しているので、これが問題になる可能性は低いです。ただし、これは行わないでください。755 に変更してください。
もう一つの健全性チェックは、フック スクリプトをサーバー上で直接実行することです。
/path/to/test-for-svn-hooks/hooks/pre-commit
スクリプトにさらに意味のあるコンテンツがある場合は、適切なパラメータを使用してテストする必要もあります。次に例を示します。
/path/to/test-for-svn-hooks/hooks/pre-commit /path/to/test-for-svn-hooks TXN
次に、サーバー自体でチェックアウトを使用してテストします。次に例を示します。
svn co /path/to/test-for-svn-hooks /tmp/test1
cd /tmp/test1
date > date.txt
svn add date.txt
svn ci -m 'added some junk'
投稿に書かれた内容に基づくと、これらの手順は機能するはずです。テストが失敗する条件の詳細はわかりません。この時点まで到達できれば、失敗したテストの理由がわかるかもしれません。
- この方法でフックを実装する場合、Tortoisesvn で同じフックを再度実装する必要があるかどうかを心配する必要がありますか?
いいえ。フックはサーバー側で定義されます。クライアント側で何もする必要はありません。すべてのクライアントは、pre-commit フックで定義したルールに従います。


