aboutsummaryrefslogtreecommitdiff
path: root/notmuch-git.py
AgeCommit message (Collapse)Author
2024-07-25CLI/git: add reset commandDavid Bremner
Sometimes merging is not what we want with tags; in particular it tends to keep tags in the local repo that have been removed elsewhere. This commit provides a new reset command; the reset itself is trivial, but the work is to provide a safety check that uses the existing --force and git.safe_fraction machinery.
2024-01-14CLI/git: remove no-op format() callJakub Wilk
2024-01-14CLI/git: fix name errorJakub Wilk
2024-01-14CLI/git: remove unused importJakub Wilk
shutil was used only for the tempfile.TemporaryDirectory backport, which was removed in commit b7c31f658121a0cf ("CLI/git: drop support for python < 3.2").
2022-12-27CLI/git: use --exclude=false when calling notmuch-searchDavid Bremner
We use notmuch search in two places in notmuch-git.py: to find which tags have a given prefix, and to see if message with given id exists locally. In both cases we do not want the presence of exclude tags (e.g. deleted) to change the results.
2022-07-16CLI/git: opportunistically use bindings to check for known messagesDavid Bremner
If the bindings are installed, use them to avoid one exec of notmuch search per message.
2022-07-16CLI/git: current cache contents of indexDavid Bremner
Rather than shelling out once per message to get the list of files corresponding to tags, it is much faster (although potentially a bit memory intensive) to read them all at once.
2022-07-07CLI/git: add --format-version argument to init subcommandDavid Bremner
This is primarily intended to support testing upward compatibility with legacy repos.
2022-07-07CL/git: add format version 1David Bremner
The original nmbug format (now called version 0) creates 1 subdirectory of 'tags/' per message. This causes problems for more than (roughly) 100k messages. Version 1 introduces 2 layers of hashed directories. This scheme was chose to balance the number of subdirectories with the number of extra directories (and git objects) created via hashing. This should be upward compatible in the sense that old repositories will continue to work with the updated notmuch-git.
2022-07-07CLI/git: replace most mentions of nmbugDavid Bremner
Particularly in help messages, nmbug is confusing for users who may have never heard of it.
2022-06-17CLI/git: add safety checks for checkout and commitDavid Bremner
Commits or checkouts that modify a large fraction of the messages in the database should be relatively rare (and in some automated process, probably non-existent). For initial setup, where such operations are expected, the user can pass --force.
2022-06-17CLI/git: support configuration for repo location / prefixDavid Bremner
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.
2022-06-17CLI/git: change defaults for repo and prefixDavid Bremner
The previous defaults were not suitable for personal (i.e. not bugtracking for notmuch development) use. Provide two ways for the user to select nmbug compatible defaults; command line argument and checking the name of the script.
2022-06-17CLI/git: cache git indicesDavid Bremner
If the private index file matches a previously known revision of the database, we can update the index incrementally using the recorded lastmod counter. This is typically much faster than a full update, although it could be slower in the case of large changes to the database. The "git-read-tree HEAD" is also a bottleneck, but unfortunately sometimes is needed. Cache the index checksum and hash to reduce the number of times the operation is run. The overall design is a simplified version of the PrivateIndex class.
2022-06-17CLI/git: add @timed decorator, time a few functionsDavid Bremner
Perf will show which binaries are using the CPU cycles, and standard python profilers will show which python functions, but neither is great at finding which call to an external binary is taking time, or locating I/O hotspots.
2022-06-17CLI/git: replace enumeration of tags with sexp query.David Bremner
Unlike the (current) infix query parser provided by Xapian, the notmuch specific sexp query parser supports prefixed wildcard queries, so use those. In addition to being somewhat faster, this avoids needing to escape all of the user's tags to pass via the shell.
2022-06-17CLI/git: suppress warnings about initial branch nameDavid Bremner
The canonical nmbug repository still uses "master" as the main branch name, so defer any potential switch away from that name.
2022-06-17CLI/git: rename environment variables.David Bremner
Although the code required to support both new and old environment variables is small, it complicates the semantics of configuration, and make the documentation harder to follow.
2022-06-17test: initial tests for notmuch-gitDavid Bremner
Exercise the main functionality of notmuch-git. add_git_repos() will hopefully be simplifed when an init subcommand is added.
2022-06-17CLI/git: Add an 'init' commandW. Trevor King
For folks that want to start versioning a new tag-space, instead of cloning one that someone else has already started. The empty-blob hash-object call avoids errors like: $ nmbug commit error: invalid object 100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 for 'tags/...' fatal: git-write-tree: error building trees 'git HASH(0x9ef3eb8) write-tree' exited with nonzero value David Bremner suggested [1]: $ git hash-object -w /dev/null instead of my Python version of: $ git hash-object -w --stdin <&- but I expect that closing stdin is more portable than the /dev/null path (which doesn't exist on Windows, for example). The --bare init and use of NMBGIT as the work tree (what could go wrong with an empty commit?) are suggestions from Michal Sojka [2]. [1]: id:87y4vu6uvf.fsf@maritornes.cs.unb.ca http://thread.gmane.org/gmane.mail.notmuch.general/18626/focus=18720 [2]: id:87a93a5or2.fsf@resox.2x.cz http://thread.gmane.org/gmane.mail.notmuch.general/19495/focus=19767
2022-06-17CLI/git: make existance of config branch optional on cloneDavid Bremner
This branch is actually only used by an associated utility (notmuch-report), and notmuch-git works fine without it.
2022-06-17notmuch-git: add --git-dir, --tag-prefix argumentsDavid Bremner
It is often more convenient to use command line arguments than environment variables.
2022-06-17CLI/git: drop support for python < 3.2David Bremner
Debian stable had python 3.4.2 3 releases ago (approximately 6 years ago), so attempting to keep track of the changes in python is probably no longer worthwhile. We already require python 3.5 for the python-cffi bindings (although those are not yet used in notmuch-git).
2022-06-17nmbug: promote to user tool "notmuch-git"David Bremner
Initially just a rename, and drop the --version argument that clashes with the global notmuch --version argument.