deer-flow/scripts
Aling33 dede3faed4
fix(scripts): find Git Bash under a PortableGit mingw64 layout (#7214)
* fix(scripts): find Git Bash under a PortableGit mingw64 layout

`scripts/run-with-git-bash.cmd` derives `bash.exe` from `git.exe`'s parent,
which only holds for the Git for Windows `<root>/cmd` and `<root>/bin`
layouts. PortableGit and GitHub Desktop ship `git.exe` in
`<root>/mingw64/bin`, so the wrapper looked for `<root>/mingw64/bin/bash.exe`
and reported "Could not locate Git for Windows Bash" even though
`<root>/bin/bash.exe` exists. Every Makefile recipe that runs a repository
shell script failed on those hosts.

Resolve the shell under the Git installation root instead, and mirror the rule
in `backend/tests/support/shell.py` (documented as mirroring the wrapper) so
the shell-script suites stop skipping on the same hosts.

* test(backend): pin both Git layouts in one shell-discovery suite

Review follow-up for the PortableGit probe:

- `_git_roots` now probes `git.exe`'s parent and grandparent unconditionally —
  exactly the two directories the Makefile wrapper checks — so the batch probe
  and the Python mirror cannot drift; the docstring records that the first
  `mingw64` candidate normally misses and is kept only to mirror it.
- fold the candidate-layout cases and the Windows-only wrapper case into
  `tests/test_support_shell.py`, which already owns this module's unit tests,
  instead of a second file with a duplicate `_touch` helper.
- report the wrapper's stdout in the failure message: its diagnostic goes to
  stdout, so `stderr` was empty on the discovery-failure path.
2026-10-21 22:39:00 +08:00
..
wizard feat: add API Route setup wizard preset (#6579) 2026-10-18 09:26:45 +08:00
_detector_cli.py chore(blocking-io): fail-loud repo-root resolution and shared detector CLI shim (#3512) 2026-06-12 17:16:01 +08:00
AGENTS.md fix(scripts): find Git Bash under a PortableGit mingw64 layout (#7214) 2026-10-21 22:39:00 +08:00
bump_version.sh fix(release): refresh backend/uv.lock when bumping the version (#5859) 2026-09-25 20:42:27 +08:00
check-data-not-in-use.sh fix(make): name what make clean deletes and refuse under a live gateway (#6351) 2026-10-06 15:32:46 +08:00
check.py fix(check): preserve UTF-8 dependency diagnostics (#6485) 2026-10-08 17:44:10 +08:00
check.sh feat(dx): Setup Wizard + doctor command — closes #2030 (#2034) 2026-04-10 17:43:39 +08:00
check_agent_guidance.py fix(ci): fix the Agents.md size check test error (#4978) 2026-08-24 08:52:01 +08:00
check_chart_sandbox_service.sh fix(helm): default sandbox Services to ClusterIP (#3929) (#4190) 2026-07-16 14:30:05 +08:00
check_chart_sandbox_storage.sh fix(helm): align provisioner state root for PVC mounts (#5625) 2026-09-23 10:31:17 +08:00
check_chart_skill_upload_size.sh feat(skills): install local skill archives (#5039) 2026-08-31 15:22:45 +08:00
check_config_version.sh ci: add nightly build for images + helm chart (#4050) 2026-07-11 18:29:48 +08:00
check_extension.py feat(extensions): add example guide and packaging checks (#6755) 2026-10-12 22:51:20 +08:00
cleanup-containers.sh fix(scripts): select sandbox containers by anchored name (#7189) 2026-10-21 20:57:02 +08:00
config-upgrade.sh fix(scripts): feed config-upgrade inline python on stdin, not argv (#6845) 2026-10-14 15:04:52 +08:00
configure.py fix(config): avoid Unicode failure after generating configuration (#7102) 2026-10-21 16:03:39 +08:00
deploy.sh feat(deploy): select production Compose env files (#6522) 2026-10-21 15:58:30 +08:00
detect_blocking_io_static.py chore(blocking-io): fail-loud repo-root resolution and shared detector CLI shim (#3512) 2026-06-12 17:16:01 +08:00
detect_thread_boundaries.py chore(blocking-io): fail-loud repo-root resolution and shared detector CLI shim (#3512) 2026-06-12 17:16:01 +08:00
detect_uv_extras.py fix(scripts): honor project root when detecting optional extras (#6934) 2026-10-18 07:45:41 +08:00
dev_multi_instance.py feat(channels): arbitrate IM transports with a per-provider leader lease (#6843) 2026-10-14 13:51:42 +08:00
dev_multi_instance.sh feat(channels): arbitrate IM transports with a per-provider leader lease (#6843) 2026-10-14 13:51:42 +08:00
docker.sh fix(docker): make dev provisioner opt-in via compose profile (#6948) 2026-10-20 09:10:24 +08:00
doctor.py fix(config): avoid Unicode failure after generating configuration (#7102) 2026-10-21 16:03:39 +08:00
export_claude_code_oauth.py fix(scripts): reject invalid Claude Keychain credential containers (#6281) 2026-10-05 15:39:32 +08:00
load_memory_sample.py feat(memory): bulk-load sample for registered users (#4066) 2026-09-24 09:08:32 +08:00
nginx-local-conf.sh fix(scripts): reject local BIND_HOST values nginx would misread (#6635) 2026-10-11 10:48:31 +08:00
nginx.sh fix(scripts): bind local make dev and make start to loopback (#6587) 2026-10-10 15:47:30 +08:00
pnpm.py fix(scripts): prefer Windows .cmd shims for pnpm (#5305) 2026-09-11 18:41:24 +08:00
review_changed_public_skills.py fix(ci):resolve the skill_review errors (#5121) 2026-08-31 23:17:39 +08:00
run-with-git-bash.cmd fix(scripts): find Git Bash under a PortableGit mingw64 layout (#7214) 2026-10-21 22:39:00 +08:00
sandbox-mode.sh fix(docker): handle empty provisioner URLs in both launchers (#6945) 2026-10-16 17:01:51 +08:00
sandbox_memory_profile.py chore: add sandbox memory profiling tools (#3249) 2026-06-03 22:02:27 +08:00
scan_changed_blocking_io.py chore(blocking-io): fail-loud repo-root resolution and shared detector CLI shim (#3512) 2026-06-12 17:16:01 +08:00
serve.sh fix(scripts): honor project root when detecting optional extras (#6934) 2026-10-18 07:45:41 +08:00
setup-sandbox.sh fix(setup): accept successful Apple Container image pulls (#5804) 2026-09-24 15:10:25 +08:00
setup_wizard.py fix(config): avoid Unicode failure after generating configuration (#7102) 2026-10-21 16:03:39 +08:00
skill_review_waivers.py ci: preauthorize skill review waiver hashes (#5143) 2026-09-02 16:54:23 +08:00
start-daemon.sh fix(scripts): invoke repo shell scripts through an explicit interpreter (#5031) 2026-08-29 14:54:02 +08:00
support_bundle.py fix(support-bundle): retain diagnostics when dotenv cannot be read (#6536) 2026-10-10 20:02:39 +08:00
sync_labels.py feat(ci): PR/issue auto-labeling + declarative label sync (#3360) 2026-06-03 16:40:24 +08:00
tool-error-degradation-detection.sh refactor(lead-agent): make build_middlewares public to drop the last cross-module private import (#3458) 2026-06-09 11:56:28 +08:00
verify_versions.sh fix(release): reject a stale backend/uv.lock in the version gate (#6588) 2026-10-10 14:05:35 +08:00
wait-for-port.sh Fix 'make dev' failure in Windows environment (#3236) 2026-06-09 22:37:54 +08:00