git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Jonathan Nieder <jrnieder@gmail.com>
To: Johannes Sixt <j.sixt@viscovery.net>
Cc: Sverre Rabbelier <srabbelier@gmail.com>,
	David Barr <david.barr@cordelta.com>,
	Git Mailing List <git@vger.kernel.org>,
	Ramkumar Ramachandra <artagnon@gmail.com>
Subject: Re: [PATCH] fast-import: Allow filemodify to set the root
Date: Fri, 8 Oct 2010 03:00:27 -0500	[thread overview]
Message-ID: <20101008080027.GC4671@burratino> (raw)
In-Reply-To: <4CAEC6E6.5000305@viscovery.net>

Some quick answers before I go to sleep.

Johannes Sixt wrote:

> What is the special new thing here? That "" means 'empty string' == 'tree
> at the root'? If so:

Yes.

> 1. Then this is the missing piece in the justification. Then I could buy
> that the observed speed-up is due to the reuse of an existing tree object
> (which avoids parsing it and re-constructing it from its pieces because
> fast-imports syntax didn't allow it otherwise). But it has nothing to do
> with new loose objects (the re-constructed object would be identical to an
> existing one).

If I remember correctly:

Version 1 of the script was similar to filter-branch and used
"git read-tree", "git write-tree", and "git commit-tree" (or something
equivalent).  Reconstructing the trees seemed to be a significant overhead,
leading to:

Version 2, which just called "git commit-tree" (or equivalent) repeatedly.
What this patch allows is

Version 3, which is a bit over 20% faster than version 2 and uses fast-import
to write the new commits directly to pack.

That speed-up could be due to avoiding the repeated fork() + exec() +
git startup cost, or avoiding loose objects, or any number of other
things.  Without this patch, one could write

Theoretical version 1', which uses cat-file --batch to unpack each
tree and uses fast-import to write commits with the same (recreated)
tree directly to pack.  But that would be kind of insane.

> 2. Without this patch, would this syntax create a tree object with a name
> consisting of two double-quotes in the root? Or would it be a syntax
> error?

Syntax error.

> How would one construct such an entry with this patch?

M 040000 <tree id> "\"\""

Thanks again.

  reply	other threads:[~2010-10-08  8:03 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-07 10:55 [PATCH] fast-import: Allow filemodify to set the root David Barr
2010-10-07 13:58 ` Sverre Rabbelier
2010-10-07 20:28   ` Jonathan Nieder
2010-10-07 20:35     ` Sverre Rabbelier
2010-10-07 23:45       ` David Barr
2010-10-07 23:46         ` David Barr
2010-10-07 23:55           ` Sverre Rabbelier
2010-10-08  6:50     ` Johannes Sixt
2010-10-08  7:05       ` Jonathan Nieder
2010-10-08  7:23         ` Johannes Sixt
2010-10-08  8:00           ` Jonathan Nieder [this message]
2010-10-08  8:15 ` Ramkumar Ramachandra
2010-10-08  8:33   ` Gabriel Filion
2010-10-08  8:58     ` David Michael Barr
2010-10-08 16:34       ` Sverre Rabbelier
2010-10-08 17:09         ` Jonathan Nieder
2010-10-09 22:11           ` David Michael Barr
2010-10-09 22:12             ` Sverre Rabbelier
2010-10-10  3:30               ` David Barr
2010-10-11  6:34                 ` Jonathan Nieder
2010-10-18  1:00                   ` [PATCH 0/2] " Jonathan Nieder
2010-10-18  1:03                     ` [PATCH 1/2] fast-import: filemodify after M 040000 <tree> "" crashes Jonathan Nieder
2010-10-18  1:13                       ` Sverre Rabbelier
2010-10-18  1:44                         ` Jonathan Nieder
2010-10-20 20:25                       ` [PATCH] fast-import: do not clear notes in do_change_note_fanout() Jonathan Nieder
2010-10-18  1:08                     ` [PATCH 2/2] fast-import: tighten M 040000 syntax Jonathan Nieder
2011-01-16  2:22                 ` [PATCH] Documentation/fast-import: put explanation of M 040000 <dataref> "" in context Jonathan Nieder
2011-01-18 15:04                   ` Junio C Hamano
2011-01-18 21:16                     ` Jonathan Nieder
2011-01-18 21:43                       ` Junio C Hamano
2011-01-18 22:02                         ` Jonathan Nieder

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20101008080027.GC4671@burratino \
    --to=jrnieder@gmail.com \
    --cc=artagnon@gmail.com \
    --cc=david.barr@cordelta.com \
    --cc=git@vger.kernel.org \
    --cc=j.sixt@viscovery.net \
    --cc=srabbelier@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).