diffmanifests: support custom git pretty format strings
Change-Id: I29f4f1351c421f393328514d145df1a96aed9ee2
diff --git a/project.py b/project.py
index e0bd9c1..1e1a10a 100644
--- a/project.py
+++ b/project.py
@@ -2437,7 +2437,7 @@
def _allrefs(self):
return self.bare_ref.all
- def _getLogs(self, rev1, rev2, oneline=False, color=True):
+ def _getLogs(self, rev1, rev2, oneline=False, color=True, pretty_format=None):
"""Get logs between two revisions of this project."""
comp = '..'
if rev1:
@@ -2448,6 +2448,8 @@
out = DiffColoring(self.config)
if out.is_on and color:
cmd.append('--color')
+ if pretty_format is not None:
+ cmd.append('--pretty=format:%s' % pretty_format)
if oneline:
cmd.append('--oneline')
@@ -2464,14 +2466,17 @@
raise
return None
- def getAddedAndRemovedLogs(self, toProject, oneline=False, color=True):
+ def getAddedAndRemovedLogs(self, toProject, oneline=False, color=True,
+ pretty_format=None):
"""Get the list of logs from this revision to given revisionId"""
logs = {}
selfId = self.GetRevisionId(self._allrefs)
toId = toProject.GetRevisionId(toProject._allrefs)
- logs['added'] = self._getLogs(selfId, toId, oneline=oneline, color=color)
- logs['removed'] = self._getLogs(toId, selfId, oneline=oneline, color=color)
+ logs['added'] = self._getLogs(selfId, toId, oneline=oneline, color=color,
+ pretty_format=pretty_format)
+ logs['removed'] = self._getLogs(toId, selfId, oneline=oneline, color=color,
+ pretty_format=pretty_format)
return logs
class _GitGetByExec(object):
diff --git a/subcmds/diffmanifests.py b/subcmds/diffmanifests.py
index 0599868..751a202 100644
--- a/subcmds/diffmanifests.py
+++ b/subcmds/diffmanifests.py
@@ -71,6 +71,10 @@
p.add_option('--no-color',
dest='color', action='store_false', default=True,
help='does not display the diff in color.')
+ p.add_option('--pretty-format',
+ dest='pretty_format', action='store',
+ metavar='<FORMAT>',
+ help='print the log using a custom git pretty format string')
def _printRawDiff(self, diff):
for project in diff['added']:
@@ -92,7 +96,7 @@
otherProject.revisionExpr))
self.out.nl()
- def _printDiff(self, diff, color=True):
+ def _printDiff(self, diff, color=True, pretty_format=None):
if diff['added']:
self.out.nl()
self.printText('added projects : \n')
@@ -124,7 +128,8 @@
self.printText(' to ')
self.printRevision(otherProject.revisionExpr)
self.out.nl()
- self._printLogs(project, otherProject, raw=False, color=color)
+ self._printLogs(project, otherProject, raw=False, color=color,
+ pretty_format=pretty_format)
self.out.nl()
if diff['unreachable']:
@@ -139,9 +144,13 @@
self.printText(' not found')
self.out.nl()
- def _printLogs(self, project, otherProject, raw=False, color=True):
- logs = project.getAddedAndRemovedLogs(otherProject, oneline=True,
- color=color)
+ def _printLogs(self, project, otherProject, raw=False, color=True,
+ pretty_format=None):
+
+ logs = project.getAddedAndRemovedLogs(otherProject,
+ oneline=(pretty_format is None),
+ color=color,
+ pretty_format=pretty_format)
if logs['removed']:
removedLogs = logs['removed'].split('\n')
for log in removedLogs:
@@ -192,4 +201,4 @@
if opt.raw:
self._printRawDiff(diff)
else:
- self._printDiff(diff, color=opt.color)
+ self._printDiff(diff, color=opt.color, pretty_format=opt.pretty_format)