From c5c74ea9a027f910bdb977a1a8409096535b22ba Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Fri, 18 Sep 2026 16:41:41 +0200 Subject: [PATCH 1/5] fixup! Add a GitHub workflow to verify that Git/Scalar work in Nano Server Nano Server needs runtime DLLs from the SDK used to build Git, but the current x64 environment no longer contains `/mingw64/bin`. Honor the setup action's `MSYSTEM` selection while keeping the container-side directory independent of the toolchain name. Assisted-by: GPT-6 Signed-off-by: Johannes Schindelin --- .github/workflows/nano-server.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/nano-server.yml b/.github/workflows/nano-server.yml index 2e6da3ceea6f90..60e056a44bf8cc 100644 --- a/.github/workflows/nano-server.yml +++ b/.github/workflows/nano-server.yml @@ -28,11 +28,11 @@ jobs: docker run \ --user "ContainerAdministrator" \ -v "$WINDBG_DIR:C:/dbg" \ - -v "$(cygpath -aw /mingw64/bin):C:/mingw64-bin" \ + -v "$(cygpath -aw "/${MSYSTEM,,}/bin"):C:/mingw-bin" \ -v "$(cygpath -aw .):C:/test" \ $IMAGE pwsh.exe -Command ' - # Extend the PATH to include the `.dll` files in /mingw64/bin/ - $env:PATH += ";C:\mingw64-bin" + # Add runtime DLLs from the active SDK to PATH. + $env:PATH += ";C:\mingw-bin" # For each executable to test pick some no-operation set of # flags/subcommands or something that should quickly result in an From 363a3f74d67093f7f0198aada89d26cccabb33e4 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Fri, 18 Sep 2026 18:12:34 +0200 Subject: [PATCH 2/5] fixup! Add an AGENTS.md file to help with AI-assisted debugging/development The PowerShell example still assumes `/mingw64`, which is absent from the current x64 SDK. Keep its environment and search path consistent with UCRT64 while preserving the non-login `bash` invocation and access to `/usr/bin`. Assisted-by: GPT-6 Signed-off-by: Johannes Schindelin --- AGENTS.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 7273095017731a..a387a425110291 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -48,8 +48,8 @@ to `PATH`, then invoke a non-login `bash -c` (replace `C:\git-sdk-64` with your SDK root): ```powershell -$env:MSYSTEM = "MINGW64" -$env:PATH = "C:\git-sdk-64\mingw64\bin;C:\git-sdk-64\usr\bin;" + $env:PATH +$env:MSYSTEM = "UCRT64" +$env:PATH = "C:\git-sdk-64\ucrt64\bin;C:\git-sdk-64\usr\bin;" + $env:PATH & C:\git-sdk-64\usr\bin\bash.exe -c "make -j15" ``` From dfec2f9c5344e438fe79433dc6a85871fece3099 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Mon, 21 Sep 2026 20:45:58 +0200 Subject: [PATCH 3/5] fixup! survey: turn into a thin shim over `git repo structure` The deprecation note still promises behavior intentionally removed by the shim. Explain the migration to `git repo structure` so users can choose their ref scope and output, including opting out of name lookup, without relying on ignored configuration or unsupported options. Assisted-by: GPT-6 Signed-off-by: Johannes Schindelin --- Documentation/config/survey.adoc | 15 ++---------- Documentation/git-survey.adoc | 39 +++++++++++++++++++++++++++++--- 2 files changed, 38 insertions(+), 16 deletions(-) diff --git a/Documentation/config/survey.adoc b/Documentation/config/survey.adoc index 9e594a2092f225..0bee888d1b9d74 100644 --- a/Documentation/config/survey.adoc +++ b/Documentation/config/survey.adoc @@ -1,14 +1,3 @@ survey.*:: - These variables adjust the default behavior of the `git survey` - command. The intention is that this command could be run in the - background with these options. -+ --- - verbose:: - This boolean value implies the `--[no-]verbose` option. - progress:: - This boolean value implies the `--[no-]progress` option. - top:: - This integer value implies `--top=`, specifying the - number of entries in the detail tables. --- + Deprecated and ignored by `git survey`. See the "MIGRATION" section + of linkgit:git-survey[1] for replacements and changed defaults. diff --git a/Documentation/git-survey.adoc b/Documentation/git-survey.adoc index e97656b49dee75..4d5ca497a8e411 100644 --- a/Documentation/git-survey.adoc +++ b/Documentation/git-survey.adoc @@ -44,8 +44,8 @@ Ref Selection The following options control the set of refs that `git survey` will examine. By default, `git survey` will look at tags, local branches, and remote refs. -If any of the following options are given, the default set is cleared and -only refs for the given options are added. +If any ref-selection option other than `--detached` is given, the default +set is cleared and only refs for the given options are added. --all-refs:: Use all refs. This includes local branches, tags, remote refs, @@ -61,11 +61,44 @@ only refs for the given options are added. Add remote branches (`refs/remote/`) to the set. --detached:: - Add HEAD to the set. + Ignored with a warning. This option does not affect ref selection. --other:: Add notes (`refs/notes/`) and stashes (`refs/stash/`) to the set. +MIGRATION +--------- +`git repo structure` selects all refs by default. To retain the survey +default scope, pass `--ref-filter='refs/heads/*'`, +`--ref-filter='refs/tags/*'`, and `--ref-filter='refs/remotes/*'`. + +Neither command separately enumerates detached `HEAD`, even with +`git survey --all-refs`. To include history reachable only from `HEAD`, +first create a branch or tag pointing to `HEAD` and include that ref in +the selection. The new ref is also counted. + +For path detail tables, `git repo structure` defaults to `--top=0`; use +`--top=10` or `repo.structure.top=10` for the survey default. The shim +always supplies `--top` (10 unless overridden on its command line), so +`repo.structure.top` does not change `git survey`'s limit. + +`--commit-parents=`, `--commit-sizes=`, `--tree-entries=`, +`--tree-sizes=`, `--blob-sizes=`, and `--[no-]name-rev` retain their +names in `git repo structure`, but are not accepted by the shim. Each +object-list limit defaults to 0. + +Name lookup for ranked commits is now enabled by default. Use +`git repo structure --no-name-rev` or set `repo.structure.nameRev=false` +to opt out; the configuration also applies through `git survey`. + +All `survey.*` settings are ignored. For `top`, `nameRev`, +`showCommitParents`, `showCommitSizes`, `showTreeEntries`, `showTreeSizes`, +and `showBlobSizes`, replace the `survey.` prefix with `repo.structure.` +when invoking `git repo structure` directly. Use `--progress` or +`--no-progress` instead of `survey.progress`; no `repo.structure.progress` +exists. `survey.verbose` has no replacement; the shim ignores `--verbose` +with a warning. + OUTPUT ------ From 3e0d69e78405916cc6d4548ca0c53d196b4a8f99 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Thu, 17 Sep 2026 10:35:08 +0200 Subject: [PATCH 4/5] ci(dockerized): really do show the result of failing tests again The test reporter fails with "Permission denied" when appending `FAILED_TEST_ARTIFACTS` to `GITHUB_ENV` in linux-TEST-vars, linux32 and debian-12: https://github.com/microsoft/git/actions/runs/35114876023 Each Actions step receives a distinct environment file, so the earlier build/test permission adjustment does not cover the reporter. Give this step the access it needs to record failure artifacts while retaining rootless execution and unchanged reporting logic. I overlooked this in the original 0458e8b8544 (ci(dockerized): do show the result of failing tests again, 2025-11-17). Assisted-by: GPT-6 Signed-off-by: Johannes Schindelin --- .github/workflows/main.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 40cc3690ef7ee2..ed904415d6d821 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -479,7 +479,9 @@ jobs: - run: chmod a+w $GITHUB_ENV && sudo --preserve-env --set-home --user=builder ci/run-build-and-tests.sh - name: print test failures if: failure() && env.FAILED_TEST_ARTIFACTS != '' - run: sudo --preserve-env --set-home --user=builder ci/print-test-failures.sh + run: | + chmod a+w "$GITHUB_ENV" && + sudo --preserve-env --set-home --user=builder ci/print-test-failures.sh - name: Upload failed tests' directories if: failure() && env.FAILED_TEST_ARTIFACTS != '' uses: actions/upload-artifact@v7 From 24522a0c936e0c5f71b77a42e2c321668e5ecdf9 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Fri, 18 Sep 2026 18:11:58 +0200 Subject: [PATCH 5/5] fixup! mingw: allow `git.exe` to be used instead of the "Git wrapper" The pretend SDK layout should reflect the current x64 UCRT64 defaults when neither `MINGW_PREFIX` nor `MSYSTEM` is specified. Explicit selections remain honored; only the fixture's fallback changes. I forgot this part before upstreaming caa5d9eab2b (mingw: allow `git.exe` to be used instead of the "Git wrapper", 2026-09-10). Assisted-by: GPT-6 Signed-off-by: Johannes Schindelin --- t/t0060-path-utils.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/t0060-path-utils.sh b/t/t0060-path-utils.sh index 5abfa202c19dca..2c805f85140c24 100755 --- a/t/t0060-path-utils.sh +++ b/t/t0060-path-utils.sh @@ -623,7 +623,7 @@ test_expect_success !VALGRIND,RUNTIME_PREFIX,CAN_EXEC_IN_PWD '%(prefix)/ works' test_expect_success MINGW,RUNTIME_PREFIX 'MSYSTEM/PATH is adjusted if necessary' ' if test -z "$MINGW_PREFIX" then - MINGW_PREFIX="/$(echo "${MSYSTEM:-MINGW64}" | tr A-Z a-z)" + MINGW_PREFIX="/$(echo "${MSYSTEM:-UCRT64}" | tr A-Z a-z)" fi && mkdir -p "$HOME"/bin pretend"$MINGW_PREFIX"/bin \ pretend"$MINGW_PREFIX"/libexec/git-core pretend/usr/bin &&