[PATCH 2 of 6] hgrc.d: separate namespace for mercurial scripts 9diff and 9mail

Augie Fackler raf at durin42.com
Thu Aug 15 13:22:33 CDT 2013


On Aug 13, 2013, at 9:23 PM, Jeff Sickel <jas at corpus-callosum.com> wrote:

> 
> On Aug 13, 2013, at 3:55 PM, Augie Fackler <raf at durin42.com> wrote:
> 
>> On Mon, Aug 12, 2013 at 06:01:08PM -0500, Jeff Sickel wrote:
>>> # HG changeset patch
>>> # User Jeff Sickel <jas at corpus-callosum.com>
>>> # Date 1376347195 18000
>>> #      Mon Aug 12 17:39:55 2013 -0500
>>> # Branch stable
>>> # Node ID c0fa3b1baa4c1fc968390c37400b08314808d115
>>> # Parent  c662d9f71084020dc003d3b71804e426ef6640f3
>>> hgrc.d: separate namespace for mercurial scripts 9diff and 9mail
>>> 
>>> diff -r c662d9f71084 -r c0fa3b1baa4c contrib/plan9/hgrc.d/9diff.rc
>>> --- a/contrib/plan9/hgrc.d/9diff.rc	Mon Aug 12 17:36:49 2013 -0500
>>> +++ b/contrib/plan9/hgrc.d/9diff.rc	Mon Aug 12 17:39:55 2013 -0500
>>> @@ -4,4 +4,4 @@
>>> extdiff =
>>> 
>>> [extdiff]
>>> -9diff = 9diff -cm $parent $child $root
>>> +9diff = /bin/mercurial/9diff -cm $parent $child $root
>> 
>> Why the change to the absolute path to 9diff? Is it a surety that
>> that's where 9diff will be installed (remember, I only know about
>> plan9 as a theoretical construct, I've never used it).
> 
> Plan 9 doesn't use a path in the same way we think of it in
> other UNIX-based systems.  It binds namespaces together and
> the rc shell will execute from /bin or any full or referenced
> path to the file:
> 
> 	bonanza; ns | grep '/bin'
> 	bind  /amd64/bin /bin 
> 	bind -a /rc/bin /bin 
> 	bind -a /usr/jas/bin/rc /bin 
> 	bind -a /usr/jas/bin/amd64 /bin 
> 
> In our case the actual install of 9diff is in:
> 
> 	/rc/bin/mercurial/9diff
> 
> It's perfectly valid to start a script or executable as
> 
> 	mercurial/9diff

Fascinating. Queued.

> 
> Unfortunately the python implementation does a small shim
> to behave like the posixmodule, but really isn't.  It still
> uses os.system() in mercurial/util.py:468, which starts up
> the fake sh shell with no real PATH to handle the fact that
> we wanted the mercurial scripts in a separate namespace from
> the typical rc scripts.  Without the explicit path we end
> up with the error:
> 
> 	/bin/sh: mercurial/9diff: not found
> 
> I should probably provide a plan9 platform module instead of
> using posixmodule.c, but as the bulk of the python scripts
> out there already test for windows and posix, we'd really
> like to not add to the confusion.
> 
> 
> 
>> This feels like two patches: one to add the config for 9mail, and one
>> to point 9diff at the dedicated namespace?
>> 
>>> diff -r c662d9f71084 -r c0fa3b1baa4c contrib/plan9/hgrc.d/9mail.rc
>>> --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
>>> +++ b/contrib/plan9/hgrc.d/9mail.rc	Mon Aug 12 17:39:55 2013 -0500
>>> @@ -0,0 +1,4 @@
>>> +# The 9mail to support patchbomb and other email wrappers
>>> +[email]
>>> +method = /bin/mercurial/9mail
>>> +
>>> _______________________________________________
>>> Mercurial-devel mailing list
>>> Mercurial-devel at selenic.com
>>> http://selenic.com/mailman/listinfo/mercurial-devel
> 
> 
> This could be broken up into two patches if you like.
> 
> Jeff
> 



More information about the Mercurial-devel mailing list