Mercurial > public > mercurial-scm > hg
comparison mercurial/scmutil.py @ 34661:eb586ed5d8ce
transaction-summary: show the range of new revisions upon pull/unbundle (BC)
Upon pull or unbundle, we display a message with the range of new revisions
fetched. This revision range could readily be used after a pull to look out
what's new with 'hg log'. The algorithm takes care of filtering "obsolete"
revisions that might be present in transaction's "changes" but should not be
displayed to the end user.
author | Denis Laxalde <denis.laxalde@logilab.fr> |
---|---|
date | Thu, 12 Oct 2017 09:39:50 +0200 |
parents | 75979c8d4572 |
children | 0c06875e7755 |
comparison
equal
deleted
inserted
replaced
34660:d00ec62d156f | 34661:eb586ed5d8ce |
---|---|
1198 'push', | 1198 'push', |
1199 'serve', | 1199 'serve', |
1200 'unbundle', | 1200 'unbundle', |
1201 ] | 1201 ] |
1202 | 1202 |
1203 _reportnewcssource = [ | |
1204 'pull', | |
1205 'unbundle', | |
1206 ] | |
1207 | |
1203 def registersummarycallback(repo, otr, txnname=''): | 1208 def registersummarycallback(repo, otr, txnname=''): |
1204 """register a callback to issue a summary after the transaction is closed | 1209 """register a callback to issue a summary after the transaction is closed |
1205 """ | 1210 """ |
1206 def txmatch(sources): | 1211 def txmatch(sources): |
1207 return any(txnname.startswith(source) for source in sources) | 1212 return any(txnname.startswith(source) for source in sources) |
1224 def reportobsoleted(repo, tr): | 1229 def reportobsoleted(repo, tr): |
1225 obsoleted = obsutil.getobsoleted(repo, tr) | 1230 obsoleted = obsutil.getobsoleted(repo, tr) |
1226 if obsoleted: | 1231 if obsoleted: |
1227 repo.ui.status(_('obsoleted %i changesets\n') | 1232 repo.ui.status(_('obsoleted %i changesets\n') |
1228 % len(obsoleted)) | 1233 % len(obsoleted)) |
1234 | |
1235 if txmatch(_reportnewcssource): | |
1236 @reportsummary | |
1237 def reportnewcs(repo, tr): | |
1238 """Report the range of new revisions pulled/unbundled.""" | |
1239 newrevs = list(tr.changes.get('revs', set())) | |
1240 if not newrevs: | |
1241 return | |
1242 | |
1243 # Compute the bounds of new revisions' range, excluding obsoletes. | |
1244 unfi = repo.unfiltered() | |
1245 minrev, maxrev = None, None | |
1246 newrevs.sort() | |
1247 for r in newrevs: | |
1248 if not unfi[r].obsolete(): | |
1249 minrev = repo[r] | |
1250 break | |
1251 for r in reversed(newrevs): | |
1252 if not unfi[r].obsolete(): | |
1253 maxrev = repo[r] | |
1254 break | |
1255 | |
1256 if minrev is None or maxrev is None: | |
1257 # Got only obsoletes. | |
1258 return | |
1259 | |
1260 if minrev == maxrev: | |
1261 revrange = minrev | |
1262 else: | |
1263 revrange = '%s:%s' % (minrev, maxrev) | |
1264 repo.ui.status(_('new changesets %s\n') % revrange) |