Re: [ANNOUNCE] Example Cogito Addon - cogito-bundle
- From
Linus Torvalds <torvalds@osdl.org>
- Date
- Oct 18, 2006, 20:08 UTC
- Message-ID
- <Pine.LNX.4.64.0610181302080.3962@g5.osdl.org>
- In-Reply-To
- <20061018185907.GV20017@pasky.or.cz>
On Wed, 18 Oct 2006, Petr Baudis wrote:
Show 7 quoted lines
> > By the way, originally I just wanted to index and save the pack, but > when trying to feed it to git-index-pack, I kept getting > > fatal: packfile '.git/objects/pack/pack-b2ab684daebea5b9c5a6492fa732e0d2e1799c8e.pack' has unresolved deltas > > while feeding it to git-unpack-objects works fine. Any idea what's wrong?
Since you created a "thin" pack (that's what the "--objects-edge" means), the pack actually contains deltas to objects that are _not_ in the pack.
In other words, it's not a valid stand-alone pack, it's only a valid thin pack, useful to transfer data to the other end (and the other end had better have the objects that the deltas are against already).
As a result, index-file refuses to index it: it cannot be used as a stand-alone pack, it's _only_ useful as a transfer medium.
So don't even _try_ to use it as a standalone pack-file. It won't work.
(If you want somethign that actually works as a stand-alone pack-file, change the "--objects-edge" flag to just "--objects" - that makes the pack-file self-sufficient, and doesn't try to delta against "edge" objects).
> (BTW, I got the id by sha1summing the pack file; is there an existing > way to name a pack properly if I have it lying around, unnamed? sha1sum > seems to be specific to a fairly new GNU coreutils version.)
A properly named _standalone_ pack gets named not by its actual contents, but by the SHA1-sum of the sorted list of objects it contains. That's so that a pack-file will be named the same thing regardless of how the contents are actually packed.
A thin pack cannot be named that way at all, for the same reason you cannot index it: it has a set of objects it enumerates (so you could name it by them), but it _also_ has a set of objects outside of it that it depends on.
That said, even a thin pack internally has a SHA1 checksum of its contents: the last 20 bytes should be the SHA1-sum of all preceding bytes. So if you just want _some_ kind of name, you can use the last 20 bytes of a pack, which is just its internal integrity-checksum (but that is _different_ from the "pack-xxxxxx.idx"/"pack-xxxxxx.pack" naming).
Linus