v3 changes are minor (besides test_cmp_config), mostly document cleanup. Diff diff --git a/Documentation/config.txt b/Documentation/config.txt index 44407e69db..e036ff7b86 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -4,7 +4,7 @@ CONFIGURATION FILE The Git configuration file contains a number of variables that affect the Git commands' behavior. The files `.git/config` and optionally `config.worktree` (see `extensions.worktreeConfig` below) in each -repository is used to store the configuration for that repository, and +repository are used to store the configuration for that repository, and `$HOME/.gitconfig` is used to store a per-user configuration as fallback values for the `.git/config` file. The file `/etc/gitconfig` can be used to store a system-wide default configuration. diff --git a/Documentation/git-worktree.txt b/Documentation/git-worktree.txt index aa88278dde..408c87c9ef 100644 --- a/Documentation/git-worktree.txt +++ b/Documentation/git-worktree.txt @@ -221,7 +221,7 @@ $ git config extensions.worktreeConfig true In this mode, specific configuration stays in the path pointed by `git rev-parse --git-path config.worktree`. You can add or update configuration in this file with `git config --worktree`. Older Git -versions may will refuse to access repositories with this extension. +versions will refuse to access repositories with this extension. Note that in this file, the exception for `core.bare` and `core.worktree` is gone. If you have them in $GIT_DIR/config before, you must move @@ -283,6 +283,9 @@ to `/path/main/.git/worktrees/test-next` then a file named `test-next` entry from being pruned. See linkgit:gitrepository-layout[5] for details. +When extensions.worktreeConfig is enabled, the config file +`.git/worktrees/<id>/config.worktree` is read after `.git/config` is. + LIST OUTPUT FORMAT ------------------ The worktree list command has two output formats. The default format shows the diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh index 4cd7fb8fdf..2149b88392 100644 --- a/t/test-lib-functions.sh +++ b/t/test-lib-functions.sh @@ -747,28 +747,27 @@ test_cmp() { $GIT_TEST_CMP "$@" } -# similar to test_cmp but $2 is a config key instead of actual value -# it can also accept -C to read from a different repo, e.g. +# Check that the given config key has the expected value. # -# test_cmp_config -C xyz foo core.bar +# test_cmp_config [-C <dir>] <expected-value> +# [<git-config-options>...] <config-key> # -# is sort of equivalent of +# for example to check that the value of core.bar is foo +# +# test_cmp_config foo core.bar # -# test "foo" = "$(git -C xyz core.bar)" - test_cmp_config() { - if [ "$1" = "-C" ] + local GD + if test "$1" = "-C" then shift && GD="-C $1" && shift - else - GD= fi && - echo "$1" >expected && + printf "%s\n" "$1" >expect.config && shift && - git $GD config "$@" >actual && - test_cmp expected actual + git $GD config "$@" >actual.config && + test_cmp expect.config actual.config } # test_cmp_bin - helper to compare binary files Nguyễn Thái Ngọc Duy (2): t1300: extract and use test_cmp_config() worktree: add per-worktree config files Documentation/config.txt | 12 +++- Documentation/git-config.txt | 26 ++++++--- Documentation/git-worktree.txt | 33 +++++++++++ Documentation/gitrepository-layout.txt | 8 +++ builtin/config.c | 19 ++++++- cache.h | 2 + config.c | 11 ++++ environment.c | 1 + setup.c | 40 ++++++++++--- t/t1300-config.sh | 79 +++++++------------------- t/t2029-worktree-config.sh | 79 ++++++++++++++++++++++++++ t/test-lib-functions.sh | 23 ++++++++ 12 files changed, 255 insertions(+), 78 deletions(-) create mode 100755 t/t2029-worktree-config.sh -- 2.19.0.342.gc057aaf40a.dirty