proomt

Search

Search posts, papers, and topics

All posts

SitePoint17 min readtutorialintermediate

Migrating Repositories to Git 3.0: Moving to SHA-256 and Reftables

Summary

The article outlines a step‑by‑step workflow for migrating existing Git repositories to the new SHA‑256 object format and reftable reference backend, including an audit script, conversion commands, and rollback guidance. Following the guide lets teams modernize their repos, improve scalability and address SHA‑1 security concerns.

  • Run the provided Python audit script to detect object format, ref backend, and hard‑coded SHA‑1 patterns across all repos.
  • Migrate ref storage first with `git refs migrate --ref-format=reftable` and validate using `git fsck` and `git for-each-ref`.
  • Reinitialize a SHA‑256 repository and replay history via `git fast-export` / `git fast-import`.
  • Update all hooks, CI pipelines, and tooling to handle 64‑character SHA‑256 hashes.

Large teams and monorepos should care because SHA‑256 mitigates known collision attacks and reftables dramatically improve ref lookup performance at scale.

6/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. 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