Extending extension lookups

Matt Mackall mpm at selenic.com
Sun Jan 17 20:10:08 CST 2016


On Wed, 2016-01-13 at 18:58 +0000, Martijn Pieters wrote:
> I was asked by Pierre-Yves to create a proposal to support more than
> just an hgext namespace for extensions bundled with Mercurial, to help
> facilitate experimental extensions (see
> https://www.mercurial-scm.org/wiki/ExperimentalExtensionsPlan).

I guess I don't see what the advantage is here over simply adding the
"(EXPERIMENTAL)" flag to the top of the docs. Commands and extensions marked
experimental are hidden from the help today (see the chg extension) and we are
free to have whatever stability policy we want with them.

I guess if people find extensions by poking around on disk, they might be slightly more prone to not realizing a given extension is experimental if it's not in a separate directory.. but I must confess I have pretty limited sympathy for people who poke around in source code without looking at either the source or the docs.

One minor downside with your plan that doesn't exist with the status quo is that
we'll eventually have to move the code if we decide to make it official.

> While I'm at it, I also want to look at where extensions (3rd party or
> core) are to be installed. Mercurial extensions are currently expected
> to be installed in the standard Python site-packages directory. Is
> there any interest in moving extension out to a new, separate
> location? With a little work (like a provided hgsetup.py module),
> installation of extensions can still be done with the standard Python
> tools. Mercurial would add that new location to the Python module
> search path on startup and loading extensions would not have to
> otherwise change. But at the same time, you then guarantee that
> Mercurial extensions can't be confused with 'regular' Python
> libraries. Is there any interest in doing this?

I am interested in being able to have extensions in a standard place in my home
directory that hg can automatically find. In particular, I'd like it to be able
to search in ~/src/foobar/hgext/foobar.py without having to run anything (except
maybe configure my extension path to ~/src/). Then all third-party modules I
grab off Bitbucket with a reasonable directory layout can just be cloned into a
directory together.

-- 
Mathematics is the supreme nostalgia of our time.



More information about the Mercurial-devel mailing list