On 24/12/04 05:28AM, Sainan wrote: > Hi, I hope this email finds you well. > > I think Git bundles/packfiles are an exceptional compression format, but I find there are some rough edges with the tool to create them: > > 1. There is no way to specify that you want a shallow bundle, instead you are only able to a) pack the entire tree at a given head or b) pack new/updated objects in a specified range. Anecdotally, this could store data in ~67% of the size of an equivalent .zip file. You can create an incremental bundle covering a specified range. Something like the following example might help you achieve what you are looking for: $ git bundle create inc.bundle main~10..main > > 2. It seems that when specifiying a commit hash, it raises an error: > $ git bundle create repo.bundle $(git rev-list HEAD | head -n 1) > > fatal: Refusing to create empty bundle. > This confuses me slightly because I thought a commit hash should also be a valid head _pointer_. 'git rev-list' also seems to agree with me on this. A bundle is essentially a pack file with a header indicating the references contained within the bundle. If no reference is provided, the bundle is considered empty and git refuses to create it. I think this makes sense in the context of unbundling as you probably would not want to add new objects without updating references in the target repository.