Subject: bug#66211: 30.0.50; C-x v v in vc-diff does not work with lesser versionf of patch

From: Dmitry Gutov <[email-masked]>
Date: Tue, 26 Sep 2023 16:38:28 +0300

On 26/09/2023 15:43, Alfred M. Szmidt wrote:
>     > The C-x v v command in a*vc-diff*  buffer does not work if you have a
>     > lesser version of patch, e.g., the one on OpenBSD:
>     >
>     > user-error: Patch failed: patch: unknown option -- no-backup-if-mismatch
>     > usage: patch [-bCcEeflNnRstuv] [-B backup-prefix] [-D symbol] [-d directory]
>     >               [-F max-fuzz] [-i patchfile] [-o out-file] [-p strip-count]
>     >               [-r rej-name] [-V t | nil | never] [-x number] [-z backup-ext]
>     >               [--posix] [origfile [patchfile]]
>     >         patch <patchfile
> 
>     Thanks for the report.
> 
>     Any idea how to implement the same thing using your version of 'patch'?
> 
> Maybe just pass --posix for both GNU patch and other patch?

All right. Does this work for you?

diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index 2f4b028bb4a..356da5ddfac 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -1724,7 +1724,8 @@ vc-default-checkin-patch
                                               nil
                                               "-p1"
                                               "-r" null-device
-                                             "--no-backup-if-mismatch"
+                                             "--posix"
+                                             "--remove-empty-files"
                                               "-i" "-"))
                (user-error "Patch failed: %s" (buffer-string))))
            (vc-call-backend backend 'checkin files comment))