This commit allows to use -p/--path for `pass git` the same way as
`pass init` accepts it.
---
man/pass.1 | 4 +++-
src/password-store.sh | 13 +++++++++++++
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/man/pass.1 b/man/pass.1
index a555dcb..09ada0c 100644
--- a/man/pass.1
+++ b/man/pass.1
@@ -164,7 +164,7 @@ silently overwrite \fInew-path\fP if it exists. If
\fInew-path\fP ends in a
trailing \fI/\fP, it is always treated as a directory. Passwords are
selectively
reencrypted to the corresponding keys of their new destination.
.TP
-\fBgit\fP \fIgit-command-args\fP...
+\fBgit\fP [ \fI--path=sub-folder\fP, \fI-p sub-folder\fP ]
\fIgit-command-args\fP...
If the password store is a git repository, pass \fIgit-command-args\fP as
arguments to
.BR git (1)
using the password store as the git repository. If \fIgit-command-args\fP is
\fBinit\fP,
@@ -173,6 +173,8 @@ store to the repository in an initial commit. If the git
config key \fIpass.sign
is set to \fItrue\fP, then all commits will be signed using
\fIuser.signingkey\fP or the
default git signing key. This config key may be turned on using:
.B `pass git config --bool --add pass.signcommits true`
+If \fI--path\fP or \fI-p\fP is specified, the git command is executed in that
specific
+sub folder of the password store.
.TP
\fBhelp\fP
Show usage message.
diff --git a/src/password-store.sh b/src/password-store.sh
index 22e818f..2acacef 100755
--- a/src/password-store.sh
+++ b/src/password-store.sh
@@ -650,6 +650,19 @@ cmd_copy_move() {
}
cmd_git() {
+ local opts id_path=""
+ opts="$($GETOPT -o p: -l path: -n "$PROGRAM git" -- "$@")"
+ local err=$?
+ eval set -- "$opts"
+ while true; do case $1 in
+ -p|--path) id_path="$2"; shift 2 ;;
+ --) shift; break ;;
+ esac done
+
+ [[ -n $id_path ]] && check_sneaky_paths "$id_path"
+ [[ -n $id_path && ! -d $PREFIX/$id_path && -e $PREFIX/$id_path ]] &&
die "Error: $PREFIX/$id_path exists but is not a directory."
+
+ local PREFIX="$PREFIX/$id_path"
set_git "$PREFIX/"
if [[ $1 == "init" ]]; then
INNER_GIT_DIR="$PREFIX"
--
2.37.2