diff --git a/TODO.md b/TODO.md index dda29c2..2b33a17 100644 --- a/TODO.md +++ b/TODO.md @@ -21,6 +21,11 @@ fmt-check, and commit. # Completed Steps +- 2026-10-04: The Makefile examples in the Go styleguide and the HTTP server + conventions now fall back to `dev` when `git describe` prints nothing (outside + a git checkout, or where git is missing or refuses the checkout), instead of + stamping an empty version (issue 74). The canonical `Dockerfile` already fails + on a `dev` version when `.git` is in the build context. - 2026-10-03: Fixed two defects in the canonical Go `Dockerfile` example (issue 73). The test phase now uses the Debian Go image, since `-race` needs cgo and the alpine image has no C compiler, so the phase failed before running a test. diff --git a/prompts/CODE_STYLEGUIDE_GO.md b/prompts/CODE_STYLEGUIDE_GO.md index 5ce1289..1e6fd99 100644 --- a/prompts/CODE_STYLEGUIDE_GO.md +++ b/prompts/CODE_STYLEGUIDE_GO.md @@ -1,6 +1,6 @@ --- title: Code Styleguide — Go -last_modified: 2026-10-02 +last_modified: 2026-10-04 --- 1. Try to hard wrap long lines at 77 characters or less. @@ -51,8 +51,10 @@ last_modified: 2026-10-02 # ?= rather than := so that a `VERSION` build argument takes precedence: # where a build stage invokes make, `ARG VERSION` puts it in the # environment and `?=` defers to it. Otherwise `git describe` runs, in a - # build stage on the `.git` the build context carries. - VERSION ?= $(shell git describe --tags --always) + # build stage on the `.git` the build context carries. When it prints + # nothing (outside a git checkout, or where git is missing or refuses the + # checkout), the version falls back to `dev`. + VERSION ?= $(or $(shell git describe --tags --always 2>/dev/null),dev) GOLDFLAGS += -X main.Version=$(VERSION) diff --git a/prompts/GO_HTTP_SERVER_CONVENTIONS.md b/prompts/GO_HTTP_SERVER_CONVENTIONS.md index 0aa35b5..84e1230 100644 --- a/prompts/GO_HTTP_SERVER_CONVENTIONS.md +++ b/prompts/GO_HTTP_SERVER_CONVENTIONS.md @@ -1,6 +1,6 @@ --- title: Go HTTP Server Conventions -last_modified: 2026-10-02 +last_modified: 2026-10-04 --- This document defines the architectural patterns, design decisions, and @@ -987,8 +987,10 @@ Use ldflags to inject version information at build time: # ?= rather than := so that a `VERSION` build argument takes precedence: # where a build stage invokes make, `ARG VERSION` puts it in the # environment and `?=` defers to it. Otherwise `git describe` runs, in a -# build stage on the `.git` the build context carries. -VERSION ?= $(shell git describe --tags --always) +# build stage on the `.git` the build context carries. When it prints +# nothing (outside a git checkout, or where git is missing or refuses the +# checkout), the version falls back to `dev`. +VERSION ?= $(or $(shell git describe --tags --always 2>/dev/null),dev) build: go build -ldflags "-X main.Version=$(VERSION)" ./cmd/httpd