Mercurial > public > mercurial-scm > hg
comparison mercurial/scmutil.py @ 34620:b799f11644d8
scmutil: factor out building of transaction summary callback
In registersummarycallback(), we extra generic bits of the existing
"reportsummary" function into a decorator which will be used in forthcoming
changesets to add new summary callbacks.
author | Denis Laxalde <denis.laxalde@logilab.fr> |
---|---|
date | Wed, 04 Oct 2017 18:49:09 +0200 |
parents | 18309380fb88 |
children | 75979c8d4572 |
comparison
equal
deleted
inserted
replaced
34619:18309380fb88 | 34620:b799f11644d8 |
---|---|
1204 """register a callback to issue a summary after the transaction is closed | 1204 """register a callback to issue a summary after the transaction is closed |
1205 """ | 1205 """ |
1206 def txmatch(sources): | 1206 def txmatch(sources): |
1207 return any(txnname.startswith(source) for source in sources) | 1207 return any(txnname.startswith(source) for source in sources) |
1208 | 1208 |
1209 categories = [] | |
1210 | |
1211 def reportsummary(func): | |
1212 """decorator for report callbacks.""" | |
1213 reporef = weakref.ref(repo) | |
1214 def wrapped(tr): | |
1215 repo = reporef() | |
1216 func(repo, tr) | |
1217 newcat = '%2i-txnreport' % len(categories) | |
1218 otr.addpostclose(newcat, wrapped) | |
1219 categories.append(newcat) | |
1220 return wrapped | |
1221 | |
1209 if txmatch(_reportobsoletedsource): | 1222 if txmatch(_reportobsoletedsource): |
1210 reporef = weakref.ref(repo) | 1223 @reportsummary |
1211 def reportsummary(tr): | 1224 def reportobsoleted(repo, tr): |
1212 """the actual callback reporting the summary""" | |
1213 repo = reporef() | |
1214 obsoleted = obsutil.getobsoleted(repo, tr) | 1225 obsoleted = obsutil.getobsoleted(repo, tr) |
1215 if obsoleted: | 1226 if obsoleted: |
1216 repo.ui.status(_('obsoleted %i changesets\n') | 1227 repo.ui.status(_('obsoleted %i changesets\n') |
1217 % len(obsoleted)) | 1228 % len(obsoleted)) |
1218 otr.addpostclose('00-txnreport', reportsummary) |