From fc2d4e81f15674511fc71304cd707ecb96e5a288 Mon Sep 17 00:00:00 2001 From: Lrifton92 Date: Wed, 24 Jun 2026 11:57:01 +0200 Subject: [PATCH] version: document (devel) and pseudo-version build-info behavior Clarify in resolveVersion why "(devel)" is skipped and what info.Main.Version carries for tagged installs vs. builds on top of a release, per review feedback on #3452. Signed-off-by: Lrifton92 --- pkg/version/version.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkg/version/version.go b/pkg/version/version.go index 628036be..8b1dab87 100644 --- a/pkg/version/version.go +++ b/pkg/version/version.go @@ -22,6 +22,14 @@ func resolveVersion(ldflagsVersion string, readBuildInfo func() (*debug.BuildInf return ldflagsVersion } if info, ok := readBuildInfo(); ok && info != nil { + // info.Main.Version is populated by the Go toolchain only for + // module-aware builds: it is the clean tag for an exact + // `@vX.Y.Z` install, or a synthesized pseudo-version + // (e.g. v7.15.4-0.20240115123456-abcdef123456) carrying the + // base version, commit timestamp and hash when built from + // commits on top of a release. A plain `go build` from a source + // checkout reports "(devel)", which we skip so release builds + // keep deferring to the ldflags value below. if v := info.Main.Version; v != "" && v != "(devel)" { return v }