diff -r d00ec62d156f -r eb586ed5d8ce mercurial/scmutil.py --- a/mercurial/scmutil.py Fri Oct 13 21:36:10 2017 +0900 +++ b/mercurial/scmutil.py Thu Oct 12 09:39:50 2017 +0200 @@ -1200,6 +1200,11 @@ 'unbundle', ] +_reportnewcssource = [ + 'pull', + 'unbundle', +] + def registersummarycallback(repo, otr, txnname=''): """register a callback to issue a summary after the transaction is closed """ @@ -1226,3 +1231,34 @@ if obsoleted: repo.ui.status(_('obsoleted %i changesets\n') % len(obsoleted)) + + if txmatch(_reportnewcssource): + @reportsummary + def reportnewcs(repo, tr): + """Report the range of new revisions pulled/unbundled.""" + newrevs = list(tr.changes.get('revs', set())) + if not newrevs: + return + + # Compute the bounds of new revisions' range, excluding obsoletes. + unfi = repo.unfiltered() + minrev, maxrev = None, None + newrevs.sort() + for r in newrevs: + if not unfi[r].obsolete(): + minrev = repo[r] + break + for r in reversed(newrevs): + if not unfi[r].obsolete(): + maxrev = repo[r] + break + + if minrev is None or maxrev is None: + # Got only obsoletes. + return + + if minrev == maxrev: + revrange = minrev + else: + revrange = '%s:%s' % (minrev, maxrev) + repo.ui.status(_('new changesets %s\n') % revrange)