mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
CLI/git: support configuration for repo location / prefix
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.
This commit is contained in:
parent
8ed68c1bbe
commit
99e85823c8
4 changed files with 93 additions and 3 deletions
|
@ -107,6 +107,14 @@ paths are presumed relative to `$HOME` for items in section
|
||||||
|
|
||||||
Default: see :ref:`database`
|
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
|
.. nmconfig:: index.decrypt
|
||||||
|
|
||||||
Policy for decrypting encrypted messages during indexing. Must be
|
Policy for decrypting encrypted messages during indexing. Must be
|
||||||
|
|
|
@ -246,6 +246,8 @@ value to locate the git repository.
|
||||||
|
|
||||||
- Environment variable :envvar:`NOTMUCH_GIT_DIR`.
|
- Environment variable :envvar:`NOTMUCH_GIT_DIR`.
|
||||||
|
|
||||||
|
- Configuration item :nmconfig:`git.path`
|
||||||
|
|
||||||
- If invoked as `nmbug` or with the :option:`--nmbug` option,
|
- If invoked as `nmbug` or with the :option:`--nmbug` option,
|
||||||
:code:`$HOME/.nmbug`; otherwise
|
:code:`$HOME/.nmbug`; otherwise
|
||||||
:code:`$XDG_DATA_HOME/notmuch/$NOTMUCH_PROFILE/git`.
|
:code:`$XDG_DATA_HOME/notmuch/$NOTMUCH_PROFILE/git`.
|
||||||
|
@ -262,6 +264,8 @@ value to define the tag prefix.
|
||||||
|
|
||||||
- Environment variable :envvar:`NOTMUCH_GIT_PREFIX`.
|
- Environment variable :envvar:`NOTMUCH_GIT_PREFIX`.
|
||||||
|
|
||||||
|
- Configuration item :nmconfig:`git.tag_prefix`.
|
||||||
|
|
||||||
- If invoked as `nmbug` or with the :option:`--nmbug` option,
|
- If invoked as `nmbug` or with the :option:`--nmbug` option,
|
||||||
:code:`notmuch::`, otherwise the empty string.
|
:code:`notmuch::`, otherwise the empty string.
|
||||||
|
|
||||||
|
|
|
@ -1019,7 +1019,9 @@ if __name__ == '__main__':
|
||||||
if nmbug_mode:
|
if nmbug_mode:
|
||||||
default = _os.path.join('~', '.nmbug')
|
default = _os.path.join('~', '.nmbug')
|
||||||
else:
|
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))
|
NOTMUCH_GIT_DIR = _os.path.expanduser(_os.getenv('NOTMUCH_GIT_DIR', default))
|
||||||
|
|
||||||
|
@ -1033,7 +1035,7 @@ if __name__ == '__main__':
|
||||||
if nmbug_mode:
|
if nmbug_mode:
|
||||||
prefix = 'notmuch::'
|
prefix = 'notmuch::'
|
||||||
else:
|
else:
|
||||||
prefix = ''
|
prefix = _notmuch_config_get ('git.tag_prefix')
|
||||||
|
|
||||||
TAG_PREFIX = _os.getenv('NOTMUCH_GIT_PREFIX', prefix)
|
TAG_PREFIX = _os.getenv('NOTMUCH_GIT_PREFIX', prefix)
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,13 @@ git config --global user.name "Notmuch Test Suite"
|
||||||
test_begin_subtest "init"
|
test_begin_subtest "init"
|
||||||
test_expect_success "notmuch git -p '' -C remote.git 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_begin_subtest "clone"
|
||||||
test_expect_success "notmuch git -p '' -C tags.git clone remote.git"
|
test_expect_success "notmuch git -p '' -C tags.git clone remote.git"
|
||||||
|
|
||||||
|
@ -102,6 +109,17 @@ EOF
|
||||||
notmuch git -C tags.git checkout
|
notmuch git -C tags.git checkout
|
||||||
test_expect_equal_file EXPECTED OUTPUT
|
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"
|
test_begin_subtest "fetch"
|
||||||
notmuch tag +test2 id:20091117190054.GU3165@dottiness.seas.harvard.edu
|
notmuch tag +test2 id:20091117190054.GU3165@dottiness.seas.harvard.edu
|
||||||
notmuch git -C remote.git commit
|
notmuch git -C remote.git commit
|
||||||
|
@ -175,6 +193,32 @@ repository = CWD/remote.git
|
||||||
EOF
|
EOF
|
||||||
test_expect_equal_file EXPECTED OUTPUT
|
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"
|
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
|
NOTMUCH_GIT_PREFIX=foo:: "$NOTMUCH_BUILDDIR"/nmbug -ldebug status |& grep '^prefix' | notmuch_dir_sanitize > OUTPUT
|
||||||
cat <<EOF > EXPECTED
|
cat <<EOF > EXPECTED
|
||||||
|
@ -182,8 +226,19 @@ prefix = foo::
|
||||||
EOF
|
EOF
|
||||||
test_expect_equal_file EXPECTED OUTPUT
|
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_GIT_PREFIX=env:: notmuch git -ldebug status |& grep '^prefix' | notmuch_dir_sanitize > OUTPUT
|
||||||
|
notmuch config set git.path
|
||||||
cat <<EOF > EXPECTED
|
cat <<EOF > EXPECTED
|
||||||
prefix = env::
|
prefix = env::
|
||||||
EOF
|
EOF
|
||||||
|
@ -210,4 +265,25 @@ CWD/$repo
|
||||||
EOF
|
EOF
|
||||||
test_expect_equal_file EXPECTED OUTPUT
|
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
|
test_done
|
||||||
|
|
Loading…
Reference in a new issue