git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] Add 'git fast-export', the sister of 'git fast-import'

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Nov 26, 2007, 12:39 UTC
Message-ID
<Pine.LNX.4.64.0711261236280.27959@racer.site>
In-Reply-To
<7vbq9hiz6a.fsf@gitster.siamese.dyndns.org>
Hi,
On Sun, 25 Nov 2007, Junio C Hamano wrote:
Show 35 quoted lines
> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> 
> > diff --git a/Documentation/git-fast-export.txt b/Documentation/git-fast-export.txt
> > new file mode 100644
> > index 0000000..073ff7f
> > --- /dev/null
> > +++ b/Documentation/git-fast-export.txt
> > ...
> > +DESCRIPTION
> > +-----------
> > +This program dumps the given revisions in a form suitable to be piped
> > +into gitlink:git-fast-import[1].
> > +
> > +You can use it as a human readable bundle replacement (see
> > +gitlink:git-bundle[1]), or as a kind of an interactive
> > +gitlink:git-filter-branch[1].
> > +
> > +
> > +OPTIONS
> > +-------
> > +--progress=<n>::
> > +	Insert 'progress' statements every <n> objects, to be shown by
> > +	gitlink:git-fast-import[1] during import.
> > +
> > +--signed-tags=(ignore|warn|strip|abort)::
> > +	Specify how to handle signed tags.  Since any transformation
> > +	after the export can change the tag names (which can also happen
> > +	when excluding revisions) the signatures will not match.
> > ++
> > +When asking to 'abort' (which is the default), this program will die
> > +when encountering a signed tag.  With 'strip', the tags will be made
> > +unsigned, with 'ignore', they will be silently ignored (i.e. not exported)
> > +and with 'warn', they will be exported, but you will see a warning.
> 
> I am not sure if abort should be the default.
I tried to be conservative.
> If a straight dump-restore is made without rewriting, the result will be 
> identical to the original, right?
Yep.
Show 8 quoted lines
> The reason I mention a straight dump-restore is because ...
> 
> > +$ git fast-export master~5..master |
> > +	sed "s|refs/heads/master|refs/heads/other|" |
> > +	git fast-import
> 
> ... I find this a quite unrealistic example to assume that the data
> stream does not have some string and convert blindly without parsing.

That's what the warning after the example is about. For quick and dirty operations, it is quite adequate.

Besides, I have the feeling that some people are more comfortable dumping the whole repository into a file, editing it, and fast-importing it. That is what I referred to when I said "think of it as kind of an interactive filter-branch".

> On the other hand, we _could_ also have a separate filter that works on 
> input stream for fast-import, but that filter should know what the 
> fast-import input stream looks like (a simple sed does not cut it).
I agree that for most serious operations sed is not good enough.
Show 7 quoted lines
> So unless the future direction is to deprecate filter-branch and replace 
> it with such a fast-import based filter in between fast-export and 
> fast-import, I think the use of fast-export is to make verbatim copy 
> without munging the contents, which leads me to think --signed-tag 
> option should default to "export it as-is".
> 
> ... which seem to be missing from the available values to the option.

You mean something like "--signed-tag=warn 2> /dev/null"? How about a "--signed-tag=quiet" mode?

Show 12 quoted lines
> > diff --git a/builtin-fast-export.c b/builtin-fast-export.c
> > new file mode 100755
> > index 0000000..48d0c54
> > --- /dev/null
> > +++ b/builtin-fast-export.c
> > ...
> > +/*
> > + * TODO:
> > + * - tags (--signed-tags=(ignore|warn|strip|abort)
> > + */
> 
> This comment is stale?
Correct.

Ciao, Dscho

Previous: Junio C HamanoNext: Junio C Hamano
Message 3 of 10 in “Add 'git fast-export', the sister of 'git fast-import'”
  1. Add 'git fast-export', the sister of 'git fast-import'Johannes Schindelin, Nov 25, 2007
  2. Junio C HamanoNov 26, 2007
  3. Johannes SchindelinNov 26, 2007
  4. Junio C HamanoNov 26, 2007
  5. Johannes SchindelinNov 27, 2007
  6. Shawn O. PearceNov 27, 2007
  7. Johannes SchindelinNov 27, 2007
  8. Jakub NarebskiNov 27, 2007
  9. Johannes SchindelinNov 28, 2007
  10. Jakub NarebskiNov 28, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.