私は最近Pythonを使用して、同じリポジトリ内のさまざまなプロジェクトをスキャンし、それに応じて動作するコミット後フックを実装しました。私はPythonを初めて使用するので、次のスクリプトにはいくつかの非効率性(または完全なエラー)があるかもしれませんが、それは私たちの目的には機能します:
#!/usr/bin/env python
import commands
from subprocess import *
import os
import sys
# This is a post-commit hook. The arguments passed to the hook
# are different than a pre-commit hook, and the syntax/use for
# svnlook will probably be different too.
def check_repo_and_do_stuff(repos, rev):
dirs_changed_cmd =
p1 = Popen('%s dirs-changed %s -r %s' % (SVNLOOK, repos, rev)
dirs_changed = p1.communicate[0]
for line in dirs_changed:
if line.find('/part-of-path-for/project1') >= 0:
do_stuff_for_project1()
if line.find('/part-of-path-for/project2') >= 0:
do_stuff_for_project2()
def do_stuff_for_project1()...
def do_stuff_for_project2()...
SVNLOOK='/usr/bin/svnlook'
# Take the arguments that svnserve passes on the command-line
repos = sys.argv[1]
rev = sys.argv[2]
check_repo_and_do_stuff(repos, rev)
これがお役に立てば幸いです。
-ザカリー