git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: Han-Wen Nienhuys <hanwen@xs4all.nl>
Cc: git@vger.kernel.org
Subject: Re: [WIP PATCH] Add 'git fast-export', the sister of 'git fast-import'
Date: Fri, 23 Nov 2007 01:01:28 +0000 (GMT)	[thread overview]
Message-ID: <Pine.LNX.4.64.0711230050270.27959@racer.site> (raw)
In-Reply-To: <fi5743$32p$1@ger.gmane.org>

Hi,

[please Cc me when you reply to my message]

On Thu, 22 Nov 2007, Han-Wen Nienhuys wrote:

> This one seems to setup a dump of a single branch from the command line, 
> which then follows the commit structure.  Am I missing something?

Yes.  It should work with "--all", too.  In fact, with every rev-list 
parameters, even a..b (which would cut off the history up to -- and 
including -- a).

> The cool thing about git-fast-import is that it reads from stdin, has a 
> very easy to use programmatic interface, and does not impose any order 
> on how you enter the information.
> 
> This doesn't seem to be mirrored by this script? 

Umm.  What exactly do you want to reorder?  I mean, this program is meant 
to dump the complete contents to stdout (whether you redirect it to a file 
or edit it with sed does not concern this program).  It does that.

Maybe you want to specify if all blobs should be output first, and then 
the commits?  Or files should be used?  But all of these things seem to be 
useless to me.

So I am puzzled what you ask for.

> I am working on a script for [company] which uses git.  Git is a pain to 
> script for: for every query I need to invoke another git process, with 
> another command (log, show-ref, cat-file, show, etc.), parse another 
> output format and/or specify another --pretty=format:%blah format.

Now I am really puzzled.  Git is one of the most easily scriptable 
programs I ever saw.

It does not even force you to use certain combinations of scripting 
languages, such as Python, Scheme, C++ and PostScript, separated by which 
part of the program you want to script.

> Besides being a nuisance, I actually run git on NFS, and every git 
> process has to go to NFS a couple times to retrieve the same 
> information. This has a noticeable performance impact.

Why don't you just work on a local clone?  If it is really performance 
critical, and I/O is an issue, you are better off working in a tmpfs.

Once you're done, you push back to the NFS repository (which is 
lock-challenged AFAIR, but I guess you know that).

> It would make my life a lot easier if I could simply open a pipe to a 
> single process for the duration of the script, and do all my queries to 
> this one process.  Of course, if the repository is changed by another 
> process, I would have to restart it, but that's manageable.  I could 
> even write a nice Python class that runs both fast-import and 
> fast-export. I could then have an efficient Python interface to a 
> git-repository, without needing any library wrapping.

There is a minimal python wrapper to libgit-thin, which was one of our 
GSoC projects.  You might want to look at this if you are really that 
unhappy with the existing framework.

As to the niceness of Python classes; this lies definitely in the eyes of 
the beholder.  For example, I have given up on understanding any part of 
your GUB framework.

Ciao,
Dscho

  reply	other threads:[~2007-11-23  1:01 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-11-21  3:40 [WIP PATCH] Add 'git fast-export', the sister of 'git fast-import' Johannes Schindelin
2007-11-21  7:44 ` Johannes Sixt
2007-11-21  7:47   ` Shawn O. Pearce
2007-11-21 14:01   ` Johannes Schindelin
2007-11-21 15:09     ` Andreas Ericsson
2007-11-21 15:47       ` Johannes Schindelin
2007-11-21 15:53         ` Andreas Ericsson
2007-11-21 12:43 ` Geert Bosch
2007-11-21 14:42   ` Johannes Schindelin
2007-11-23  0:27 ` Han-Wen Nienhuys
2007-11-23  1:01   ` Johannes Schindelin [this message]
2007-11-23  1:23     ` Han-Wen Nienhuys
2007-11-23  2:11       ` Johannes Schindelin
2007-11-23 20:59         ` Shawn O. Pearce
2007-11-25 17:00           ` Karl Hasselström
2007-11-26 16:48             ` Johannes Schindelin
2007-11-27 10:16               ` Karl Hasselström
2007-11-27 11:25                 ` Johannes Schindelin
2007-11-27 14:51                   ` Karl Hasselström
2007-11-27 15:10                     ` Johannes Schindelin
2007-11-26 16:47           ` Johannes Schindelin
2007-11-23 12:31 ` Nguyen Thai Ngoc Duy
2007-11-23 14:31   ` Johannes Schindelin
2007-11-23 20:56     ` Shawn O. Pearce
2007-11-24 14:08     ` Nguyen Thai Ngoc Duy
2007-11-27 12:16       ` Johannes Schindelin
2007-11-27 14:17         ` Nguyen Thai Ngoc Duy

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

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

  git send-email \
    --in-reply-to=Pine.LNX.4.64.0711230050270.27959@racer.site \
    --to=johannes.schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=hanwen@xs4all.nl \
    /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.
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 NNTP newsgroup(s).