From: brian m. carlson Date: Wed, 01 Oct 2025 22:20:18 GMT Subject: Re: [PATCH] docs/gitcredentials: describe URL prefix matching Message-ID: In-Reply-To: On 2025-10-01 at 20:56:49, M Hickford via GitGitGadget wrote: > diff --git a/Documentation/gitcredentials.adoc b/Documentation/gitcredentials.adoc > index 3337bb475d..60c2cc4ade 100644 > --- a/Documentation/gitcredentials.adoc > +++ b/Documentation/gitcredentials.adoc > @@ -150,9 +150,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"] > @@ -166,11 +165,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..*` > 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). This looks like a good description. > CONFIGURATION OPTIONS > diff --git a/t/t0300-credentials.sh b/t/t0300-credentials.sh > index cb3a85c7ff..07aa834d33 100755 > --- a/t/t0300-credentials.sh > +++ b/t/t0300-credentials.sh > @@ -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 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 \ I appreciate the additional tests here. -- brian m. carlson (they/them) Toronto, Ontario, CA