Re: [PATCH] git rev-parse: Fix --show-cdup inside symlinked directory
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Jul 15, 2008, 15:19 UTC
- Message-ID
- <alpine.DEB.1.00.0807151614510.8950@racer>
- In-Reply-To
- <20080715145920.13529.25603.stgit@localhost>
Hi,
On Tue, 15 Jul 2008, Petr Baudis wrote:
Show 6 quoted lines
> 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.
> 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.
Hth, Dscho