SVN pre-commit hooks检查needs-lock

想在svn server端做一个检查,对于需要指定needs-lock的文件在添加的时候检查。

没有时间写出完整的脚本。先把查出的资料记一下。

 

第一步:

svnlook changed ...

 

获取所有变化的文件,其中 A xxx是新加的

 

第二步:对于每一个新加的文件,判断后缀,

svn pg needs-lock xxx 检查文件的属性

返回值为 * 没问题,其他报错。

 

做完了脚本

 import sys, os, string import time SVNLOOK='svnlook.exe' exts=[".doc", ".xls", ".ppt", ".docx", ".xlsx", ".pptx", ".jpg", "vsd", "bmp"] def checkNeedsLock(repos, txn): getfile_cmd = '%s changed -t "%s" "%s"' % (SVNLOOK, txn, repos) getfile_res = os.popen(getfile_cmd, 'r').readlines() for ln in getfile_res: fname = ln[1:].strip() ext = os.path.splitext(fname)[1].lower() if ext in exts: getprop_cmd = '%s propget -t "%s" "%s" svn:needs-lock "%s" ' % (SVNLOOK, txn, repos, fname) getprop_res = os.popen(getprop_cmd, 'r').read().strip() if getprop_res != "*": sys.stderr.write (ext + " file must have the needs-lock property. Please check you client configuration./n") sys.exit(1) def main(repos, txn): checkNeedsLock(repos, txn) exit(0) if __name__ == '__main__': if len(sys.argv) < 3: sys.stderr.write("Usage: %s REPOS TXN/n" % (sys.argv[0])) exit(1) else: main(sys.argv[1], sys.argv[2])

 

习惯用python做了。

如果有人想要bat,可以参考这个

http://www.nabble.com/using-pre-commit-hook-to-check-for-a-property-td15551677.html

 

想要perl的话,可以google一下ensure-needs-lock.pl

 

原理上都一样。

你可能感兴趣的:(SVN pre-commit hooks检查needs-lock)