Skip to content

Commit e14b341

Browse files
committed
Merge branch 'git-worktree-support'
* andreineculau-patch-2: Improve git worktree support by using `--git-common-dir` to find git config path instead of `--git-dir` better support for git worktree Tweaks support xxd, perl or printf with '%b' directive, in this order remove xxd dependency
2 parents 2d24794 + bc31801 commit e14b341

4 files changed

Lines changed: 13 additions & 13 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
@@ -298,7 +298,7 @@ SECRET_CONTENT_ENC="U2FsdGVkX1/6ilR0PmJpAyCF7iG3+k4aBwbgVd48WaQXznsg42nXbQrlWsf/
298298
run cat .gitattributes
299299
[ "${lines[0]}" = "sensitive_file filter=crypt diff=crypt" ]
300300
# Check merge driver is not installed
301-
[ ! "$(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' ]
301+
[ ! "$(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' ]
302302

303303
run git config --get --local transcrypt.version
304304
[ "${lines[0]}" = "0.0" ]
@@ -328,7 +328,7 @@ SECRET_CONTENT_ENC="U2FsdGVkX1/6ilR0PmJpAyCF7iG3+k4aBwbgVd48WaQXznsg42nXbQrlWsf/
328328
[ "${lines[0]}" = "$SECRET_CONTENT" ]
329329

330330
# Check merge driver is installed
331-
[ "$(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' ]
331+
[ "$(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' ]
332332

333333
# Check .gitattributes is updated to include merge driver
334334
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: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ gather_repo_metadata() {
9898
readonly IS_BARE=$(git rev-parse --is-bare-repository 2>/dev/null || printf 'false')
9999

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

104104
# Respect transcrypt.crypt-dir if present. Default to crypt/ in Git dir
@@ -649,7 +649,7 @@ save_helper_hooks() {
649649
cat <<-'EOF' >"$pre_commit_hook_installed"
650650
#!/usr/bin/env bash
651651
# Transcrypt pre-commit hook: fail if secret file in staging lacks the magic prefix "Salted" in B64
652-
RELATIVE_GIT_DIR=$(git rev-parse --git-dir 2>/dev/null || printf '')
652+
RELATIVE_GIT_DIR=$(git rev-parse --git-common-dir 2>/dev/null || printf '')
653653
CRYPT_DIR=$(git config transcrypt.crypt-dir 2>/dev/null || printf '%s/crypt' "${RELATIVE_GIT_DIR}")
654654
"${CRYPT_DIR}/transcrypt" pre_commit
655655
EOF
@@ -702,7 +702,7 @@ save_configuration() {
702702

703703
# write the filter settings. Sorry for the horrific quote escaping below...
704704
# shellcheck disable=SC2016
705-
transcrypt_path='"$(git config transcrypt.crypt-dir 2>/dev/null || printf %s/crypt ""$(git rev-parse --git-dir)"")"/transcrypt'
705+
transcrypt_path='"$(git config transcrypt.crypt-dir 2>/dev/null || printf %s/crypt ""$(git rev-parse --git-common-dir)"")"/transcrypt'
706706

707707
# Ensure filter attributes are always set for the default (unspecified) context
708708
git config filter.crypt.clean "$transcrypt_path clean context=default %f"

0 commit comments

Comments
 (0)