#!/usr/bin/env python """Simple svn commit wrapper which emails a given list of people. Usage: ipsvnc [args] This is equivalent to doing svn commit [args] If the commit operation is successful (the script asks for confirmation), a hardwired list of maintainers is informed of the commit. This is a poor-man's substitute for a proper svn post-commit hook with an ipython-svn email list, which we're waiting to get soon. It should be removed once that facility is in place. This only works on a unix box which can send mail by itself.""" import os import commands import sys import time # Package maintainers to be alerted maintainers = ['fperez@colorado.edu', 'rkern@ucsd.edu', 'antont@an.org', 'tsanko@gmail.com'] #maintainers = ['fperez@colorado.edu'] # dbg # Assemble command line back, before passing it to svn svnargs = [] for arg in sys.argv[1:]: if ' ' in arg: svnargs.append('"%s"' % arg) else: svnargs.append(arg) svnargs = ' '.join(svnargs) #print 'SVN args: <%s>' % svnargs; sys.exit() # dbg # perform commit os.system('svn commit %s' % svnargs) svntime = time.asctime() svnstatus = commands.getoutput('svn log -r COMMITTED') # Confirm with user (trying to get the status from the svn commit blocks # silently, I don't care to debug it) ans = raw_input('If commit was succesful, proceed with email notification? [Y/n]') if ans.lower().startswith('n'): print "Exiting now..." sys.exit(1) else: print "OK. Emailing maintainers..." # Send emails subject = "[IPython SVN] New commit performed by %s" % os.getlogin() body = """\ Commit performed at: %s SVN arguments used: %s Current SVN status after last commit: %s""" % (svntime,svnargs,svnstatus) for maint in maintainers: print "Emailing",maint os.system('echo "%s" | mail -s "%s" %s' % (body, subject,maint))