Mercurial > public > mercurial-scm > hg-stable
diff mercurial/cmdutil.py @ 4825:3cf94964c56b
hg log: Move filtering implicit parents to own method and use it in templater.
Extended test repo in test-command-template to contain changeset to test this.
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Sun, 08 Jul 2007 12:52:08 +0200 |
parents | f3f84d5cd268 |
children | 0e2d0a78f81a |
line wrap: on
line diff
--- a/mercurial/cmdutil.py Sun Jul 08 10:43:57 2007 +0200 +++ b/mercurial/cmdutil.py Sun Jul 08 12:52:08 2007 +0200 @@ -758,14 +758,8 @@ hexfunc = self.ui.debugflag and hex or short - parents = log.parentrevs(rev) - if not self.ui.debugflag: - if parents[1] == nullrev: - if parents[0] >= rev - 1: - parents = [] - else: - parents = [parents[0]] - parents = [(p, hexfunc(log.node(p))) for p in parents] + parents = [(p, hexfunc(log.node(p))) + for p in self._meaningful_parentrevs(log, rev)] self.ui.write(_("changeset: %d:%s\n") % (rev, hexfunc(changenode))) @@ -823,6 +817,22 @@ opts=patch.diffopts(self.ui)) self.ui.write("\n") + def _meaningful_parentrevs(self, log, rev): + """Return list of meaningful (or all if debug) parentrevs for rev. + + For merges (two non-nullrev revisions) both parents are meaningful. + Otherwise the first parent revision is considered meaningful if it + is not the preceding revision. + """ + parents = log.parentrevs(rev) + if not self.ui.debugflag and parents[1] == nullrev: + if parents[0] >= rev - 1: + parents = [] + else: + parents = [parents[0]] + return parents + + class changeset_templater(changeset_printer): '''format changeset information.''' @@ -919,12 +929,8 @@ return showlist('branch', [branch], plural='branches', **args) def showparents(**args): - parents = [[('rev', log.rev(p)), ('node', hex(p))] - for p in log.parents(changenode) - if self.ui.debugflag or p != nullid] - if (not self.ui.debugflag and len(parents) == 1 and - parents[0][0][1] == rev - 1): - return + parents = [[('rev', p), ('node', hex(log.node(p)))] + for p in self._meaningful_parentrevs(log, rev)] return showlist('parent', parents, **args) def showtags(**args):