Junio C Hamano <gitster@xxxxxxxxx> writes: > Note that this name choice does not matter very much in the larger > picture. As an initial clone that bootstraps from a clone-bundle is > expected to do a rough equivalent of: > > # create a new repository > git init new-repository && > git remote add origin $URL && > > # prime the object store and anchor the history to temporary > # references > git fetch $bundle 'refs/*:refs/temporary/*' && > > # fetch the more recent history from the true origin > git fetch origin && > git checkout -f && > > # remove the temporary refs > git for-each-ref -z --format=%(refname) refs/temporary/ | > xargs -0 git update-ref -d > > the names recorded in the bundle will not really matter to the end > result. Actually, the real implementation of "bootstrap with clone-bundle" is more likely to go like this: * The client gets redirected to $name.bndl file, and obtains a fairly full $name.pack file by downloading them as static files; * The client initializes an empty repository; * The pack file is stored at .git/objects/pack/pack-$sha1.pack; * When the client does a "git fetch origin" to fill the more recent part, fetch-pack.c::find_common() would read from the "git bundle list-heads $name.bndl" to learn the "reference" objects. These are thrown at rev_list_insert_ref() and are advertised as "have"s, just like we advertise objects at the tip of refs in alternate repository. So there will be no refs/temporary/* hierarchy we would need to worry about cleaning up. Another possible variant is to redirect the client directly to download pack-$sha1.pack; "index-pack" needs to be run on the client side anyway to create pack-$sha1.idx, so at that time it could do the equivalent of "--clone-bundle" processing (it is not strictly necessary to create a split bundle) to find the tips of histories, and use that information when running "git fetch origin". So, even though I started working from "split bundle", we may not have to have such a feature after all to support CDN offloadable and resumable clone. -- 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