Re: [PATCH v2 0/2] mingw: handle absolute paths in expand_user_path()
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jul 1, 2021, 17:42 UTC
- Message-ID
- <xmqq1r8irkvk.fsf@gitster.g>
- In-Reply-To
- <pull.66.v2.git.1625155388.gitgitgadget@gmail.com>
"Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com> writes:
Show 13 quoted lines
> In Git for Windows, we ran with a patch "in production" for quite a while > where paths starting with a slash (i.e. looking like Unix paths, not like > Windows paths) were interpreted as being relative to the runtime prefix, > when expanded via expand_user_path(). > > This was sent to the Git mailing list as a discussion starter, and it was > pointed out that this is neither portable nor unambiguous. > > After the dust settled, I thought about the presented ideas for a while > (quite a while...), and ended up with the following: any path starting with > <RUNTIME-PREFIX>/ is expanded. This is ambiguous because it could be a valid > path. But then, it is unlikely, and if someone really wants to specify such > a path, it is easy to slap a ./ in front and they're done.
I just went back to briefly scan the discussion in late 2018.
I think the rough consensus back then was that
* It indeed is a problem that there is no syntax for users of "relocatable Git" to use to point at things that come as part of the "relocatable Git" package.
* A change to expand_user_path() would be too broad, it makes sense for this feature to be in git_config_pathname();
* We need to get the syntax right.
As to the last item, there were a handful of choices raised:
- Use "~~"--the downside is that this is not extensible. Use "~runtime-prefix/" would be a better choice (the likelyhood of <RUNTIME-PREFIX>, $RUNTIME_PREFIX, and any other random choice happens to be used as a valid directory name is just as slim as the likelyhood of "runtime-prefix" used as a valid username).
- "$RUNTIME_PREFIX" to make it read like a variable---the downside was that it looked TOO MUCH like a variable and risked user confusion (e.g. it may be upsetting that "$HOME/.gitconfig" is not expanded like "~/.gitconfig" is).
- %(RUNTIME-PREFIX) to make it similar to how Git replaces various tokens that are understood only in the context of Git.
- <RUNTIME-PREFIX>---the downside is that this is an unnecessary new syntax we do not have to introduce. If <RUNTIME-PREFIX> is unlikely to be used as a valid directory name, %(RUNTIME-PREFIX) is just as unlikely.
There might have been other ideas floated back then. I have to say that the one you chose in this round is the least favourite of mine, and if you consulted me privately before redoing this round, I would probably have said %(RUNTIME_PREFIX) would make the most sense among the candidates.
Thanks.