[ANN] tortoise-hg

Andrei Vermel avermel at mail.ru
Thu Apr 26 15:59:14 CDT 2007


On my windows box
subprocess.Popen('hg help', shell=True)
successfully calls hg.bat, so that's a simple fix.

----- Original Message ----- 
From: "Steve Borho" <steve at borho.org>
To: "TK Soh" <teekaysoh at gmail.com>
Cc: "Andrei Vermel" <avermel at mail.ru>; <mercurial at selenic.com>
Sent: Friday, April 27, 2007 12:24 AM
Subject: Re: [ANN] tortoise-hg


> On Thursday 26 April 2007 3:13:33 pm TK Soh wrote:
>> On 4/26/07, Andrei Vermel <avermel at mail.ru> wrote:
>> > qct looks consequently for 'hg', 'hg.cmd', 'hg.bat' and 'hg.exe' in
>> > your path. If any one is found, it is then gets called.
>> >
>> > In your case 'hg' happened to be in the path, so qct tries to
>> > execute 'hg root' without any success apparently.
>> >
>> > To work around you can change order of checks for 'hg', 'hg.cmd',
>> > 'hg.bat', 'hg.exe' in qctlib\vcs\hg.py.
>> >
>> > A proper fix apparently should be to try to execute the various
>> > hg.* before using one for real work.
>>
>> Why is Qct looking for 'hg' first? IIRC, windoze can execute 'hg'. It
>> needs to have the usual executable extension, ie, hg, hg.bat, hg.ext,
>> etc.
>>
>> p/s: I cc the mailing list on this conversation, I'm sure some people
>> will get some benefit from it, or provide their comments.
> 
> The mercurial back-end for Qct does this when you start it up:
> 
>        # Find the mercurial binary name
>        if findInSystemPath('hg') != None:
>            self.hg_exe = 'hg'
>        elif findInSystemPath('hg.cmd') != None:
>            self.hg_exe = 'hg.cmd'
>        elif findInSystemPath('hg.bat') != None:
>            self.hg_exe = 'hg.bat'
>        elif findInSystemPath('hg.exe') != None:
>            self.hg_exe = 'hg.exe'
>        else:
>            print "Unable to find hg (.exe, .bat, .cmd) in your path"
>            return -1
> 
> with findInSystemPath() defined as:
> 
> def findInSystemPath(filename):
>    '''Search for an executable in the system path'''
>    paths = split(os.environ['PATH'], os.path.pathsep)
>    for path in paths:
>        fullName = os.path.join(path, filename)
>        if os.path.exists(fullName):
>            return os.path.abspath(os.path.join(path, filename))
>    return None
> 
> So the problem you're encountering is that Qct is finding a file 
> named 'hg' in your system path, but apparently Windows doesn't think 
> that 'hg' is an executable file.
> 
> -- 
> Steve Borho (steve at borho.org)
> http://www.borho.org/~steve/steve.asc
> Key fingerprint = 2D08 E7CF B624 624C DE1F  E2E4 B0C2 5292 F2C6 2C8C
>


More information about the Mercurial mailing list