Skip to content

v0.5.6: The `patch` a machine happens to have is now checked for being new enough, not just for being GNU

Choose a tag to compare

@github-actions github-actions released this 29 Sep 18:41
· 129 commits to main since this release

Fixed

  • An old patch on PATH aborted on every repair inside a package, and
    nothing said why.
    GNU patch 2.5.9 fails an internal assertion when a hunk
    writes into a subdirectory, which is what a package-seeded implementation is
    made of. It is from 2002, and Strawberry Perl, the usual Perl distribution
    for Windows, installs it ahead of Git's copy on PATH. The existing guard
    only asks whether a patch is GNU, which this one is: it takes --fuzz and
    --dry-run without complaint and then dies with a dialog naming a line in
    patch's own C source, so a Windows user saw every FIX fail for a reason no
    message connected to the binary they never chose. qikly now asks each
    candidate for its version and steps over anything below 2.7, which finds the
    current GNU patch that Git for Windows ships under usr\bin even when
    another one comes first. A patch whose version cannot be read is still
    used, so nothing that works today stops working. The version is a
    preference rather than a veto: where no candidate is new enough, the first
    is still used, because an older patch refuses these flags outright and
    says so, and on macOS without gpatch that is Apple's own. The one refusal
    is a patch between 2.5 and 2.7, which accepts the flags and then aborts;
    there the error names each binary, its version, and the fix for the
    platform, since nothing else would connect the crash to the cause. Found on
    GitHub's own Windows runners, which preinstall Strawberry Perl.