From: Max Vilimpoc Date: Fri, 28 Aug 2026 00:04:08 +0000 (+0200) Subject: dotfiles: give git the ssh.exe that pushes at line rate X-Git-Url: https://vilimpoc.org/repos/dotfiles/commitdiff_plain/2bbc9b414ffb45df936ca1169795cb8e07bb1863?ds=sidebyside;hp=2bbc9b414ffb45df936ca1169795cb8e07bb1863 dotfiles: give git the ssh.exe that pushes at line rate core.sshCommand pointed at the in-box System32 client, which reads its stdin 3KB at a time -- the same limit that held an rsync push to ~17MB/s, and it applies to anything git pushes through it too. The elevated half now unpacks a client without that limit beside rsync.exe, so prefer it and keep the in-box one as the fallback. Same client from the same source: same ~/.ssh, same ssh-agent named pipe, same known_hosts. Candidates are tried by RUNNING them rather than by Test-Path. The fast build carries no libcrypto of its own -- it links the one the OpenSSH Client capability puts in System32 -- so on an image without that capability it is a file that exists and a binary that will not start, and the next `git push` is a bad place to discover it. Two traps in doing that from this script: with $ErrorActionPreference = 'Stop' a native command's stderr becomes a terminating error, and `ssh -V` writes its version to stderr, so the WORKING client is the one that looks broken; and an exe that cannot start never sets $LASTEXITCODE, leaving the stale 0 from the last native command that did run to read as success. Hence the EAP dance and the explicit $global:LASTEXITCODE = $null. setup-windows.bat runs the elevated half first for this: the fast ssh.exe has to be on disk before the git config step can prefer it. The non-elevated half still runs when the elevated one failed -- nothing in it depends on that half, and the fallback is the client Windows already has -- and the elevated exit code is still what the batch file exits with. Exercised against real binaries under Windows PowerShell 5.1, with GIT_CONFIG_GLOBAL pointed at a scratch file: fast client present picks 10.0p2, install directory empty falls back to the in-box 9.5p1, a candidate that exits non-zero and one that cannot start at all both warn and fall back. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01D4ozcQcqMSJBi2Ez4Pfxyc ---