Message ID | cover.1642527965.git.jonathantanmy@google.com (mailing list archive) |
---|---|
Headers | show |
Series | Conditional config includes based on remote URL | expand |
On Tue, Jan 18, 2022 at 9:47 AM Jonathan Tan <jonathantanmy@google.com> wrote: > > Thanks everyone for your review. v8 follows Elijah Newren's comments > about making URLs more identifiable in tests, and also including an > example in documentation. Thanks for that; this version looks good to me. > Jonathan Tan (2): > config: make git_config_include() static > config: include file if remote URL matches a glob > > Documentation/config.txt | 35 +++++++++++ > config.c | 132 ++++++++++++++++++++++++++++++++++++--- > config.h | 46 ++++---------- > t/t1300-config.sh | 118 ++++++++++++++++++++++++++++++++++ > 4 files changed, 290 insertions(+), 41 deletions(-) > > Range-diff against v7: > 1: b2dcae03ed = 1: b2dcae03ed config: make git_config_include() static > 2: 7c70089074 ! 2: 6691e39c82 config: include file if remote URL matches a glob > @@ Documentation/config.txt: all branches that begin with `foo/`. This is useful if > A few more notes on matching via `gitdir` and `gitdir/i`: > > * Symlinks in `$GIT_DIR` are not resolved before matching. > +@@ Documentation/config.txt: Example > + ; currently checked out > + [includeIf "onbranch:foo-branch"] > + path = foo.inc > ++ > ++; include only if a remote with the given URL exists (note > ++; that such a URL may be provided later in a file or in a > ++; file read after this file is read, as seen in this example) > ++[includeIf "hasconfig:remote.*.url:https://example.com/**"] > ++ path = foo.inc > ++[remote "origin"] > ++ url = https://example.com/git > + ---- > + > + Values > > ## config.c ## > @@ config.c: struct config_include_data { > @@ t/t1300-config.sh: test_expect_success '--get and --get-all with --fixed-value' > + that = that-is-not-included > + EOF > + cat >>hasremoteurlTest/.git/config <<-EOF && > -+ [includeIf "hasconfig:remote.*.url:foo"] > ++ [includeIf "hasconfig:remote.*.url:foourl"] > + path = "$(pwd)/include-this" > -+ [includeIf "hasconfig:remote.*.url:bar"] > ++ [includeIf "hasconfig:remote.*.url:barurl"] > + path = "$(pwd)/dont-include-that" > + [remote "foo"] > -+ url = foo > ++ url = foourl > + EOF > + > + echo this-is-included >expect-this && > @@ t/t1300-config.sh: test_expect_success '--get and --get-all with --fixed-value' > + EOF > + cat >>hasremoteurlTest/.git/config <<-EOF && > + [remote "foo"] > -+ url = foo > ++ url = foourl > + [user] > + one = main-config > + two = main-config > -+ [includeIf "hasconfig:remote.*.url:foo"] > ++ [includeIf "hasconfig:remote.*.url:foourl"] > + path = "$(pwd)/include-two-three" > + [user] > + three = main-config > @@ t/t1300-config.sh: test_expect_success '--get and --get-all with --fixed-value' > + > + cat >include-with-url <<-\EOF && > + [remote "bar"] > -+ url = bar > ++ url = barurl > + EOF > + cat >>hasremoteurlTest/.git/config <<-EOF && > -+ [includeIf "hasconfig:remote.*.url:foo"] > ++ [includeIf "hasconfig:remote.*.url:foourl"] > + path = "$(pwd)/include-with-url" > + EOF > + > -- > 2.34.1.703.g22d0c6ccf7-goog >