Re: [PATCH] remote-hg: fix path when cloning with tilde expansion
- From
Antoine Pelisse <apelisse@gmail.com>
- Date
- Aug 9, 2013, 20:09 UTC
- Message-ID
- <CALWbr2w2JjEr_hYX9ighu_-=iTV6etG=78g4AbKko64EsecxFA@mail.gmail.com>
- In-Reply-To
- <7veha266nq.fsf@alter.siamese.dyndns.org>
On Fri, Aug 9, 2013 at 8:49 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 15 quoted lines
> Antoine Pelisse <apelisse@gmail.com> writes: >> On Mon, Aug 5, 2013 at 10:30 PM, Felipe Contreras <felipe.contreras@gmail.com> wrote: >>> Shouldn't that be the job of the shell? (s/~/$HOME/) >> >> I'm not sure what you mean here. Does it mean that I should stop cloning using "~" ? > > I think shells do not expand ~ when it appears in a string (e.g. hg::~/there); > you could work it around with > > git clone hg::$(echo ~/there) > > and I suspect that is what Felipe is alluding to. A tool (like > remote-hg bridge with this patch) that expands ~ in the middle of a > string also may be surprising to some people, especially to those > who know the shell does not.
It looks like mercurial will expand the tilde (it it starts with it):
hg init \~
will create a $HOME/.hg. (while git init \~ will create ./~).
So when we run:
git clone hg::~/my/repo
Git will remove the "hg::" part, and Mercurial will expand tilde and clone $HOME/my/repo.
So what should we do ? I think we should stick as close as possible to Hg behavior: That is consider that a path starting with tilde is absolute, and not try to fix it by building /home/user/~/repo/path. Of course if we could not depend on "I think Hg works like that", it would be better if we could resolve that by asking Mercurial. I will dig into it.
> By the way, you earlier sent an updated 1/2; is this supposed to be > 2/2 to conclude the two-patch series?
Those two patches don't interact with each other, but you can of course join them if it makes it easier for you (and I don't think one is going to have to go "faster" than the other anyway).