1#!/bin/sh 2 3test_description="config file in multi worktree" 4 5. ./test-lib.sh 6 7test_expect_success 'setup' ' 8 test_commit start 9' 10 11test_expect_success 'config --worktree in single worktree' ' 12 git config --worktree foo.bar true && 13 test_cmp_config true foo.bar 14' 15 16test_expect_success 'add worktrees' ' 17 git worktree add wt1 && 18 git worktree add wt2 19' 20 21test_expect_success 'config --worktree without extension' ' 22 test_must_fail git config --worktree foo.bar false 23' 24 25test_expect_success 'enable worktreeConfig extension' ' 26 git config core.repositoryformatversion 1 && 27 git config extensions.worktreeConfig true && 28 test_cmp_config true extensions.worktreeConfig && 29 test_cmp_config 1 core.repositoryformatversion 30' 31 32test_expect_success 'config is shared as before' ' 33 git config this.is shared && 34 test_cmp_config shared this.is && 35 test_cmp_config -C wt1 shared this.is && 36 test_cmp_config -C wt2 shared this.is 37' 38 39test_expect_success 'config is shared (set from another worktree)' ' 40 git -C wt1 config that.is also-shared && 41 test_cmp_config also-shared that.is && 42 test_cmp_config -C wt1 also-shared that.is && 43 test_cmp_config -C wt2 also-shared that.is 44' 45 46test_expect_success 'config private to main worktree' ' 47 git config --worktree this.is for-main && 48 test_cmp_config for-main this.is && 49 test_cmp_config -C wt1 shared this.is && 50 test_cmp_config -C wt2 shared this.is 51' 52 53test_expect_success 'config private to linked worktree' ' 54 git -C wt1 config --worktree this.is for-wt1 && 55 test_cmp_config for-main this.is && 56 test_cmp_config -C wt1 for-wt1 this.is && 57 test_cmp_config -C wt2 shared this.is 58' 59 60test_expect_success 'core.bare no longer for main only' ' 61 test_config core.bare true && 62 test "$(git rev-parse --is-bare-repository)" = true && 63 test "$(git -C wt1 rev-parse --is-bare-repository)" = true && 64 test "$(git -C wt2 rev-parse --is-bare-repository)" = true 65' 66 67test_expect_success 'per-worktree core.bare is picked up' ' 68 git -C wt1 config --worktree core.bare true && 69 test "$(git rev-parse --is-bare-repository)" = false && 70 test "$(git -C wt1 rev-parse --is-bare-repository)" = true && 71 test "$(git -C wt2 rev-parse --is-bare-repository)" = false 72' 73 74test_expect_success 'config.worktree no longer read without extension' ' 75 git config --unset extensions.worktreeConfig && 76 test_cmp_config shared this.is && 77 test_cmp_config -C wt1 shared this.is && 78 test_cmp_config -C wt2 shared this.is 79' 80 81test_done 82