Best practices for publishing extensions

Greg Ward greg at gerg.ca
Sat Apr 2 16:26:52 CDT 2011


Hi all --

In order to make life easier for my "allextensions" scrape-to-subrepos
project, I've just finished the glamorous and thrilling job of
updating many many *Extension pages in the Mercurial wiki to use more
consistent terminology.  allextensions now tracks 65 extensions, up
from 37 when I first announced it the other night.

Based on this, I think it's time for a wiki page called
"PublishingExtensions".  WritingExtensions should link to it: "If you
think your extension is general purpose, high quality, and of interest
to more than just you, see PublishingExtensions".

Here's my first crack at the page.  Comments welcome.

"""
= Best Practices for Publishing Mercurial Extensions =

So you've just written a high-quality, general-purpose Mercurial
extension that you want to share with the world.  Follow the
guidelines on this page to make life easier for you, easier for people
who want to use your extension, and easier for other developers who
might want to contribute changes.

For concreteness, I'll pretend your extension is called `foo`.

== Guidelines ==

1. Keep the source code for your extension in a Mercurial repository:
   one extension per repository, one repository per extension.  (Even if
   you are the author of 17 brilliant extensions, I might only be
   interested in one of them.  Of course, if you have extensions that
   depend on each other, you might want to ignore this advice.)

   Name the repository after the extension.  One common convention is
   to prepend `hg-`, e.g. `hg-foo`.  That will clearly distinguish
   your repository from other projects that happen to be called
   `foo`.

1. Create a public cloneable repository of your extension's 
   source code.  If you don't have a personal or company web server for
   hosting public Mercurial repositories, there are many hosting 
   services available, e.g. bitbucket.org, sourceforge.net,
   code.google.com.

1. Add a page `FooExtension` to the Mercurial wiki.  Use the
   ExtensionTemplate to guide you.  Be sure to link to your public
   repository as follows:
   {{{
Repository: http://hg.example.com/hg-foo
}}}
   And make sure that your page ends with
   {{{
----
CategoryExtensionsByOthers
}}}
   so that it is visible in that category page.

== What not to do ==

  * Please don't add your source code as a wiki attachment.
    That sort of misses the whole point of using a version-control
    system like Mercurial: how do I tell you what version I'm using
    if I find a bug?  How do you create new versions?
"""


More information about the Mercurial-devel mailing list