This series is against branch "next", which is currently ahead of
master by the following 7 commits
9c1ed5ab CLI: document handling of --config for external commands
0d33392f CLI: pass --config to external commands via NOTMUCH_CONFIG.
163dae81 test: initial tests for external commands
a5a3ed90 CLI: set NOTMUCH_CONFIG in hooks.
cd050fd7 test: add known broken tests for setting NOTMUCH_CONFIG in hooks
e7732d21 CLI: mention sexp-queries in help topics, alphabetize
383d9db2 CLI: simplify help command
These are all on the list, and will probably be applied to master
within the next week or so.
The changes since last version are not too huge (interdiff at the end).
Functional changes are as follows
- drop --version command for notmuch commit (people can use notmuch
--version to get the same info)
- check that there are tags with the given prefix in the database
already; if not require --force to proceed.
- enable --config handling (this is actually in the prerequisite
patches in branch next).
diff --git a/Makefile.local b/Makefile.local
index 0fadfb26..7699c208 100644
--- a/Makefile.local
+++ b/Makefile.local
@@ -45,6 +45,15 @@ $(SHA256_FILE): $(TAR_FILE)
$(DETACHED_SIG_FILE): $(TAR_FILE)
gpg --armor --detach-sign $^
+CLEAN := $(CLEAN) notmuch-git
+notmuch-git: notmuch-git.py
+ cp $< $@
+ chmod ugo+x $@
+
+CLEAN := $(CLEAN) nmbug
+nmbug: notmuch-git
+ ln -s $< $@
+
.PHONY: dist
dist: $(TAR_FILE)
@@ -294,7 +303,7 @@ endif
SRCS := $(SRCS) $(notmuch_client_srcs)
CLEAN := $(CLEAN) notmuch notmuch-shared $(notmuch_client_modules)
CLEAN := $(CLEAN) version.stamp notmuch-*.tar.gz.tmp
-CLEAN := $(CLEAN) .deps notmuch-git
+CLEAN := $(CLEAN) .deps
DISTCLEAN := $(DISTCLEAN) .first-build-message Makefile.config sh.config
sphinx.config
@@ -307,10 +316,6 @@ cppcheck:
@echo "No cppcheck found during configure; skipping static checking"
endif
-nmbug notmuch-git: notmuch-git.in
- sed s/@NOTMUCH_VERSION@/${VERSION}/ < notmuch-git.in > notmuch-git
- chmod ugo+rx notmuch-git
- ln -sf notmuch-git nmbug
DEPS := $(SRCS:%.c=.deps/%.d)
DEPS := $(DEPS:%.cc=.deps/%.d)
diff --git a/notmuch-git.in b/notmuch-git.py
old mode 100755
new mode 100644
similarity index 99%
rename from notmuch-git.in
rename to notmuch-git.py
index 6505c2e5..24ab3e5c
--- a/notmuch-git.in
+++ b/notmuch-git.py
@@ -40,8 +40,6 @@ from urllib.parse import quote as _quote
from urllib.parse import unquote as _unquote
import json as _json
-__version__ = '@NOTMUCH_VERSION@'
-
_LOG = _logging.getLogger('nmbug')
_LOG.setLevel(_logging.WARNING)
_LOG.addHandler(_logging.StreamHandler())
@@ -376,6 +374,10 @@ def check_safe_fraction(status):
safe=float(conf)
total = count_messages (TAG_PREFIX)
+ if total == 0:
+ _LOG.error('No existing tags with given prefix,
stopping.'.format(safe))
+ _LOG.error('Use --force to override.')
+ exit(1)
change = len(status['added'])+len(status['deleted'])+len(status['missing'])
fraction = change/total
_LOG.debug('total messages {:d}, change: {:d}, fraction:
{:f}'.format(total,change,fraction))
@@ -931,9 +933,6 @@ if __name__ == '__main__':
parser.add_argument(
'-N', '--nmbug', action='store_true',
help='Set defaults for --tag-prefix and --git-dir for the notmuch bug
tracker')
- parser.add_argument(
- '-v', '--version', action='version',
- version='%(prog)s {}'.format(__version__))
parser.add_argument(
'-l', '--log-level',
choices=['critical', 'error', 'warning', 'info', 'debug'],
diff --git a/notmuch.c b/notmuch.c
index a6c49bcb..c75b0188 100644
--- a/notmuch.c
+++ b/notmuch.c
@@ -201,8 +201,6 @@ static const command_t commands[] = {
{ "emacs-mua", NULL, 0,
"send mail with notmuch and emacs." },
#endif
- { "git", NULL, 0,
- "manage notmuch tags with git" },
{ "help", notmuch_help_command, NOTMUCH_COMMAND_CONFIG_CREATE, /* create
but don't save config */
"This message, or more detailed help for the named command." }
};
diff --git a/test/T850-git.sh b/test/T850-git.sh
index 508615e1..7ea50939 100755
--- a/test/T850-git.sh
+++ b/test/T850-git.sh
@@ -7,6 +7,9 @@ if [ $NOTMUCH_HAVE_SFSEXP -ne 1 ]; then
test_done
fi
+# be very careful using backup_database / restore_database in this
+# file, as they fool the cache invalidation checks in notmuch-git.
+
add_email_corpus
git config --global user.email [email protected]
@@ -28,6 +31,35 @@ test_expect_success "notmuch git -p '' -C tags.git clone
remote.git"
test_begin_subtest "initial commit needs force"
test_expect_code 1 "notmuch git -C tags.git commit"
+test_begin_subtest "committing new prefix requires force"
+notmuch git -C force-prefix.git init
+notmuch tag +new-prefix::foo
id:[email protected]
+test_expect_code 1 "notmuch git -l debug -p 'new-prefix::' -C force-prefix.git
commit"
+notmuch tag -new-prefix::foo
id:[email protected]
+
+test_begin_subtest "committing new prefix works with force"
+notmuch tag +new-prefix::foo
id:[email protected]
+notmuch git -l debug -p 'new-prefix::' -C force-prefix.git commit --force
+git -C force-prefix.git ls-tree -r --name-only HEAD | xargs dirname | sort -u
| sed s,tags/,id:, > OUTPUT
+notmuch tag -new-prefix::foo
id:[email protected]
+cat <<EOF>EXPECTED
+id:[email protected]
+EOF
+test_expect_equal_file_nonempty EXPECTED OUTPUT
+
+test_begin_subtest "checkout new prefix requires force"
+test_expect_code 1 "notmuch git -l debug -p 'new-prefix::' -C force-prefix.git
checkout"
+
+test_begin_subtest "checkout new prefix works with force"
+notmuch dump > BEFORE
+notmuch git -l debug -p 'new-prefix::' -C force-prefix.git checkout --force
+notmuch dump --include=tags
id:[email protected] | grep -v '^#' > OUTPUT
+notmuch restore < BEFORE
+cat <<EOF > EXPECTED
++inbox +new-prefix%3a%3afoo +signed +unread --
id:[email protected]
+EOF
+test_expect_equal_file_nonempty EXPECTED OUTPUT
+
test_begin_subtest "commit"
notmuch git -C tags.git commit --force
git -C tags.git ls-tree -r --name-only HEAD | xargs dirname | sort -u | sed
s,tags/,id:, > OUTPUT
@@ -138,6 +170,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:[email protected]
+notmuch --config=./notmuch-config.new git status > OUTPUT
+cat <<EOF > EXPECTED
+A [email protected] test
+EOF
+notmuch --config=notmuch-config.new git checkout
+test_expect_equal_file EXPECTED OUTPUT
+
test_begin_subtest "fetch"
notmuch tag +test2 id:[email protected]
notmuch git -C remote.git commit --force
_______________________________________________
notmuch mailing list -- [email protected]
To unsubscribe send an email to [email protected]