• src/build/gitinfo.bat

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Mon Jul 13 21:37:59 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/0d07fb8be31faeeb8fb49307
    Modified Files:
    src/build/gitinfo.bat
    Log Message:
    build: mark a dirty-tree build in gitinfo.bat too (Windows/MSVC)

    The Linux/CMake stampers learned to mark an uncommitted build ("~hash", and
    the BUILD time rather than the commit's); gitinfo.bat -- what release.bat runs for the MSVC build -- did not, so a Windows binary would have kept claiming to be a commit it isn't, and the two platforms would have disagreed about what a dirty build looks like.

    Same rule, same scope: TRACKED changes under src/ only (`--porcelain -uno -- :/src`), since untracked files would make every tree dirty and runtime- modified game data outside src/ has nothing to do with what compiled. `date` comes from the same Git-for-Windows usr/bin that already supplies the `tr`
    this script uses for git_branch.h.

    NOT RUN: there is no Windows here, so the batch itself is unexecuted. What is verified is the commands it issues -- from src/sbbs3, where release.bat
    invokes it, the `date` format strings emit lines byte-identical to the git
    ones they replace, and the `:/src` pathspec resolves correctly. The batch escaping (%% and \") follows the existing lines in the same file unchanged.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Fri Jul 17 03:05:43 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/e184e3aad0117b8a8b13fd24
    Modified Files:
    src/build/gitinfo.bat
    Log Message:
    gitinfo.bat: get the dirty-build timestamp from PowerShell, not `date`

    The dirty-tree branch called `date "+..."` intending Git-for-Windows' Unix date.exe, but `date` is a cmd.exe built-in that shadows the external
    executable -- even when spelled `date.exe`, cmd runs the built-in DATE (only a full path reaches Git's). The built-in read the format string as a request to *set* the clock, failed, and its interactive prompt ("The system cannot accept the date entered / Enter the new date:") got >>-redirected into git_hash.h, while GIT_DATE/GIT_TIME were never written -- a broken header that fails the build. Only dirty builds hit this branch (a clean build takes its date from git log), so it went unnoticed until a dirty MSVC build. Introduced yesterday in 0d07fb8be31 (been-3-recommend).

    Use PowerShell Get-Date instead (always present, no built-in to shadow it), formatted to match the clean branch byte-for-byte: `MMM dd yyyy HH:mm` and [DateTimeOffset]::Now.ToUnixTimeSeconds() (epoch verified equal to date %s). The stale "date comes from Git usr/bin" comment is corrected to document the trap. Verified by running the fixed script and regenerating git_hash.h.

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net