Toggle line numbers
1 #!/usr/local/bin/python
2 #coding=utf-8
3 import sys,os,time
4 LOOK = "/usr/local/bin/svnlook"
5 SVN = "/usr/local/bin/svn"
6 LOGFILE = "/path/to/u/hooks/log/post-commit.log"
7 f = open( LOGFILE, "a+" )
8 TSTAMP = "%s"%time.strftime("%y-%m-%d %H:%M:%S", time.localtime())
9 def autoco(dirs,svn,mark,aim,mod):
10 """自动检出指定项目的代码到指定目录
11 - dirs 本次修改了的目录
12 - svn svn 命令所在地
13 - mark 匹配项
14 - aim 输出目标
15 - mod 检出的模块
16 要求目标路径有预先检出的环境!
17 """
18 if mark in dirs:
19 print >> f,TSTAMP+" %s marked::%s >>>> updating..."%(("+"*7),mark)
20 upsvn = svn+" update %s"%(aim+mod)
21 print >> f,TSTAMP+" "+"+"*7
22 up = os.popen(upsvn).read().strip()
23 print >> f,up
24 else:
25 print >> f,TSTAMP+" -------- marked null >>> update::nothing"
26 def changedirs(look,rev,repos):
27 """使用 svnlook 得到修改的路径
28 """
29 dirs = os.popen( LOOK+" changed -r "+ rev + " " + repos).read().strip()
30 return dirs
31 def usage():
32 print "Usage: " + sys.argv[0] + " REPOS REV\n"
33 print >> f,TSTAMP+"Usage: " + sys.argv[0] + " REPOS REV"
34 sys.exit(0)
35 if __name__ == '__main__':
36 if len(sys.argv) != 3:
37 usage()
38 repos = sys.argv[1]
39 rev = sys.argv[2]
40 print >> f,TSTAMP+" repos::"+repos+" rev::"+rev
41 ## Blog事务
42 autoco(changedirs(LOOK,rev,repos),SVN
43 ,"pyblosxom"
44 ,"/path/to/ur/pyblosxom"
45 ,"")