mycommand
SVN サブディレクトリへのコミットが行われるたびに、SVN サーバーが特定のコマンドを実行するようにしsvn-rep/myfolder
ます。
どうすればいいですか?フックがプリインストールされたフックディレクトリがあることは知っています。しかし、そこからカスタム フックを作成するにはどうすればよいでしょうか。SVNはどのフックをいつ呼び出すかをどのように知っていますか?ファイル名に基づいていますか? また、コミットによっていくつかのファイルが変更された場合にのみフックが実行されるように制限するにはどうすればよいsvn-rep/myfolder
ですか?
明確にするために: コマンドは決して変更されません。サーバー上のどこかにある別のスクリプトを参照するだけです。
編集:私は実装post-commit
したばかりで、テスト目的で、SVNディレクトリのリビジョン番号を既存のものに追加する必要があります(そして誰でも書き込み可能です):
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
from subprocess import Popen, PIPE
dirRevisionCmd = 'svn info /var/www/main | grep -i "Letzte geänderte Rev"
process = Popen(headRevisionCmd, shell=True, stdout=PIPE, stderr=PIPE)
out, err = process.communicate()
with open("/var/lib/svn/rep/hooks/testfile", "a") as testfile:
testfile.write("err:" + err.strip() + "\n")
testfile.write("out:" + out.strip() + "\n")
これにより、各コミット後に空の標準出力が生成されます。
www-data
err:
out:
手で実行するとpost-commit
、「out」行にテキストが含まれます。では、なぜ SVN で動作しないのでしょうか?