Allow 'refresh' to annotate the patch log entries
[stgit] / stgit / commands / log.py
index 1c79c7c..ebd8cab 100644 (file)
@@ -47,30 +47,50 @@ options = [make_option('-b', '--branch',
            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:
@@ -78,7 +98,7 @@ def show_log(log, show_patch):
         else:
             commit = None
 
-    if show_patch and diff_str:
+    if options.patch and diff_str:
         pager(diff_str.rstrip())
 
 def func(parser, options, args):
@@ -106,4 +126,4 @@ 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)