cmdserver: set current process folder to a repository root after startup

Sergey Antonov sergant_ at mail.ru
Tue Feb 21 14:22:30 CST 2012


On 20.02.2012 16:36, Idan Kamara wrote:
> On Sun, Feb 19, 2012 at 9:04 PM, Sergey Antonov <sergant_ at mail.ru
> <mailto:sergant_ at mail.ru>> wrote:
>  >
>  > On 17.02.2012 19:39, Matt Mackall wrote:
>  >>
>  >> On Fri, 2012-02-17 at 10:48 +0400, Sergey Antonov wrote:
>  >>>
>  >>> When I run hg in cmdserver mode it treats the paths relative to the
>  >>> process current folder (like standalone hg).
>  >>>
>  >>> So, if I get some path from a changeset description (i.e.
>  >>> Folder/foobar.txt) the cmdserver does not accept it. I need either make
>  >>> it a full path or relative to process current folder.
>  >>
>  >>
>  >> Or add 'path:' to it. From 'hg help patterns':
>  >>
>  >>     To use a plain path name without any pattern matching, start it with
>  >> "path:". These path names must completely match starting at the
>  >> current
>  >>     repository root.
>  >>
>  >
>  > Well, for me this is not an option.
>  >
>  > I'm writing a plugin to an IDE. There are too much existing code that
>  > operates on paths, written in assumption, that they are relative to
>  > repository root.
>  >
>  > For me it is easier to run standalone mercurial once to know a repository
>  > root from a path and then start a cmdserver instance with that path as
>  > working directory, than adapt 'path:' pattern.
>  >
>  > It is not a big deal though. Additional 100-200 ms per project in
>  > solution, if the project is not under known repository roots.
>  >
>  > By the way, do you think that adding a option to a cmdserver to change a
>  > working directory to repository root after startup is a bad idea for some
>  > reason ? Actually, I think cmdserver should do this by default
> without any
>  > options.
>
> It shouldn't do this by default because the cmdserver is simply
> meant to provide faster access to Mercurial's command line interface,
> doing this will be a surprise to those expecting the default handling of
> paths
> on the command line.


Looks like the existing --cwd option is close to what I need, but it has 
effect only on one command. I need a way to permanently change a working 
directory of a running instance of command server.

Maybe add a flag to not restore cwd after command ends ? That way I 
could set it once and do not pass for every command.

Also, there is a known issue on a cmdserver wiki page "server doesn't 
notice changes to hgrc files". Do you know, is there plans to fix it 
anytime soon ?

-- 
Sergey Antonov
sergant_ at mail.ru


More information about the Mercurial-devel mailing list