Subject: Re: bug#50175: 28.0.50; tramp is hooked into C-x d (vc-dir) but not C-x = (vc-doff)

From: Ola x Nilsson <[email-masked]>
Date: Wed, 25 Aug 2021 15:26:34 +0200

On Mon, Aug 23 2021, Steingold wrote:

> when editing a remote file, vc-dir shows the *vc-dir* buffer correctly,
> but vc-diff in the same buffer fails:
>
> Debugger entered--Lisp error: (error "Failed (status 128): git --no-pager diff-index --exit-code -p HEAD  -- :(literal)/scp:remote:/path/file.py")
>   signal(error ("Failed (status 128): git --no-pager diff-index --exit-code -p HEAD  -- :(literal)/scp:remote:/path/file.py"))
>   error("Failed (%s): %s" "status 128" "git --no-pager diff-index --exit-code -p HEAD  -- :(literal)/scp:remote:/path/file.py")
>   vc-do-command("*vc-diff*" 1 "git" (":(literal)/scp:remote:/path/file.py") "--no-pager" "diff-index" "--exit-code" "-p" "HEAD" nil "--")
>   apply(vc-do-command "*vc-diff*" 1 "git" (":(literal)/scp:remote:/path/file.py") ("--no-pager" "diff-index" "--exit-code" "-p" "HEAD" nil "--"))
>   vc-git-command("*vc-diff*" 1 (":(literal)/scp:remote:/path/file.py") "diff-index" "--exit-code" "-p" "HEAD" nil "--")
>   apply(vc-git-command "*vc-diff*" 1 (":(literal)/scp:remote:/path/file.py") "diff-index" "--exit-code" ("-p" "HEAD" nil "--"))
>   vc-git-diff(("/scp:remote:/path/file.py") nil nil "*vc-diff*" t)
>   apply(vc-git-diff (("/scp:remote:/path/file.py") nil nil "*vc-diff*" t))
>   vc-call-backend(Git diff ("/scp:remote:/path/file.py") nil nil "*vc-diff*" t)
>   vc-diff-internal(t (Git ("/scp:remote:/path/file.py")) nil nil t)
>   vc-diff(nil t)
>   funcall-interactively(vc-diff nil t)
>   call-interactively(vc-diff nil nil)
>   command-execute(vc-diff)
>
> Same error on = (vc-diff) in the *vc-dir* buffer.
>
> I am pretty sure this is a regression from about 2-3 weeks ago.
>
> (vc-next-action also fails)

This is the result of the git literal pathspec prefix being added in a
non-tramp-aware way.  See bug #39452.  The commits in question are

3502321403 Fix regressions in the last change
3572613550 Fix vc-git-state for filenames with wildcards

-- 
Ola Nilsson