Re: [PATCH] git rev-parse: Fix --show-cdup inside symlinked directory
Hi,
On Tue, Jul 15, 2008 at 04:19:30PM +0100, Johannes Schindelin wrote:
Show 19 quoted lines
> On Tue, 15 Jul 2008, Petr Baudis wrote:
>
> > Consider the scenario when someone makes a symlink into a working tree
> > subdirectory at an unrelated place, then attempts to work inside the
> > symlinked directory. The scenario is a bit unwieldly, but most of
> > the Git will handle it fine - except git rev-parse --show-cdup. That
> > will output a sequence of ../ which will work wrong inside the symlink
> > using shell cd builtin.
>
> Short version: do not use symlinks in the working directory, if you do not
> want to track the _symlink_.
>
> Long version: there are a lot of problems with that, and --show-cdup is
> the least of the problems. A checkout, for example, is able to kill the
> symlink and check out a fresh copy of the subdirectory.
>
> AFAICT this is a concious decision: If you want to track a symlink, track
> a symlink, but if you want to track a subdirectory, you will have to track
> a subdirectory, and it cannot be a symlink.
no, no, this is for the scenario other way around: you have a normal
subdirectory in the working tree, and point a symlink _at_ it from
$somewhere_else. Then you try to work in $somewhere_else/symlink.
Show 8 quoted lines
> > This patch changes --show-cdup to always show absolute workdir path
> > instead. I think this should hopefully cause no compatibility problems;
> > the testsuite is passing fine, at least.
>
> See the thread where I proposed a change like this, back with the infamous
> worktree desaster, and Junio NACKed; or the thread where Linus rightfully
> insists that git_dir should be relative if possible, for performance
> reasons.
I see, <7vk5sly3h9.fsf@assigned-by-dhcp.cox.net>. But noone was aware
of this possible user case. Performance reasons sound reasonable, though
I'm not really sure if for cdup in particular this ever matters.
P.S.: Either way, there is a possible workaround to tell git about the
working directory manually using git --work-tree=... that I missed to
mention on IRC, Yves.
--
Petr "Pasky" Baudis
GNU, n. An animal of South Africa, which in its domesticated state
resembles a horse, a buffalo and a stag. In its wild condition it is
something like a thunderbolt, an earthquake and a cyclone. -- A. Pierce