This is probably more convenient than always passing a command line
argument.
Use notmuch-config for consistency with other notmuch CLI tools.
---
doc/man1/notmuch-config.rst | 8 +++++
doc/man1/notmuch-git.rst | 4 +++
notmuch-git.in | 6 ++--
test/T850-git.sh | 67 ++++++++++++++++++++++++++++++++++++-
4 files changed, 82 insertions(+), 3 deletions(-)
diff --git a/doc/man1/notmuch-config.rst b/doc/man1/notmuch-config.rst
index 36d48725..e2e9a632 100644
--- a/doc/man1/notmuch-config.rst
+++ b/doc/man1/notmuch-config.rst
@@ -107,6 +107,14 @@ paths are presumed relative to `$HOME` for items in section
Default: see :ref:`database`
+.. nmconfig:: git.path
+
+ Default location for git repository for :any:`notmuch-git`.
+
+.. nmconfig:: git.tag_prefix
+
+ Default tag prefix (filter) for :any:`notmuch-git`.
+
.. nmconfig:: index.decrypt
Policy for decrypting encrypted messages during indexing. Must be
diff --git a/doc/man1/notmuch-git.rst b/doc/man1/notmuch-git.rst
index 6a2d7fcd..ad859b80 100644
--- a/doc/man1/notmuch-git.rst
+++ b/doc/man1/notmuch-git.rst
@@ -246,6 +246,8 @@ value to locate the git repository.
- Environment variable :envvar:`NOTMUCH_GIT_DIR`.
+- Configuration item :nmconfig:`git.path`
+
- If invoked as `nmbug` or with the :option:`--nmbug` option,
:code:`$HOME/.nmbug`; otherwise
:code:`$XDG_DATA_HOME/notmuch/$NOTMUCH_PROFILE/git`.
@@ -262,6 +264,8 @@ value to define the tag prefix.
- Environment variable :envvar:`NOTMUCH_GIT_PREFIX`.
+- Configuration item :nmconfig:`git.tag_prefix`.
+
- If invoked as `nmbug` or with the :option:`--nmbug` option,
:code:`notmuch::`, otherwise the empty string.
diff --git a/notmuch-git.in b/notmuch-git.in
index 35820eb2..3e5205e8 100755
--- a/notmuch-git.in
+++ b/notmuch-git.in
@@ -1024,7 +1024,9 @@ if __name__ == '__main__':
if nmbug_mode:
default = _os.path.join('~', '.nmbug')
else:
- default = xdg_data_path(notmuch_profile)
+ default = _notmuch_config_get ('git.path')
+ if default == '':
+ default = xdg_data_path(notmuch_profile)
NOTMUCH_GIT_DIR = _os.path.expanduser(_os.getenv('NOTMUCH_GIT_DIR', default))
@@ -1038,7 +1040,7 @@ if __name__ == '__main__':
if nmbug_mode:
prefix = 'notmuch::'
else:
- prefix = ''
+ prefix = _notmuch_config_get ('git.tag_prefix')
TAG_PREFIX = _os.getenv('NOTMUCH_GIT_PREFIX', prefix)
diff --git a/test/T850-git.sh b/test/T850-git.sh
index 98233055..8f91b612 100755
--- a/test/T850-git.sh
+++ b/test/T850-git.sh
@@ -15,6 +15,13 @@ git config --global user.name "Notmuch Test Suite"
test_begin_subtest "init"
test_expect_success "notmuch git -p '' -C remote.git init"
+test_begin_subtest "init (git.path)"
+notmuch config set git.path configured.git
+notmuch git init
+notmuch config set git.path
+output=$(git -C configured.git rev-parse --is-bare-repository)
+test_expect_equal "$output" "true"
+
test_begin_subtest "clone"
test_expect_success "notmuch git -p '' -C tags.git clone remote.git"
@@ -175,6 +182,32 @@ repository = CWD/remote.git
EOF
test_expect_equal_file EXPECTED OUTPUT
+
+test_begin_subtest "env variable NOTMUCH_GIT_DIR overrides config when invoked as 'nmbug'"
+notmuch config set git.path `pwd`/bar
+NOTMUCH_GIT_DIR=`pwd`/remote.git "$NOTMUCH_BUILDDIR"/nmbug -ldebug status |& grep '^repository' | notmuch_dir_sanitize > OUTPUT
+notmuch config set git.path
+cat <<EOF > EXPECTED
+repository = CWD/remote.git
+EOF
+test_expect_equal_file EXPECTED OUTPUT
+
+test_begin_subtest "env variable NOTMUCH_GIT_DIR overrides config when invoked as 'notmuch git'"
+notmuch config set git.path `pwd`/bar
+NOTMUCH_GIT_DIR=`pwd`/remote.git notmuch git -ldebug status |& grep '^repository' | notmuch_dir_sanitize > OUTPUT
+notmuch config set git.path
+cat <<EOF > EXPECTED
+repository = CWD/remote.git
+EOF
+test_expect_equal_file EXPECTED OUTPUT
+
+test_begin_subtest "env variable NOTMUCH_GIT_PREFIX works when invoked as 'nmbug'"
+NOTMUCH_GIT_PREFIX=env:: "$NOTMUCH_BUILDDIR"/nmbug -ldebug status |& grep '^prefix' | notmuch_dir_sanitize > OUTPUT
+cat <<EOF > EXPECTED
+prefix = env::
+EOF
+test_expect_equal_file EXPECTED OUTPUT
+
test_begin_subtest "env variable NOTMUCH_GIT_PREFIX works when invoked as nmbug"
NOTMUCH_GIT_PREFIX=foo:: "$NOTMUCH_BUILDDIR"/nmbug -ldebug status |& grep '^prefix' | notmuch_dir_sanitize > OUTPUT
cat <<EOF > EXPECTED
@@ -182,8 +215,19 @@ prefix = foo::
EOF
test_expect_equal_file EXPECTED OUTPUT
-test_begin_subtest "env variable NOTMUCH_GIT_PREFIX works when invoked as 'notmuch git'"
+test_begin_subtest "env variable NOTMUCH_GIT_PREFIX overrides config when invoked as 'nmbug'"
+notmuch config set git.tag_prefix config::
+NOTMUCH_GIT_PREFIX=env:: "$NOTMUCH_BUILDDIR"/nmbug -ldebug status |& grep '^prefix' | notmuch_dir_sanitize > OUTPUT
+notmuch config set git.path
+cat <<EOF > EXPECTED
+prefix = env::
+EOF
+test_expect_equal_file EXPECTED OUTPUT
+
+test_begin_subtest "env variable NOTMUCH_GIT_PREFIX overrides config when invoked as 'notmuch git'"
+notmuch config set git.tag_prefix config::
NOTMUCH_GIT_PREFIX=env:: notmuch git -ldebug status |& grep '^prefix' | notmuch_dir_sanitize > OUTPUT
+notmuch config set git.path
cat <<EOF > EXPECTED
prefix = env::
EOF
@@ -210,4 +254,25 @@ CWD/$repo
EOF
test_expect_equal_file EXPECTED OUTPUT
+test_begin_subtest "init, configured location"
+repo=configured-tags
+notmuch config set git.path `pwd`/$repo
+notmuch git -ldebug init |& grep '^repository' | notmuch_dir_sanitize > OUTPUT
+notmuch config set git.path
+git -C $repo rev-parse --absolute-git-dir | notmuch_dir_sanitize >> OUTPUT
+cat <<EOF > EXPECTED
+repository = CWD/$repo
+CWD/$repo
+EOF
+test_expect_equal_file EXPECTED OUTPUT
+
+test_begin_subtest "configured tag prefix"
+notmuch config set git.tag_prefix test::
+notmuch git -ldebug status |& grep '^prefix' > OUTPUT
+notmuch config set git.tag_prefix
+cat <<EOF > EXPECTED
+prefix = test::
+EOF
+test_expect_equal_file EXPECTED OUTPUT
+
test_done
--
2.35.2
_______________________________________________
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-leave@notmuchmail.org