unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* (no subject)
@ 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
                   ` (17 more replies)
  0 siblings, 18 replies; 19+ messages in thread
From: David Bremner @ 2022-06-04 17:22 UTC (permalink / raw)
  To: notmuch

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 notmuch@example.org
@@ -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:20091117190054.GU3165@dottiness.seas.harvard.edu
+test_expect_code 1 "notmuch git -l debug -p 'new-prefix::' -C force-prefix.git commit"
+notmuch tag -new-prefix::foo id:20091117190054.GU3165@dottiness.seas.harvard.edu
+
+test_begin_subtest "committing new prefix works with force"
+notmuch tag +new-prefix::foo id:20091117190054.GU3165@dottiness.seas.harvard.edu
+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:20091117190054.GU3165@dottiness.seas.harvard.edu
+cat <<EOF>EXPECTED
+id:20091117190054.GU3165@dottiness.seas.harvard.edu
+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:20091117190054.GU3165@dottiness.seas.harvard.edu | grep -v '^#' > OUTPUT
+notmuch restore < BEFORE
+cat <<EOF > EXPECTED
++inbox +new-prefix%3a%3afoo +signed +unread -- id:20091117190054.GU3165@dottiness.seas.harvard.edu
+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: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 --force

^ permalink raw reply related	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2022-06-18 11:21 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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 ` [PATCH v3 15/17] CLI/git: support configuration for repo location / prefix David Bremner
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

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).