A strong argument for embedding VCS revision info into every program binary, inspired by a production incident where missing version visibility caused hours of wasted debugging. The post covers three steps: Stamp it (embed git revision at build time), Plumb it (ensure the revision survives packaging pipelines), and Report it (expose the revision via --version flags, logs, HTTP headers, and RPCs). Uses i3 window manager and Go as case studies, with Go 1.18+ praised for stamping VCS buildinfo by default. Also covers a NixOS-specific challenge where Nix fetchers strip .git directories, breaking Go's VCS stamping, and presents a custom go-vcs-stamping Nix overlay as a workaround.
Table of contents
Why are our versioning standards so low?!Software VersioningCase Study: i3’s --version and --moreversionMost Useful: Stamp The VCS RevisionVCS rev with NixOSConclusion: Stamp it! Plumb it! Report it!Sort: