521 else: |
523 else: |
522 remoterevs, _checkout = hg.addbranchrevs(repo, remote, branches, |
524 remoterevs, _checkout = hg.addbranchrevs(repo, remote, branches, |
523 opts.get('remote_head')) |
525 opts.get('remote_head')) |
524 localrevs = opts.get('local_head') |
526 localrevs = opts.get('local_head') |
525 doit(localrevs, remoterevs) |
527 doit(localrevs, remoterevs) |
|
528 |
|
529 @command('debugextensions', commands.formatteropts, [], norepo=True) |
|
530 def debugextensions(ui, **opts): |
|
531 '''show information about active extensions''' |
|
532 exts = extensions.extensions(ui) |
|
533 hgver = util.version() |
|
534 fm = ui.formatter('debugextensions', opts) |
|
535 for extname, extmod in sorted(exts, key=operator.itemgetter(0)): |
|
536 isinternal = extensions.ismoduleinternal(extmod) |
|
537 extsource = extmod.__file__ |
|
538 if isinternal: |
|
539 exttestedwith = [] # never expose magic string to users |
|
540 else: |
|
541 exttestedwith = getattr(extmod, 'testedwith', '').split() |
|
542 extbuglink = getattr(extmod, 'buglink', None) |
|
543 |
|
544 fm.startitem() |
|
545 |
|
546 if ui.quiet or ui.verbose: |
|
547 fm.write('name', '%s\n', extname) |
|
548 else: |
|
549 fm.write('name', '%s', extname) |
|
550 if isinternal or hgver in exttestedwith: |
|
551 fm.plain('\n') |
|
552 elif not exttestedwith: |
|
553 fm.plain(_(' (untested!)\n')) |
|
554 else: |
|
555 lasttestedversion = exttestedwith[-1] |
|
556 fm.plain(' (%s!)\n' % lasttestedversion) |
|
557 |
|
558 fm.condwrite(ui.verbose and extsource, 'source', |
|
559 _(' location: %s\n'), extsource or "") |
|
560 |
|
561 if ui.verbose: |
|
562 fm.plain(_(' bundled: %s\n') % ['no', 'yes'][isinternal]) |
|
563 fm.data(bundled=isinternal) |
|
564 |
|
565 fm.condwrite(ui.verbose and exttestedwith, 'testedwith', |
|
566 _(' tested with: %s\n'), |
|
567 fm.formatlist(exttestedwith, name='ver')) |
|
568 |
|
569 fm.condwrite(ui.verbose and extbuglink, 'buglink', |
|
570 _(' bug reporting: %s\n'), extbuglink or "") |
|
571 |
|
572 fm.end() |