diff options
| author | W. Trevor King <wking@tremily.us> | 2015-01-18 16:40:10 -0800 |
|---|---|---|
| committer | David Bremner <david@tethera.net> | 2022-06-17 08:40:19 -0300 |
| commit | 14ac68ae112437fd25d7e76f8c78523a01d83804 (patch) | |
| tree | a5f056e78604dff06ab941a1c66b623435afeda9 /notmuch-git.py | |
| parent | a01378e48d97694b0061870c0ba1fc2913e0affb (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.py | 20 |
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', |
