Subject: bug#60897: 29.0.60; vc-revert fails to revert buffer

From: Juri Linkov <[email-masked]>
Date: Sun, 22 Jan 2023 19:12:53 +0200

> Here's what I see:
>
> 1. edit two versioned files
> 2. mark them both in vc-dired
> 3. = to show the diff for the two marked files
> 4. C-x v u
>
> In emacs 27 and 28, both files are reverted.

In emacs 27 and 28 reverting was unpredictable
and depended on the parent buffer of *vc-diff*.
So for example, after typing = at the top of the vc-dir buffer
without marking files, C-x v u failed with such error:

  (file-missing "Cannot open load file" "No such file or directory" "vc-nil")

> It seemed to go back to normal with commit
> 4803fba487d41f0817feab48b5095ef4b4940ff6 on my daily driver
> openSUSE laptop, but it's not working on my home FreeBSD box!
> I'll look into that more...
>
> I can't seem to make that fail a second time.  But this was the
> error message I got:
>
> vc-do-command: Failed (status 128): git --no-pager apply --cached ../../../../tmp/git-patch11lenk

Did it pop up a buffer with an error output message?

> Which is a pretty strange path and which does not exist.  If you
> add one more ../ (five total) you will indeed reach /tmp but that
> would be a strange way to reference it.

Hmm, the error comes from (vc-git-command nil 0 patch-file "apply" "--cached")
where patch-file is created by (make-nearby-temp-file "git-patch").
I guess make-nearby-temp-file makes such a relative name that looks strange.