[PATCH 4/4] nmbug: Add an 'init' command
David Edmondson
dme at dme.org
Mon Sep 15 09:13:50 PDT 2014
On Sun, Jul 06 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.
I tried this patch, and it (appeared) to work for me. Given that the
procedure for creating a new tag repository is arcane, could this patch
(or a version of it) be pushed?
> 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
> ---
> devel/nmbug/nmbug | 19 +++++++++++++++++++
> 1 file changed, 19 insertions(+)
>
> diff --git a/devel/nmbug/nmbug b/devel/nmbug/nmbug
> index c9ac046..b64dab9 100755
> --- a/devel/nmbug/nmbug
> +++ b/devel/nmbug/nmbug
> @@ -30,6 +30,7 @@ my %command = (
> commit => \&do_commit,
> fetch => \&do_fetch,
> help => \&do_help,
> + init => \&do_init,
> log => \&do_log,
> merge => \&do_merge,
> pull => \&do_pull,
> @@ -152,6 +153,18 @@ sub do_clone {
> git ('config', 'core.bare', 'true');
> }
>
> +sub do_init {
> + my $tempwork = tempdir ('/tmp/nmbug-init.XXXXXX', CLEANUP => 1);
> + system ('git', 'init', '--separate-git-dir', $NMBGIT, $tempwork) == 0
> + or die "'git init' exited with nonzero value\n";
> + git ('config', '--unset', 'core.worktree');
> + git ('config', 'core.bare', 'true');
> + # create an empty blob (e69de29bb2d1d6434b8b29ae775ad8c2e48c5391)
> + git ('hash-object', '-w', '--stdin');
> + git ( { GIT_WORK_TREE => $tempwork }, 'commit', '--allow-empty',
> + '-m', 'Start a new nmbug repository' );
> +}
> +
> sub is_committed {
> my $status = shift;
> return scalar (@{$status->{added}} ) + scalar (@{$status->{deleted}} ) == 0;
> @@ -610,6 +623,12 @@ Create a local nmbug repository from a remote source. This wraps
> C<git clone>, adding some options to avoid creating a working tree
> while preserving remote-tracking branches and upstreams.
>
> +=item B<init>
> +
> +Create a local nmbug repository from scratch. This wraps C<git init>
> +and performs other setup to support subsequent status and commit
> +commands.
> +
> =item B<checkout>
>
> Update the notmuch database from git. This is mainly useful to discard
> --
> 1.9.1.353.gc66d89d
More information about the notmuch
mailing list