From 2266c8e6cde59207f7b6ecf0985829b8823f1b63 Mon Sep 17 00:00:00 2001 From: Kevin Lyda Date: Wed, 15 Feb 2017 15:18:40 +0000 Subject: Support git worktree. Git worktree works with the normal .git directory instead being a .git file with a reference to the primary git repository. --- src/password-store.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/password-store.sh b/src/password-store.sh index e8948a1..ce140db 100755 --- a/src/password-store.sh +++ b/src/password-store.sh @@ -28,14 +28,14 @@ export GIT_WORK_TREE="${PASSWORD_STORE_GIT:-$PREFIX}" # git_add_file() { - [[ -d $GIT_DIR ]] || return + [[ -e $GIT_DIR ]] || return git add "$1" || return [[ -n $(git status --porcelain "$1") ]] || return git_commit "$2" } git_commit() { local sign="" - [[ -d $GIT_DIR ]] || return + [[ -e $GIT_DIR ]] || return [[ $(git config --bool --get pass.signcommits) == "true" ]] && sign="-S" git commit $sign -m "$1" } @@ -310,7 +310,7 @@ cmd_init() { if [[ $# -eq 1 && -z $1 ]]; then [[ ! -f "$gpg_id" ]] && die "Error: $gpg_id does not exist and so cannot be removed." rm -v -f "$gpg_id" || exit 1 - if [[ -d $GIT_DIR ]]; then + if [[ -e $GIT_DIR ]]; then git rm -qr "$gpg_id" git_commit "Deinitialize ${gpg_id}${id_path:+ ($id_path)}." fi @@ -551,7 +551,7 @@ cmd_delete() { [[ $force -eq 1 ]] || yesno "Are you sure you would like to delete $path?" rm $recursive -f -v "$passfile" - if [[ -d $GIT_DIR && ! -e $passfile ]]; then + if [[ -e $GIT_DIR && ! -e $passfile ]]; then git rm -qr "$passfile" git_commit "Remove $path from store." fi @@ -592,7 +592,7 @@ cmd_copy_move() { mv $interactive -v "$old_path" "$new_path" || exit 1 [[ -e "$new_path" ]] && reencrypt_path "$new_path" - if [[ -d $GIT_DIR && ! -e $old_path ]]; then + if [[ -e $GIT_DIR && ! -e $old_path ]]; then git rm -qr "$old_path" git_add_file "$new_path" "Rename ${1} to ${2}." fi @@ -613,7 +613,7 @@ cmd_git() { git_add_file .gitattributes "Configure git repository for gpg file diff." git config --local diff.gpg.binary true git config --local diff.gpg.textconv "$GPG -d ${GPG_OPTS[*]}" - elif [[ -d $GIT_DIR ]]; then + elif [[ -e $GIT_DIR ]]; then tmpdir nowarn #Defines $SECURE_TMPDIR. We don't warn, because at most, this only copies encrypted files. export TMPDIR="$SECURE_TMPDIR" git "$@" -- cgit v1.2.3-59-g8ed1b