proomt

Search

Search posts, papers, and topics

All posts

Hacker News front page18 min readintermediate

You can run Git on object storage if you re-make packfiles

Summary

The author built a Git server on object storage (objgit) and found standard Git packfiles inefficient due to random‑access and round‑trip latency. By designing a columnar, object‑storage‑native packfile format that can be accessed via HTTP range requests, they achieved acceptable performance for large repositories without client‑side changes.

  • Git stores objects as loose files or in packfiles; the latter are optimized for local filesystems with mmap, not for remote object storage.
  • Fetching millions of objects from object storage (≈10 ms per GET) would take hours, so bundling them is essential.
  • Standard packfile indexes give object offsets but not compressed sizes, making precise HTTP Range requests impossible.
  • A custom packfile format that records both offset and compressed length enables efficient range reads from object storage.

Running Git directly on object storage can simplify infrastructure and reduce costs, but only if the storage access patterns are optimized. This post shows a concrete redesign of Git’s packfile layout to make remote object stores viable for large codebases.

5/10

Related reading

  1. Reinventing issue tracking: Local-first and Git-native

    A devlog describing how Manganin’s issue tracker stores issues in a dedicated Git repo as plain files, after rejecting earlier approaches that tried to embed issue data in the code tree or Git refs. The author explains the pitfalls of using refs for issue storage, shows the low‑level Git commands needed for that approach, and then outlines the final design: a hidden sister repository where each i…

    Lobstersmanganin.dev6 minHN1lobste.rs27
  2. Inside ZCode: Silently uploading your Git history to the cloud

    ZCode (Zhipu’s AI coding desktop) silently archives your entire workspace—including full .git history, LFS cache, and config—encrypts it with a server‑supplied RSA public key, and uploads the ciphertext directly to Aliyun OSS. The upload runs unconditionally for any logged‑in user, cannot be disabled via UI, and the decryption key lives only on the server, giving Zhipu full read access to your co…

    Hacker News front pageferstar.org6 minpostmortemHN336113
  3. Agora: Git as Shared Memory for Collective AutoResearch

    Agora treats a Git repository as a shared, append‑only memory for autonomous research agents, recording each claim as an immutable commit in a DAG. In a 12‑day run with 13 language‑model workers it generated 1,703 reproducible contributions and closed 62 % of the gap to a trained GPT‑2‑124M, demonstrating that shared research state can accelerate discovery.

    Hugging Face Daily Papersarxiv.org2 minpaper
  4. Migrating the GitHub Copilot runtime to Rust, using Copilot

    The Copilot agent runtime was rewritten from a 130‑k‑line TypeScript/Node.js codebase into a native Rust library (~830 k lines of Rust) to reduce startup latency, memory use, and improve reliability. The migration was done incrementally (in‑place) across 128 PRs, with AI‑generated code handling most of the work. The new runtime exposes a C ABI for in‑process embedding by all six Copilot SDK langu…

    GitHub Oldgithub.blog65 minHN188