Contrib

Matt Mackall mpm at selenic.com
Sat Feb 6 05:34:24 CST 2010


On Sat, 2010-02-06 at 12:05 +0100, Mads Kiilerich wrote:
> Revisiting an old thread I haven't given up on ...
> 
> Was Re: [PATCH] mercurial.spec: Install mq.el, hgk requires tk, 
> uncompressed man pages
> 
> Matt Mackall wrote, On 01/06/2010 06:05 AM:
> > On Wed, 2010-01-06 at 03:01 +0100, Mads Kiilerich wrote:
> >    
> >> I don't understand what the contrib folder is for. Is it unsupported or
> >> undocumented? Broken stuff? The place where all contributions go? Or
> >> just a place where random things are dumped and forgotten? I don't think
> >> anybody would benefit from just including the whole contrib folder as-is
> >> in the installer/package.
> >>      
> > It is unsupported and largely undocumented, and yes, some things in
> > there are broken. But most of it is potentially useful.
> 
> I fail to understand how that situation can be appreciated.
> 
> Contrib contains stuff which is an essential part of Mercurials 
> offering, and people expect it to work. Installers and binary packages 
> have to include parts from contrib, but taking unsupported and largely 
> undocumented stuff and mixing it with the good stuff and pretend that 
> all of it is supported is not a good solution.
> 
> Much of the content in contrib do have a quality similar to the rest of 
> Mercurial - and if it is of lower quality then it is often because it 
> lives for itself and doesn't get the attention it deserves. It doesn't 
> pop up when searching or browsing the code, it isn't integrated in the 
> test suite (except for dumprevlog and simplemerge), and there is no 
> expectation that contrib is maintained like all the other code. The name 
> "contrib" hints that it is a "somebody else's problem field". It seems 
> like a mess where nobody has any obligation to clean up.
> 
> Years ago it kind of made sense to include incomplete or experimental 
> code temporarily in contrib, but now there are so many places small 
> projects can be hosted that that probably is a better solution in some 
> cases.
> 
> I suggest and ask that we make it a long-term goal to make contrib go 
> away, by making its parts either fully supported and documented (and 
> moved somewhere else) or removed.
> 
> I understand that something might be impossible to change because they 
> are widely used and relied on. That indicates that it to some extent is 
> supported, and also points out how important it is that these parts get 
> proper support and a good stable location.
> 
> 
> A quick analysis of what currently can be found in contrib and what 
> could happen:
> 
> CONFIGURATION - installers can install to /etc/mercurial/hgrc.d/*.rc:
> mergetools.hgrc # rename to .rc
> sample.hgrc # rename to .rc

Not sure we ever want to install sample.hgrc?

> LIBEXEC - executables, but not necessarily in users PATH, move to bin or 
> libexec folder:
> # usable user commands
> hgdiff
> simplemerge
> convert-repo # usage? replaced by extension? remove it!
> # server commands
> hgwebdir.fcgi
> hgwebdir.wsgi
> hg-ssh
> hgsh # still used and maintained? drop!

Maybe?

> # advanced tools
> dumprevlog # +x
> undumprevlog # +x
> rewrite-log

This can probably die.

> shrink-revlog.py # remove .py file extension
> # extension helper
> hgk # must be in path or referenced by hgk.path (but should probably be 
> deprecated now)
> git-viz # dead? remove it!

Ok.

> tmplrewrite.py # usage? outdated! remove it!

Ok.

> EXTENSIONS - put them in hgext, perhaps give them a debug-prefix and 
> hide them from the extension list:
> memory.py
> perf.py

If they're moved into hgext/, then we'd be committing to supporting
them.

> INTEGRATION - binary packages should include and install these when and 
> where appropriate:
> bash_completion
> tcsh_completion
> tcsh_completion_build.sh
> zsh_completion
> mercurial.el
> mq.el
> vim # getting upstreamed
> 
> DOCS:
> logo-droplets.svg # move to doc folder

Sure.

> python-hook-examples.py # move to wiki
> xml.rnc # move to doc folder (or to mercurial/templates right next to
> map-cmdline.xml and template-vars.txt)

Sure.

> INSTALLERS - meta content and scripts - move to installers or build folder:
> buildrpm
> mercurial.spec # -x
> macosx/Readme.html
> macosx/Welcome.html
> macosx/macosx-build.txt
> win32/ReadMe.html
> win32/hg.bat
> win32/mercurial.ico
> win32/mercurial.ini
> win32/mercurial.iss
> win32/postinstall.txt
> win32/win32-build.txt
> 
> 
> /Mads

-- 
http://selenic.com : development and support for Mercurial and Linux




More information about the Mercurial-devel mailing list