unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
From: David Bremner <david@tethera.net>
To: notmuch@notmuchmail.org
Subject: [PATCH v3 15/17] CLI/git: support configuration for repo location / prefix
Date: Sat,  4 Jun 2022 14:23:11 -0300	[thread overview]
Message-ID: <20220604172313.1149879-16-david@tethera.net> (raw)
In-Reply-To: <20220604172313.1149879-1-david@tethera.net>

This is probably more convenient than always passing a command line
argument.

Use notmuch-config for consistency with other notmuch CLI tools.

Now that there is something relevant in the config files, test the
--config option.
---
 doc/man1/notmuch-config.rst |  8 ++++
 doc/man1/notmuch-git.rst    |  4 ++
 notmuch-git.py              |  6 ++-
 test/T850-git.sh            | 78 ++++++++++++++++++++++++++++++++++++-
 4 files changed, 93 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.py b/notmuch-git.py
index 9d5c7876..35785336 100644
--- a/notmuch-git.py
+++ b/notmuch-git.py
@@ -1019,7 +1019,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))
 
@@ -1033,7 +1035,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..f8537064 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"
 
@@ -102,6 +109,17 @@ EOF
 notmuch git -C tags.git checkout
 test_expect_equal_file EXPECTED OUTPUT
 
+test_begin_subtest "status (global config argument)"
+cp notmuch-config notmuch-config.new
+notmuch --config=notmuch-config.new config set git.path tags.git
+notmuch tag +test id:20091117190054.GU3165@dottiness.seas.harvard.edu
+notmuch --config=./notmuch-config.new git status > OUTPUT
+cat <<EOF > EXPECTED
+A	20091117190054.GU3165@dottiness.seas.harvard.edu	test
+EOF
+notmuch --config=notmuch-config.new git checkout
+test_expect_equal_file EXPECTED OUTPUT
+
 test_begin_subtest "fetch"
 notmuch tag +test2 id:20091117190054.GU3165@dottiness.seas.harvard.edu
 notmuch git -C remote.git commit
@@ -175,6 +193,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 +226,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 +265,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

  parent reply	other threads:[~2022-06-04 17:24 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-04 17:22 David Bremner
2022-06-04 17:22 ` [PATCH v3 01/17] nmbug: promote to user tool "notmuch-git" David Bremner
2022-06-04 17:22 ` [PATCH v3 02/17] CLI/git: drop support for python < 3.2 David Bremner
2022-06-04 17:22 ` [PATCH v3 03/17] notmuch-git: add --git-dir, --tag-prefix arguments David Bremner
2022-06-04 17:23 ` [PATCH v3 04/17] CLI/git: make existance of config branch optional on clone David Bremner
2022-06-04 17:23 ` [PATCH v3 05/17] CLI/git: Add an 'init' command David Bremner
2022-06-04 17:23 ` [PATCH v3 06/17] test: initial tests for notmuch-git David Bremner
2022-06-04 17:23 ` [PATCH v3 07/17] CLI/git: rename environment variables David Bremner
2022-06-04 17:23 ` [PATCH v3 08/17] CLI/git: suppress warnings about initial branch name David Bremner
2022-06-04 17:23 ` [PATCH v3 09/17] test/git: add known broken test for tag with quotes David Bremner
2022-06-04 17:23 ` [PATCH v3 10/17] CLI/git: replace enumeration of tags with sexp query David Bremner
2022-06-04 17:23 ` [PATCH v3 11/17] CLI/git: add @timed decorator, time a few functions David Bremner
2022-06-04 17:23 ` [PATCH v3 12/17] CLI/git: cache git indices David Bremner
2022-06-04 17:23 ` [PATCH v3 13/17] doc/notmuch-git: initial documentation David Bremner
2022-06-04 17:23 ` [PATCH v3 14/17] CLI/git: change defaults for repo and prefix David Bremner
2022-06-04 17:23 ` David Bremner [this message]
2022-06-04 17:23 ` [PATCH v3 16/17] CLI/git: add safety checks for checkout and commit David Bremner
2022-06-04 17:23 ` [PATCH v3 17/17] debian: install notmuch-git David Bremner
2022-06-18 11:21 ` notmuch-git v3 David Bremner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://notmuchmail.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220604172313.1149879-16-david@tethera.net \
    --to=david@tethera.net \
    --cc=notmuch@notmuchmail.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).