aboutsummaryrefslogtreecommitdiff
path: root/notmuch-git.py
diff options
context:
space:
mode:
authorW. Trevor King <wking@tremily.us>2015-01-18 16:40:10 -0800
committerDavid Bremner <david@tethera.net>2022-06-17 08:40:19 -0300
commit14ac68ae112437fd25d7e76f8c78523a01d83804 (patch)
treea5f056e78604dff06ab941a1c66b623435afeda9 /notmuch-git.py
parenta01378e48d97694b0061870c0ba1fc2913e0affb (diff)
CLI/git: Add an 'init' command
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
Diffstat (limited to 'notmuch-git.py')
-rw-r--r--notmuch-git.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/notmuch-git.py b/notmuch-git.py
index 0cbfec61..ce3c07bb 100644
--- a/notmuch-git.py
+++ b/notmuch-git.py
@@ -351,6 +351,25 @@ def fetch(remote=None):
_git(args=args, wait=True)
+def init(remote=None):
+ """
+ Create an empty nmbug repository.
+
+ This wraps 'git init' with a few extra steps to support subsequent
+ status and commit commands.
+ """
+ _spawn(args=['git', '--git-dir', NMBGIT, 'init', '--bare'], wait=True)
+ _git(args=['config', 'core.logallrefupdates', 'true'], wait=True)
+ # create an empty blob (e69de29bb2d1d6434b8b29ae775ad8c2e48c5391)
+ _git(args=['hash-object', '-w', '--stdin'], input='', wait=True)
+ _git(
+ args=[
+ 'commit', '--allow-empty', '-m', 'Start a new nmbug repository'
+ ],
+ additional_env={'GIT_WORK_TREE': NMBGIT},
+ wait=True)
+
+
def checkout():
"""
Update the notmuch database from Git.
@@ -711,6 +730,7 @@ if __name__ == '__main__':
'commit',
'fetch',
'help',
+ 'init',
'log',
'merge',
'pull',