--- a/mercurial/commands.py Thu Sep 24 10:15:37 2015 +0300
+++ b/mercurial/commands.py Thu Sep 10 16:53:07 2015 +0200
@@ -19,7 +19,7 @@
import merge as mergemod
import minirst, revset, fileset
import dagparser, context, simplemerge, graphmod, copies
-import random
+import random, operator
import setdiscovery, treediscovery, dagutil, pvec, localrepo
import phases, obsolete, exchange, bundle2, repair, lock as lockmod
import ui as uimod
@@ -2171,6 +2171,45 @@
localrevs = opts.get('local_head')
doit(localrevs, remoterevs)
+@command('debugextensions', formatteropts, [], norepo=True)
+def debugextensions(ui, **opts):
+ '''show information about active extensions'''
+ exts = extensions.extensions(ui)
+ fm = ui.formatter('debugextensions', opts)
+ for extname, extmod in sorted(exts, key=operator.itemgetter(0)):
+ extsource = extmod.__file__
+ exttestedwith = getattr(extmod, 'testedwith', None)
+ if exttestedwith is not None:
+ exttestedwith = exttestedwith.split()
+ extbuglink = getattr(extmod, 'buglink', None)
+
+ fm.startitem()
+
+ if ui.quiet or ui.verbose:
+ fm.write('name', '%s\n', extname)
+ else:
+ fm.write('name', '%s', extname)
+ if not exttestedwith:
+ fm.plain(_(' (untested!)\n'))
+ else:
+ if exttestedwith == ['internal'] or \
+ util.version() in exttestedwith:
+ fm.plain('\n')
+ else:
+ lasttestedversion = exttestedwith[-1]
+ fm.plain(' (%s!)\n' % lasttestedversion)
+
+ fm.condwrite(ui.verbose and extsource, 'source',
+ _(' location: %s\n'), extsource or "")
+
+ fm.condwrite(ui.verbose and exttestedwith, 'testedwith',
+ _(' tested with: %s\n'), ' '.join(exttestedwith or []))
+
+ fm.condwrite(ui.verbose and extbuglink, 'buglink',
+ _(' bug reporting: %s\n'), extbuglink or "")
+
+ fm.end()
+
@command('debugfileset',
[('r', 'rev', '', _('apply the filespec on this revision'), _('REV'))],
_('[-r REV] FILESPEC'))