Hi Trevor, On Út, říj 28 2014, W. Trevor King wrote: > 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). > > [1]: id:87y4vu6uvf.fsf@maritornes.cs.unb.ca > http://thread.gmane.org/gmane.mail.notmuch.general/18626/focus=18720 > --- > The only change since v2 [1] is a commit-message tweak: > > * Mention Windows as an OS with stdin but no /dev/null [2]. > > Cheers, > Trevor > > [1]: id:eaa9cf1cb3c00c591dc675c0f314ca31909ff74c.1412965476.git.wking@tremily.us > http://thread.gmane.org/gmane.mail.notmuch.general/19289 > [2]: id:20141011071000.GB10926@odin.tremily.us > http://article.gmane.org/gmane.mail.notmuch.general/19294 > > devel/nmbug/nmbug | 24 ++++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > > diff --git a/devel/nmbug/nmbug b/devel/nmbug/nmbug > index 9402ead..23bac5c 100755 > --- a/devel/nmbug/nmbug > +++ b/devel/nmbug/nmbug > @@ -373,6 +373,29 @@ 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. > + """ > + with _tempfile.TemporaryDirectory(prefix='nmbug-init.') as workdir: > + _spawn( > + args=['git', 'init', '--separate-git-dir', NMBGIT, workdir], > + wait=True) > + _git(args=['config', '--unset', 'core.worktree'], wait=True) > + _git(args=['config', 'core.bare', 'true'], wait=True) Why do you create a non-bare repository and then make it bare? Before I discovered this patch, I created the nmbug repository by hand and it was possible to do it with bare repo from beginning. The following code seems to work and is a bit simpler: 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) # 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) Note that in the initial commit I set the work tree to NMBGIT. This is because 'git commit' needs some work tree, but in our case it doesn't matter which one because the commit is empty. -Michal > + # 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': workdir}, > + wait=True) > + > + > def checkout(): > """ > Update the notmuch database from Git. > @@ -703,6 +726,7 @@ if __name__ == '__main__': > 'clone', > 'commit', > 'fetch', > + 'init', > 'log', > 'merge', > 'pull', > -- > 2.1.0.60.g85f0837 > > _______________________________________________ > notmuch mailing list > notmuch@notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch