Add a 'show' command
authorCatalin Marinas <catalin.marinas@gmail.com>
Fri, 31 Mar 2006 17:42:34 +0000 (18:42 +0100)
committerCatalin Marinas <catalin.marinas@gmail.com>
Fri, 31 Mar 2006 17:42:34 +0000 (18:42 +0100)
This command is similar to 'git show' only that it understands patch names
as well as normal commit ids.

Signed-off-by: Catalin Marinas <catalin.marinas@gmail.com>
stgit/commands/show.py [new file with mode: 0644]
stgit/git.py
stgit/main.py

diff --git a/stgit/commands/show.py b/stgit/commands/show.py
new file mode 100644 (file)
index 0000000..50eb376
--- /dev/null
@@ -0,0 +1,45 @@
+__copyright__ = """
+Copyright (C) 2006, Catalin Marinas <catalin.marinas@gmail.com>
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License version 2 as
+published by the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+"""
+
+import sys, os
+from optparse import OptionParser, make_option
+
+from stgit.commands.common import *
+from stgit import git
+
+
+help = 'show the commit corresponding to a patch (or the current patch)'
+usage = """%prog [options] [<patch>]
+
+Show the commit log and the diff corresponding to a given patch. The
+output is similar to that generated by the 'git show' command."""
+
+options = []
+
+
+def func(parser, options, args):
+    """Show commit log and diff
+    """
+    if len(args) == 0:
+        patch = 'HEAD'
+    elif len(args) == 1:
+        patch = args[0]
+    else:
+        parser.error('incorrect number of arguments')
+
+    commit_id = git_id(patch)
+    sys.stdout.write(git.pretty_commit(commit_id))
index 71bddca..adad46f 100644 (file)
@@ -598,6 +598,12 @@ def barefiles(rev1, rev2):
 
     return result.rstrip()
 
+def pretty_commit(commit_id = 'HEAD'):
+    """Return a given commit (log + diff)
+    """
+    return _output(['git-diff-tree', '--cc', '--always', '--pretty', '-r',
+                    commit_id])
+
 def checkout(files = None, tree_id = None, force = False):
     """Check out the given or all files
     """
index d96ff2e..a056945 100644 (file)
@@ -54,6 +54,7 @@ import stgit.commands.rename
 import stgit.commands.resolved
 import stgit.commands.rm
 import stgit.commands.series
+import stgit.commands.show
 import stgit.commands.status
 import stgit.commands.top
 import stgit.commands.unapplied
@@ -90,6 +91,7 @@ commands = {
     'resolved': stgit.commands.resolved,
     'rm':       stgit.commands.rm,
     'series':   stgit.commands.series,
+    'show':     stgit.commands.show,
     'status':   stgit.commands.status,
     'top':      stgit.commands.top,
     'unapplied':stgit.commands.unapplied,