docs/gitcredentials: describe URL prefix matching

Documentation was inaccurate since 9a121b0d22 (credential: handle
`credential.<partial-URL>.<key>` again, 2020-04-24)

Add tests for documented behaviour.

Signed-off-by: M Hickford <mirth.hickford@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
M Hickford
2025-10-01 20:56:49 +00:00
committed by Junio C Hamano
parent a1cf0cf13a
commit fdd21ba116
2 changed files with 22 additions and 12 deletions

View File

@@ -133,9 +133,8 @@ pattern in the config file. For example, if you have this in your config file:
username = foo
--------------------------------------
then we will match: both protocols are the same, both hosts are the same, and
the "pattern" URL does not care about the path component at all. However, this
context would not match:
then we will match: both protocols are the same and both hosts are the same.
However, this context would not match:
--------------------------------------
[credential "https://kernel.org"]
@@ -149,11 +148,11 @@ match: Git compares the protocols exactly. However, you may use wildcards in
the domain name and other pattern matching techniques as with the `http.<URL>.*`
options.
If the "pattern" URL does include a path component, then this too must match
exactly: the context `https://example.com/bar/baz.git` will match a config
entry for `https://example.com/bar/baz.git` (in addition to matching the config
entry for `https://example.com`) but will not match a config entry for
`https://example.com/bar`.
If the "pattern" URL does include a path component, then this must match
as a prefix path: the context `https://example.com/bar` will match a config
entry for `https://example.com/bar/baz.git` but will not match a config entry for
`https://example.com/other/repo.git` or `https://example.com/barry/repo.git`
(even though it is a string prefix).
CONFIGURATION OPTIONS

View File

@@ -991,18 +991,24 @@ test_expect_success 'url parser not confused by encoded markers' '
test_expect_success 'credential config with partial URLs' '
echo "echo password=yep" | write_script git-credential-yep &&
test_write_lines url=https://user@example.com/repo.git >stdin &&
test_write_lines url=https://user@example.com/org/repo.git >stdin &&
for partial in \
example.com \
example.com/org/repo.git \
user@example.com \
user@example.com/org/repo.git \
https:// \
https://example.com \
https://example.com/ \
https://example.com/org \
https://example.com/org/ \
https://example.com/org/repo.git \
https://user@example.com \
https://user@example.com/ \
https://example.com/repo.git \
https://user@example.com/repo.git \
/repo.git
https://user@example.com/org \
https://user@example.com/org/ \
https://user@example.com/org/repo.git \
/org/repo.git
do
git -c credential.$partial.helper=yep \
credential fill <stdin >stdout &&
@@ -1012,7 +1018,12 @@ test_expect_success 'credential config with partial URLs' '
for partial in \
dont.use.this \
example.com/o \
user@example.com/o \
http:// \
https://example.com/o \
https://user@example.com/o \
/o \
/repo
do
git -c credential.$partial.helper=yep \