summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--project.py13
-rw-r--r--subcmds/diffmanifests.py21
2 files changed, 24 insertions, 10 deletions
diff --git a/project.py b/project.py
index e0bd9c10..1e1a10ae 100644
--- a/project.py
+++ b/project.py
@@ -2437,7 +2437,7 @@ class Project(object):
2437 def _allrefs(self): 2437 def _allrefs(self):
2438 return self.bare_ref.all 2438 return self.bare_ref.all
2439 2439
2440 def _getLogs(self, rev1, rev2, oneline=False, color=True): 2440 def _getLogs(self, rev1, rev2, oneline=False, color=True, pretty_format=None):
2441 """Get logs between two revisions of this project.""" 2441 """Get logs between two revisions of this project."""
2442 comp = '..' 2442 comp = '..'
2443 if rev1: 2443 if rev1:
@@ -2448,6 +2448,8 @@ class Project(object):
2448 out = DiffColoring(self.config) 2448 out = DiffColoring(self.config)
2449 if out.is_on and color: 2449 if out.is_on and color:
2450 cmd.append('--color') 2450 cmd.append('--color')
2451 if pretty_format is not None:
2452 cmd.append('--pretty=format:%s' % pretty_format)
2451 if oneline: 2453 if oneline:
2452 cmd.append('--oneline') 2454 cmd.append('--oneline')
2453 2455
@@ -2464,14 +2466,17 @@ class Project(object):
2464 raise 2466 raise
2465 return None 2467 return None
2466 2468
2467 def getAddedAndRemovedLogs(self, toProject, oneline=False, color=True): 2469 def getAddedAndRemovedLogs(self, toProject, oneline=False, color=True,
2470 pretty_format=None):
2468 """Get the list of logs from this revision to given revisionId""" 2471 """Get the list of logs from this revision to given revisionId"""
2469 logs = {} 2472 logs = {}
2470 selfId = self.GetRevisionId(self._allrefs) 2473 selfId = self.GetRevisionId(self._allrefs)
2471 toId = toProject.GetRevisionId(toProject._allrefs) 2474 toId = toProject.GetRevisionId(toProject._allrefs)
2472 2475
2473 logs['added'] = self._getLogs(selfId, toId, oneline=oneline, color=color) 2476 logs['added'] = self._getLogs(selfId, toId, oneline=oneline, color=color,
2474 logs['removed'] = self._getLogs(toId, selfId, oneline=oneline, color=color) 2477 pretty_format=pretty_format)
2478 logs['removed'] = self._getLogs(toId, selfId, oneline=oneline, color=color,
2479 pretty_format=pretty_format)
2475 return logs 2480 return logs
2476 2481
2477 class _GitGetByExec(object): 2482 class _GitGetByExec(object):
diff --git a/subcmds/diffmanifests.py b/subcmds/diffmanifests.py
index 05998681..751a2026 100644
--- a/subcmds/diffmanifests.py
+++ b/subcmds/diffmanifests.py
@@ -71,6 +71,10 @@ synced and their revisions won't be found.
71 p.add_option('--no-color', 71 p.add_option('--no-color',
72 dest='color', action='store_false', default=True, 72 dest='color', action='store_false', default=True,
73 help='does not display the diff in color.') 73 help='does not display the diff in color.')
74 p.add_option('--pretty-format',
75 dest='pretty_format', action='store',
76 metavar='<FORMAT>',
77 help='print the log using a custom git pretty format string')
74 78
75 def _printRawDiff(self, diff): 79 def _printRawDiff(self, diff):
76 for project in diff['added']: 80 for project in diff['added']:
@@ -92,7 +96,7 @@ synced and their revisions won't be found.
92 otherProject.revisionExpr)) 96 otherProject.revisionExpr))
93 self.out.nl() 97 self.out.nl()
94 98
95 def _printDiff(self, diff, color=True): 99 def _printDiff(self, diff, color=True, pretty_format=None):
96 if diff['added']: 100 if diff['added']:
97 self.out.nl() 101 self.out.nl()
98 self.printText('added projects : \n') 102 self.printText('added projects : \n')
@@ -124,7 +128,8 @@ synced and their revisions won't be found.
124 self.printText(' to ') 128 self.printText(' to ')
125 self.printRevision(otherProject.revisionExpr) 129 self.printRevision(otherProject.revisionExpr)
126 self.out.nl() 130 self.out.nl()
127 self._printLogs(project, otherProject, raw=False, color=color) 131 self._printLogs(project, otherProject, raw=False, color=color,
132 pretty_format=pretty_format)
128 self.out.nl() 133 self.out.nl()
129 134
130 if diff['unreachable']: 135 if diff['unreachable']:
@@ -139,9 +144,13 @@ synced and their revisions won't be found.
139 self.printText(' not found') 144 self.printText(' not found')
140 self.out.nl() 145 self.out.nl()
141 146
142 def _printLogs(self, project, otherProject, raw=False, color=True): 147 def _printLogs(self, project, otherProject, raw=False, color=True,
143 logs = project.getAddedAndRemovedLogs(otherProject, oneline=True, 148 pretty_format=None):
144 color=color) 149
150 logs = project.getAddedAndRemovedLogs(otherProject,
151 oneline=(pretty_format is None),
152 color=color,
153 pretty_format=pretty_format)
145 if logs['removed']: 154 if logs['removed']:
146 removedLogs = logs['removed'].split('\n') 155 removedLogs = logs['removed'].split('\n')
147 for log in removedLogs: 156 for log in removedLogs:
@@ -192,4 +201,4 @@ synced and their revisions won't be found.
192 if opt.raw: 201 if opt.raw:
193 self._printRawDiff(diff) 202 self._printRawDiff(diff)
194 else: 203 else:
195 self._printDiff(diff, color=opt.color) 204 self._printDiff(diff, color=opt.color, pretty_format=opt.pretty_format)