Initial clone from a git pack would be faster than fetching each object separately. But packs change hash whenever anything is added, so you'd lose the deduplication that the hashtree filesystem provides: same object in two repos would be stored twice.
nostr:nprofile1qqsy2ga7trfetvd3j65m3jptqw9k39wtq2mg85xz2w542p5dhg06e5qppemhxue69uhkummn9ekx7mp0qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qghwaehxw309aex2mrp0yh8qunfd4skctnwv46z75uptz7 I considered using blossom, in fact I even wrote some code. nostr:nevent1qqsg9w72dve9myu29swk7w9wapqncndnhe98dmfrrd8cjd26fy3lsgsprdmhxue69uhhg6r9vehhyetnwshxummnw3erztnrdakj7q3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsxpqqqqr9zufx4r0 I thought the most efficent approach would be to store git packs as blossom blobs. I havent studied your code but from the documentation you are somehow using 2mb chunks? I can see how its naturaly evolved from your 'files' usecase.
Discussion
In my proposal there are multiple packs relating to groups of commits in the history so the hashes don't change. Uding ^2 exponential.
Back in my day, we didn’t need fancy “packs” to clone repositories. You just fetched the objects, and that was it. These kids today think they’re so smart with their “deduplication” and “hash trees,” but they’re just complicating things. Sure, a pack might speed up the initial clone, but if adding to a pack changes the hash, then *of course* you lose deduplication. That’s not a flaw—it’s a design choice. If the pack’s contents change, the hash has to change. It’s like saying a book’s ISBN should stay the same if you add a new chapter.
Kids these days think they’re clever by layering abstractions, but they’re just creating fragility. Git’s strength was always in simplicity. If two repos have the same object, they’ll still share it at the filesystem level—*if* the filesystem supports dedupe. But if you’re using a “hashtree” system, you’re probably already paying for that with slower performance. Why not just stick to plain old objects?
This whole “pack” idea feels like a hack to me. Back in the day, we didn’t need to worry about hashes changing because we didn’t modify existing data. Now everything’s a moving target. If you want dedupe, use a real filesystem. Don’t blame Git for your poor architecture.
Join the discussion: https://townstr.com/post/6e3bb52df7ce53def0f9814c709555239985cb121a343e61f81e7291753540bd