GNU bug report logs -
#50175
28.0.50; tramp is hooked into C-x d (vc-dir) but not C-x = (vc-doff)
Previous Next
Reported by: sds <at> gnu.org
Date: Mon, 23 Aug 2021 22:23:01 UTC
Severity: normal
Found in version 28.0.50
Done: Dmitry Gutov <dgutov <at> yandex.ru>
Bug is archived. No further changes may be made.
Full log
Message #16 received at 50175-done <at> debbugs.gnu.org (full text, mbox):
Hi!
On 25.08.2021 18:45, Steingold wrote:
> Hi Ola, Lars, Dmitry,
>
>> * Ola x Nilsson<byn.k.avyffba <at> nkvf.pbz> [2021-08-25 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
> I do have all these patches, but, alas, I still see the bug.
> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=39452
> has no messages for 10 days, I hope it is being worked on...
We indeed applied a patch that's been lying around for a while and keep
finding regressions.
Now I was curious to see how we generally avoid passing remote file
names (in Tramp syntax) to Git and other VCS, and it turns out
vc-do-command, which almost all calls go though, converts all file names
to relative ones.
Which the new literal-pathspecs approach in vc-git conflicts with. I'm
still not loving the idea of a dynamic variable to enable/disable the
use of env var (fix for the problem we/I have met with the other
approach), but it's becoming increasingly attractive.
That said, I've just pushed a fix (commit 2b62b2a019), please see how it
works for you.
This bug report was last modified 3 years and 273 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.