[PATCH] mercurial: add debugextensions command (issue4676)

Piotr Listkiewicz piotr.listkiewicz at gmail.com
Sun Sep 13 04:58:11 CDT 2015


> $ hg debugextensions -q
> purge
> dbsh
> extdiff

> $ hg debugextensions
> purge
> dbsh (untested!)
> hggit (3.4!)

Could you describe more precisely the difference between version with quiet
parameter and without parameters? In new patch i sent debugextensions
without parameters print only names of extension modules, with verbose
prints other information as well(source,tested,bug).

> Sorting probably makes sense here. It might also make sense to use the
> generic templating interface:

I used generic template interface in new sent patch without sorting. Would
sth like
exts_infos.sort(sort=cmp_ext_name) be good enough?

2015-09-13 1:04 GMT+02:00 Matt Mackall <mpm at selenic.com>:

> On Thu, 2015-09-10 at 20:25 +0200, liscju wrote:
> > # HG changeset patch
> > # User liscju <piotr.listkiewicz at gmail.com>
> > # Date 1441896787 -7200
> > #      Thu Sep 10 16:53:07 2015 +0200
> > # Node ID a1d762cfc0428911f52b109d1c335a37ea24ff59
> > # Parent  ea489d94e1dc1fc3dc1dcbef1c86c18c49605ed1
> > mercurial: add debugextensions command (issue4676)
> >
> > Add debugextensions command to help users debug their extension
> > problems. If there are no extensions command prints nothing,
> > otherwise it prints the table with: extension name, import source,
> > testedwith and buglink informations. If information about testedwith
> > or buglink in given module is missing it prints "-" in appropriate
> > column.
>
> Interesting choice to use minirst tables here. Unfortunately,  I don't
> think it's going to work out well for a lot of people because some of
> the columns can be quite wide:
>
> $ hg debugextensions
> ============== ===========================================
> ============================= ===========================================
> Extension name Import source                               Testedwith
>               Buglink
> ============== ===========================================
> ============================= ===========================================
> purge          /home/mpm/hg/hgext/purge.pyc                internal
>               -
> dbsh           /home/mpm/hg/contrib/debugshell.pyc         -
>                -
> extdiff        /home/mpm/hg/hgext/extdiff.pyc              internal
>               -
> gpg            /home/mpm/hg/hgext/gpg.pyc                  internal
>               -
> hggit          /home/mpm/src/hg-git/hggit/__init__.pyc     2.8.2 3.0.1 3.1
> 3.2.2 3.3 3.4 https://bitbucket.org/durin42/hg-git/issues
>
>
> That's way over 80 columns. I'm sure there are a lot of people with
> 100-character paths to their extensions as well. It's also not a very
> good match to our usual output style.
>
> Here's what I'd suggest:
>
> $ hg debugextensions -q
> purge
> dbsh
> extdiff
> ...
>
> $ hg debugextensions
> purge
> dbsh (untested!)
> hggit (3.4!)
> ...
>
> $ hg debugextensions -v
> purge
>  location: ...
>  tested with: internal
>  bug reporting: http://bz.selenic.com
> hggit
> ...
>
> Sorting probably makes sense here. It might also make sense to use the
> generic templating interface:
>
> https://mercurial.selenic.com/wiki/GenericTemplatingPlan
>
>
> > diff -r ea489d94e1dc -r a1d762cfc042 mercurial/commands.py
> > --- a/mercurial/commands.py   Sat Aug 22 17:08:37 2015 -0700
> > +++ b/mercurial/commands.py   Thu Sep 10 16:53:07 2015 +0200
> > @@ -2184,6 +2184,28 @@
> >      for f in ctx.getfileset(expr):
> >          ui.write("%s\n" % f)
> >
> > + at command('debugextensions', [], norepo=True)
> > +def debugextensions(ui):
> > +    exts = extensions.extensions(ui)
> > +    header = ["Extension name", "Import source", "Testedwith",
> "Buglink"]
> > +    rows = [header]
> > +    for extname, extmod in exts:
> > +        extsource = extmod.__file__
> > +        try:
> > +            exttestedwith = extmod.testedwith
> > +        except AttributeError:
> > +            exttestedwith = "-"
> > +        try:
> > +            extbuglink = extmod.buglink
> > +        except AttributeError:
> > +            extbuglink = "-"
> > +        rows.append([extname, extsource, exttestedwith, extbuglink])
> > +
> > +    if len(rows) > 1:
> > +        rst = minirst.maketable(rows, header=True)
> > +        table = ''.join(rst)
> > +        ui.write(table)
> > +
> >  @command('debugfsinfo', [], _('[PATH]'), norepo=True)
> >  def debugfsinfo(ui, path="."):
> >      """show information detected about current filesystem"""
> > diff -r ea489d94e1dc -r a1d762cfc042 tests/test-debugextensions.t
> > --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> > +++ b/tests/test-debugextensions.t    Thu Sep 10 16:53:07 2015 +0200
> > @@ -0,0 +1,21 @@
> > +  $ hg debugextensions
> > +
> > +  $ cat >> $HGRCPATH <<EOF
> > +  > [extensions]
> > +  > color=
> > +  > histedit=
> > +  > patchbomb=
> > +  > rebase=
> > +  > mq=
> > +  > EOF
> > +
> > +  $ hg debugextensions
> > +  ==============*=====================*==========*======= (glob)
> > +  Extension name*Import source        *Testedwith*Buglink (glob)
> > +  ==============*=====================*==========*======= (glob)
> > +  color          */hgext/color.pyc    *internal  *-       (glob)
> > +  histedit       */hgext/histedit.pyc *internal  *-       (glob)
> > +  patchbomb      */hgext/patchbomb.pyc*internal  *-       (glob)
> > +  rebase         */hgext/rebase.pyc   *internal  *-       (glob)
> > +  mq             */hgext/mq.pyc       *internal  *-       (glob)
> > +  ==============*=====================*==========*======= (glob)
> > _______________________________________________
> > Mercurial-devel mailing list
> > Mercurial-devel at selenic.com
> > https://selenic.com/mailman/listinfo/mercurial-devel
>
> --
> Mathematics is the supreme nostalgia of our time.
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://selenic.com/pipermail/mercurial-devel/attachments/20150913/78b03f8b/attachment.html>


More information about the Mercurial-devel mailing list