Re: [PATCH] rev-parse --git-path: fix output when running in a subdirectory
From: Junio C Hamano <hidden>
Date: 2017-02-09 21:51:34
Johannes Schindelin [off-list ref] writes:
On Wed, 8 Feb 2017, Junio C Hamano wrote:quoted
How long has "rev-parse --git-path" been around? Had scripts in the wild chance to learn to live with the "output is relative to the top of the working tree" reality? I think the answers are "since 2.5" and "yes".Correct. And the third question is: How did the scripts work around this feature? The answer is obvious: by switching back to `$(git rev-parse --git-dir)/filename`. This is literally on what I spent the better part of Wednesday. There is just no way you can "fix" this otherwise. As an occasional shell scripter, you may be tempted to use `$(git rev-parse --show-cdup)$(git rev-parse --git-path filename)`, but of course that breaks in worktrees and if you do not use worktrees you would not even know that your workaround introduced another bug.
In case it is not clear, I understand all of the above. I was just worried about the people who do *NOT* use worktrees and did the obvious "concatenate --cdup with --git-path" and thought their script were working happily and well. By prepending the path to the (real) location of the .git in the updated --git-path output ourselves, they will complain, our update broke their script. If we introduced the fix gently, by (1) warn when "--git-path" is used but give the current output anyway, while adding the "fixed" one as another new option, and then (2) remove "--git-path" after several releases, they will not have to complain, even though they will see warning until they stop using "--git-path". There may be gentler alternative ways to transition, and I do not worry about the specifics of them too much. I just think we cannot do this in a single step without harming existing users.