make_option('-p', '--patch',
help = 'show the refresh diffs',
action = 'store_true'),
+ make_option('-f', '--full',
+ help = 'show the full commit ids',
+ action = 'store_true'),
make_option('-g', '--graphical',
help = 'run gitk instead of printing',
action = 'store_true')]
-def show_log(log, show_patch):
+def show_log(log, options):
"""List the patch changelog
"""
commit = git.get_commit(log)
diff_str = ''
while commit:
- descr = commit.get_log().rstrip()
+ log = commit.get_log().split('\n')
+
+ cmd_rev = log[0].split()
+ if len(cmd_rev) >= 2:
+ cmd = cmd_rev[0]
+ rev = cmd_rev[1]
+ elif len(cmd_rev) == 1:
+ cmd = cmd_rev[0]
+ rev = ''
+ else:
+ cmd = rev = ''
- if show_patch:
- if descr.startswith('refresh') or descr.startswith('undo') \
- or descr.startswith('sync'):
+ if options.patch:
+ if cmd in ['refresh', 'undo', 'sync']:
diff_str = '%s%s\n' % (diff_str,
git.pretty_commit(commit.get_id_hash()))
else:
+ if len(log) >= 3:
+ notes = log[2]
+ else:
+ notes = ''
author_name, author_email, author_date = \
name_email_date(commit.get_author())
secs, tz = author_date.split()
date = '%s %s' % (time.ctime(int(secs)), tz)
- out.stdout('%s %s' % (descr, date))
+ if options.full:
+ out.stdout('%-7s %-40s %s' % (cmd[:7], rev[:40], date))
+ else:
+ out.stdout('%-8s [%-7s] %-28s %s' % \
+ (rev[:8], cmd[:7], notes[:28], date))
parent = commit.get_parent()
if parent:
else:
commit = None
- if show_patch and diff_str:
+ if options.patch and diff_str:
pager(diff_str.rstrip())
def func(parser, options, args):
if os.system('gitk %s' % log) != 0:
raise CmdException, 'gitk execution failed'
else:
- show_log(log, options.patch)
+ show_log(log, options)