3 # Patchwork - automated patch tracking system
4 # Copyright (C) 2008 Jeremy Kerr <jk@ozlabs.org>
6 # This file is part of the Patchwork package.
8 # Patchwork is free software; you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation; either version 2 of the License, or
11 # (at your option) any later version.
13 # Patchwork is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details.
18 # You should have received a copy of the GNU General Public License
19 # along with Patchwork; if not, write to the Free Software
20 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25 from optparse import OptionParser
27 def commits(options, revlist):
28 cmd = ['git', 'rev-list', revlist]
29 proc = subprocess.Popen(cmd, stdout = subprocess.PIPE, cwd = options.repodir)
33 for line in proc.stdout.readlines():
34 revs.append(line.strip())
38 def commit(options, rev):
39 cmd = ['git', 'diff', '%(rev)s^..%(rev)s' % {'rev': rev}]
40 proc = subprocess.Popen(cmd, stdout = subprocess.PIPE, cwd = options.repodir)
42 buf = proc.communicate()[0]
48 parser = OptionParser(usage = '%prog [options] revspec')
49 parser.add_option("-p", "--project", dest = "project", action = 'store',
50 help="use project PROJECT", metavar="PROJECT")
51 parser.add_option("-d", "--dir", dest = "repodir", action = 'store',
52 help="use git repo in DIR", metavar="DIR")
54 (options, args) = parser.parse_args(args[1:])
57 parser.error("incorrect number of arguments")
60 revs = commits(options, revspec)
64 print commit(options, rev)
67 if __name__ == '__main__':
68 sys.exit(main(sys.argv))