Skip to content

Commit bc31801

Browse files
committed
Improve git worktree support by using --git-common-dir to find git config path instead of --git-dir
1 parent 616f2fb commit bc31801

4 files changed

Lines changed: 12 additions & 12 deletions

File tree

tests/test_contexts.bats

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,10 @@ function teardown {
6666

6767
# Use --git-common-dir if available (Git post Nov 2014) otherwise --git-dir
6868
# shellcheck disable=SC2016
69-
[ "$(git config --get filter.crypt.clean)" = '"$(git config transcrypt.crypt-dir 2>/dev/null || printf ''%s/crypt'' ""$(git rev-parse --git-dir)"")"/transcrypt clean context=default %f' ]
70-
[ "$(git config --get filter.crypt.smudge)" = '"$(git config transcrypt.crypt-dir 2>/dev/null || printf ''%s/crypt'' ""$(git rev-parse --git-dir)"")"/transcrypt smudge context=default' ]
71-
[ "$(git config --get diff.crypt.textconv)" = '"$(git config transcrypt.crypt-dir 2>/dev/null || printf ''%s/crypt'' ""$(git rev-parse --git-dir)"")"/transcrypt textconv context=default' ]
72-
[ "$(git config --get merge.crypt.driver)" = '"$(git config transcrypt.crypt-dir 2>/dev/null || printf ''%s/crypt'' ""$(git rev-parse --git-dir)"")"/transcrypt merge context=default %O %A %B %L %P' ]
69+
[ "$(git config --get filter.crypt.clean)" = '"$(git config transcrypt.crypt-dir 2>/dev/null || printf ''%s/crypt'' ""$(git rev-parse --git-common-dir)"")"/transcrypt clean context=default %f' ]
70+
[ "$(git config --get filter.crypt.smudge)" = '"$(git config transcrypt.crypt-dir 2>/dev/null || printf ''%s/crypt'' ""$(git rev-parse --git-common-dir)"")"/transcrypt smudge context=default' ]
71+
[ "$(git config --get diff.crypt.textconv)" = '"$(git config transcrypt.crypt-dir 2>/dev/null || printf ''%s/crypt'' ""$(git rev-parse --git-common-dir)"")"/transcrypt textconv context=default' ]
72+
[ "$(git config --get merge.crypt.driver)" = '"$(git config transcrypt.crypt-dir 2>/dev/null || printf ''%s/crypt'' ""$(git rev-parse --git-common-dir)"")"/transcrypt merge context=default %O %A %B %L %P' ]
7373

7474
[[ $(git config --get filter.crypt.required) = "true" ]]
7575
[[ $(git config --get diff.crypt.cachetextconv) = "true" ]]

tests/test_crypt.bats

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ SECRET_CONTENT_ENC="U2FsdGVkX1/6ilR0PmJpAyCF7iG3+k4aBwbgVd48WaQXznsg42nXbQrlWsf/
224224
run cat .gitattributes
225225
[ "${lines[0]}" = "sensitive_file filter=crypt diff=crypt" ]
226226
# Check merge driver is not installed
227-
[ ! "$(git config --get merge.crypt.driver)" = '"$(git config transcrypt.crypt-dir 2>/dev/null || printf ''%s/crypt'' ""$(git rev-parse --git-dir)"")"/transcrypt merge %O %A %B %L %P' ]
227+
[ ! "$(git config --get merge.crypt.driver)" = '"$(git config transcrypt.crypt-dir 2>/dev/null || printf ''%s/crypt'' ""$(git rev-parse --git-common-dir)"")"/transcrypt merge %O %A %B %L %P' ]
228228

229229
run git config --get --local transcrypt.version
230230
[ "${lines[0]}" = "0.0" ]
@@ -254,7 +254,7 @@ SECRET_CONTENT_ENC="U2FsdGVkX1/6ilR0PmJpAyCF7iG3+k4aBwbgVd48WaQXznsg42nXbQrlWsf/
254254
[ "${lines[0]}" = "$SECRET_CONTENT" ]
255255

256256
# Check merge driver is installed
257-
[ "$(git config --get merge.crypt.driver)" = '"$(git config transcrypt.crypt-dir 2>/dev/null || printf ''%s/crypt'' ""$(git rev-parse --git-dir)"")"/transcrypt merge context=default %O %A %B %L %P' ]
257+
[ "$(git config --get merge.crypt.driver)" = '"$(git config transcrypt.crypt-dir 2>/dev/null || printf ''%s/crypt'' ""$(git rev-parse --git-common-dir)"")"/transcrypt merge context=default %O %A %B %L %P' ]
258258

259259
# Check .gitattributes is updated to include merge driver
260260
run cat .gitattributes

tests/test_init.bats

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@ SETUP_SKIP_INIT_TRANSCRYPT=1
3838

3939
# Use --git-common-dir if available (Git post Nov 2014) otherwise --git-dir
4040
# shellcheck disable=SC2016
41-
[ "$(git config --get filter.crypt.clean)" = '"$(git config transcrypt.crypt-dir 2>/dev/null || printf ''%s/crypt'' ""$(git rev-parse --git-dir)"")"/transcrypt clean context=default %f' ]
42-
[ "$(git config --get filter.crypt.smudge)" = '"$(git config transcrypt.crypt-dir 2>/dev/null || printf ''%s/crypt'' ""$(git rev-parse --git-dir)"")"/transcrypt smudge context=default' ]
43-
[ "$(git config --get diff.crypt.textconv)" = '"$(git config transcrypt.crypt-dir 2>/dev/null || printf ''%s/crypt'' ""$(git rev-parse --git-dir)"")"/transcrypt textconv context=default' ]
44-
[ "$(git config --get merge.crypt.driver)" = '"$(git config transcrypt.crypt-dir 2>/dev/null || printf ''%s/crypt'' ""$(git rev-parse --git-dir)"")"/transcrypt merge context=default %O %A %B %L %P' ]
41+
[ "$(git config --get filter.crypt.clean)" = '"$(git config transcrypt.crypt-dir 2>/dev/null || printf ''%s/crypt'' ""$(git rev-parse --git-common-dir)"")"/transcrypt clean context=default %f' ]
42+
[ "$(git config --get filter.crypt.smudge)" = '"$(git config transcrypt.crypt-dir 2>/dev/null || printf ''%s/crypt'' ""$(git rev-parse --git-common-dir)"")"/transcrypt smudge context=default' ]
43+
[ "$(git config --get diff.crypt.textconv)" = '"$(git config transcrypt.crypt-dir 2>/dev/null || printf ''%s/crypt'' ""$(git rev-parse --git-common-dir)"")"/transcrypt textconv context=default' ]
44+
[ "$(git config --get merge.crypt.driver)" = '"$(git config transcrypt.crypt-dir 2>/dev/null || printf ''%s/crypt'' ""$(git rev-parse --git-common-dir)"")"/transcrypt merge context=default %O %A %B %L %P' ]
4545

4646
[ "$(git config --get filter.crypt.required)" = "true" ]
4747
[ "$(git config --get diff.crypt.cachetextconv)" = "true" ]

transcrypt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ gather_repo_metadata() {
9797
readonly IS_BARE=$(git rev-parse --is-bare-repository 2>/dev/null || printf 'false')
9898

9999
# the current git repository's .git directory
100-
readonly RELATIVE_GIT_DIR=$(git rev-parse --git-dir 2>/dev/null || printf '')
100+
readonly RELATIVE_GIT_DIR=$(git rev-parse --git-common-dir 2>/dev/null || printf '')
101101
readonly GIT_DIR=$(realpath "$RELATIVE_GIT_DIR" 2>/dev/null)
102102

103103
# Respect transcrypt.crypt-dir if present. Default to crypt/ in Git dir
@@ -603,7 +603,7 @@ save_helper_hooks() {
603603
cat <<-'EOF' >"$pre_commit_hook_installed"
604604
#!/usr/bin/env bash
605605
# Transcrypt pre-commit hook: fail if secret file in staging lacks the magic prefix "Salted" in B64
606-
RELATIVE_GIT_DIR=$(git rev-parse --git-dir 2>/dev/null || printf '')
606+
RELATIVE_GIT_DIR=$(git rev-parse --git-common-dir 2>/dev/null || printf '')
607607
CRYPT_DIR=$(git config transcrypt.crypt-dir 2>/dev/null || printf '%s/crypt' "${RELATIVE_GIT_DIR}")
608608
"${CRYPT_DIR}/transcrypt" pre_commit
609609
EOF

0 commit comments

Comments
 (0)