¶ post-commit.py
2006-05-01 23:23
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | #!/usr/local/bin/python #tags utility,Subversion,hooks #coding=utf-8 """ SVN 事务日志处理 - 使用固定的参数来自动响应检入后续操作: - 记录检入活动信息到每日log文件 """ ## Zoomq::060110 fixed log exp. esp. for woodpecker repo. ## only record commit-log of woodpecker import sys,os,time CHMOD = "/bin/chmod" CHOWN = "/usr/sbin/chown" LOOK = "/usr/local/bin/svnlook" SVN = "/usr/local/bin/svn" log = "/var/log/svn/woodpecker-ci.log" daylog = "%s-%s.log" % (log[: - 4 ] ,time.strftime( "%y%m%d" , time.localtime())) LOGFILE = daylog f = open ( LOGFILE, "a+" ) TSTAMP = "%s" % time.strftime( "%y-%m-%d %H:%M:%S" , time.localtime()) ### hook matter MARK = "woodpecker" MOD = "woodpecker" AIM = "/path/to/woodpecker/repos/" def autoco(dirs,svn,mark,aim,mod): """auto co all matter files: - svn SVNLOOK where - mark the mark of matter - aim where want to co - mod 指定的模块 """ print >> f,dirs if mark in dirs: print >> f,TSTAMP + " marked::OK! up::" + aim + mod upsvn = svn + " update %s" % (aim + mod) print >> f,TSTAMP + upsvn up = os.popen(upsvn).read().strip() print >> f,up else : print >> f,TSTAMP + " marked::NO! up::nothing" def changedirs(look,rev,repos): """list all changed dir """ dirs = os.popen( look + " changed -r " + rev + " " + repos).read().strip() return dirs def chkdirmod(cmod,cown,path,umark): """chmod and chown the aim path """ exp = os.popen(cmod + " -R " + umark + " " + path).read().strip() exp + = os.popen(cown + " -R www:www " + path).read().strip() return exp def logcommit(look,rev,repos): """log commit info... """ log = os.popen( look + " author -r " + rev + " " + repos).read().strip() print >> f, " " * 4 + "%s commited;%s" % ( str (log),repos) #return log.. 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() # start hook matter... repos = sys.argv[ 1 ] rev = sys.argv[ 2 ] print >> f,TSTAMP + " >>>>>> woodpecker up rev::" + rev print >> f,changedirs(LOOK,rev,repos) logcommit(LOOK,rev,repos) print >> f,TSTAMP + " <<<<<< woodpecker repo commit DONE! " |