WeSearch

Converting shallow Git bundles into normal repositories

·1 min read · 0 reactions · 0 comments · 15 views
#git#repository#programming
⚡ TL;DR · AI summary

The article discusses the process of converting a shallow Git bundle into a normal repository. It outlines the steps required to initialize a bare repository, extract and index the packfile, and set the reference to the appropriate object ID. The author suggests that the bundle format could benefit from improvements to better communicate shallowness.

Key facts
Original article
Runxiyu
Read full at Runxiyu →
Opening excerpt (first ~120 words) tap to expand

Let’s say you have a shallow Git bundle, i.e., not all referenced objects are present. How do you convert it into a normal shallow repository? Initialize the target as a bare-repo with your desired object-format. git init --bare --object-format=sha1 target.git && cd target.git Find the start of the pack in each bundle (version 2 packs starts with 5041 434b 0000 0002). In my case it’s byte offset 77. Extract and index the packfile, creating the .idx and .rev. tail -c +77 ../source.bundle | git index-pack --stdin Extract the ref OID and ref name from the bundle. oid="$(git bundle list-heads source.bundle | awk '{print $1}')" ref="$(git bundle list-heads source.bundle | awk '{print $2}')" Set the ref to the OID, and set HEAD to the ref.

Excerpt limited to ~120 words for fair-use compliance. The full article is at Runxiyu.

Anonymous · no account needed
Share 𝕏 Facebook Reddit LinkedIn Threads WhatsApp Bluesky Mastodon Email

Discussion

0 comments

More from Runxiyu