想在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
原理上都一样。