{{{#!python #!/usr/local/bin/python #coding=utf-8 import sys,os,time LOOK = "/usr/local/bin/svnlook" SVN = "/usr/local/bin/svn" LOGFILE = "/path/to/u/hooks/log/post-commit.log" f = open( LOGFILE, "a+" ) TSTAMP = "%s"%time.strftime("%y-%m-%d %H:%M:%S", time.localtime()) def autoco(dirs,svn,mark,aim,mod): """自动检出指定项目的代码到指定目录 - dirs 本次修改了的目录 - svn svn 命令所在地 - mark 匹配项 - aim 输出目标 - mod 检出的模块 要求目标路径有预先检出的环境! """ if mark in dirs: print >> f,TSTAMP+" %s marked::%s >>>> updating..."%(("+"*7),mark) upsvn = svn+" update %s"%(aim+mod) print >> f,TSTAMP+" "+"+"*7 up = os.popen(upsvn).read().strip() print >> f,up else: print >> f,TSTAMP+" -------- marked null >>> update::nothing" def changedirs(look,rev,repos): """使用 svnlook 得到修改的路径 """ dirs = os.popen( LOOK+" changed -r "+ rev + " " + repos).read().strip() return dirs def usage(): print "Usage: " + sys.argv[0] + " REPOS REV\n" print >> f,TSTAMP+"Usage: " + sys.argv[0] + " REPOS REV" sys.exit(0) if __name__ == '__main__': if len(sys.argv) != 3: usage() repos = sys.argv[1] rev = sys.argv[2] print >> f,TSTAMP+" repos::"+repos+" rev::"+rev ## Blog事务 autoco(changedirs(LOOK,rev,repos),SVN ,"pyblosxom" ,"/path/to/ur/pyblosxom" ,"") }}}