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-le...@notmuchmail.org