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?