]> git.ipfire.org Git - thirdparty/git.git/commit
interpolate_path(): allow specifying paths relative to the runtime prefix
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Sat, 24 Jul 2021 22:06:53 +0000 (22:06 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 26 Jul 2021 19:17:16 +0000 (12:17 -0700)
commite394a16023cbb62784e380f70ad8a833fb960d68
treeb358bbb33958aa3caadb72d35150d68b37733014
parenta03b097d6307763c6778f5a1f194fbcbd158a5f7
interpolate_path(): allow specifying paths relative to the runtime prefix

Ever since Git learned to detect its install location at runtime, there
was the slightly awkward problem that it was impossible to specify paths
relative to said location.

For example, if a version of Git was shipped with custom SSL
certificates to use, there was no portable way to specify
`http.sslCAInfo`.

In Git for Windows, the problem was "solved" for years by interpreting
paths starting with a slash as relative to the runtime prefix.

However, this is not correct: such paths _are_ legal on Windows, and
they are interpreted as absolute paths in the same drive as the current
directory.

After a lengthy discussion, and an even lengthier time to mull over the
problem and its best solution, and then more discussions, we eventually
decided to introduce support for the magic sequence `%(prefix)/`. If a
path starts with this, the remainder is interpreted as relative to the
detected (runtime) prefix. If built without runtime prefix support, Git
will simply interpolate the compiled-in prefix.

If a user _wants_ to specify a path starting with the magic sequence,
they can prefix the magic sequence with `./` and voilĂ , the path won't
be expanded.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/config.txt
path.c
t/t0060-path-utils.sh