>> So how do I get a directory listing from fast-import, i.e. >> like I can get with "git cat-file -p", but without having to fork >> a separate git process? > I'm not sure I understand your use case exactly, but is the directory > listing you want part of the newly-added objects from fast-import, or > does it already exist in the branches you are collecting from? For the most important cases, the relevant revision already exists before fast-import, yes. > If the latter, I wonder if a separate "cat-file --batch" process could > give you what you need (it's a separate process, but you can start a I'm not sure exactly how "git cat-file --batch" works internally (whether it tries to keep active revisions, like fast-import does), but I've indeed used it successfully (tho for files). > single process and make many queries of it; I assume your desire not to > add an extra process is to avoid the overhead). The overhead of starting a new process is one part, but another is the overhead of re-reading the refs (I can have tens of thousands of branches in my repository), etc.. > But I think it won't pretty-print trees for you; it will give you the > raw tree data Indeed. > (which I imagine is what you are getting from cat-blob, too). Actually no, "cat-blob" gives an error instead: fatal: Object 2ca1672d50c9dbfe582dc53af3c7ce9891a7a664 is a tree but a blob was expected. > I'm not sure that's actually documented anywhere (it was part of > the original revisions of git, and hasn't changed since). But it is > basically: > tree = tree_entry* > tree_entry = mode SP path NUL sha1 > mode = ascii mode, in octal (e.g., "100644") > path = <any byte except NUL>* > sha1 = <any byte>{20} > SP = ascii space (0x20) > NUL = 0-byte Ah, thanks. It'd be great if cat-blob could return this instead of signalling an error. > So it is pretty simple to parse. My program is written in /bin/sh so parsing the above is actually rather inconvenient, but it's much better than just getting an error. Stefan -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html