Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(159)

Unified Diff: chromite/bin/cros_changelog

Issue 4130009: Update cros_changelog to support sort-by-date option. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/crosutils.git
Patch Set: operator.attrgetter is cool Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromite/bin/cros_changelog
diff --git a/chromite/bin/cros_changelog b/chromite/bin/cros_changelog
index 4ce093c15dc066785ee38700c8d8db3b59c95afc..c79c2e8c561b91e8309c0cab1a5285a7782c7cb2 100755
--- a/chromite/bin/cros_changelog
+++ b/chromite/bin/cros_changelog
@@ -8,6 +8,8 @@
import cgi
from datetime import datetime
+import operator
+import optparse
import os
import re
import sys
@@ -136,7 +138,7 @@ def _GrabChanges(path, tag1, tag2):
cmd = 'cd %s && git config --get remote.cros.projectname' % path
projectname = _GrabOutput(cmd).strip()
log_fmt = '%x00%H\t%ce\t%cd\t%s\t%b'
- cmd_fmt = 'cd %s && git log --format="%s" --date=local %s..%s'
+ cmd_fmt = 'cd %s && git log --format="%s" --date=local "%s..%s"'
cmd = cmd_fmt % (path, log_fmt, tag1, tag2)
output = _GrabOutput(cmd)
commits = []
@@ -147,29 +149,33 @@ def _GrabChanges(path, tag1, tag2):
commits.append(change)
return commits
+def _ParseArgs():
+ parser = optparse.OptionParser()
+ parser.add_option("--sort-by-date", dest="sort_by_date", default=False,
+ action='store_true', help="Sort commits by date.")
+ return parser.parse_args()
+
def main():
tags = _GrabTags()
tag1 = None
- if len(sys.argv) == 3:
- tag1 = sys.argv[1]
- tag2 = sys.argv[2]
- elif len(sys.argv) == 2:
- tag2 = sys.argv[1]
+ options, args = _ParseArgs()
+ if len(args) == 2:
+ tag1, tag2 = args
+ elif len(args) == 1:
+ tag2, = args
+ if tag2 in tags:
+ tag1 = tags[tags.index(tag2) + 1]
+ else:
+ print >>sys.stderr, 'Unrecognized tag: %s' % tag2
+ sys.exit(1)
else:
print >>sys.stderr, 'Usage: %s [tag1] tag2' % sys.argv[0]
print >>sys.stderr, 'If only one tag is specified, we view the differences'
print >>sys.stderr, 'between that tag and the previous tag. You can also'
print >>sys.stderr, 'specify cros/master to show differences with'
print >>sys.stderr, 'tip-of-tree.'
- sys.exit(1)
- if not tag2.startswith('cros/') and tag2 not in tags:
- print >>sys.stderr, 'Unrecognized tag: %s' % tag2
- sys.exit(1)
- if not tag1:
- tag1 = tags[tags.index(tag2) + 1]
- if not tag1.startswith('cros/') and tag1 not in tags:
- print >>sys.stderr, 'Unrecognized tag: %s' % tag1
+ print >>sys.stderr, 'E.g. %s %s cros/master' % (sys.argv[0], tags[0])
sys.exit(1)
print >>sys.stderr, 'Finding differences between %s and %s' % (tag1, tag2)
@@ -185,7 +191,11 @@ def main():
cols = ['Project', 'Date', 'Commit', 'Committer', 'Bugs', 'Subject']
print '<table border="1" cellpadding="4">'
print '<tr><th>%s</th>' % ('</th><th>'.join(cols))
- for change in sorted(changes):
+ if options.sort_by_date:
+ changes.sort(key=operator.attrgetter("commit_date"))
+ else:
+ changes.sort()
+ for change in changes:
print change.AsHTMLTableRow()
print '</table>'
print '</html>'
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698