GNU bug report logs - #43464
28.0.50; vc: Error calling vc-revert for repo root

Previous Next

Package: emacs;

Reported by: Andrii Kolomoiets <andreyk.mad <at> gmail.com>

Date: Thu, 17 Sep 2020 07:30:02 UTC

Severity: normal

Tags: confirmed

Merged with 37310

Found in versions 27.0.50, 28.0.50

Done: Sean Whitton <spwhitton <at> spwhitton.name>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Andrii Kolomoiets <andreyk.mad <at> gmail.com>
Subject: bug#43464: closed (Re: bug#43464: 28.0.50; vc: Error calling
 vc-revert for repo root)
Date: Mon, 17 Feb 2025 07:43:02 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#43464: 28.0.50; vc: Error calling vc-revert for repo root

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 43464 <at> debbugs.gnu.org.

-- 
43464: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=43464
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Sean Whitton <spwhitton <at> spwhitton.name>
To: Dmitry Gutov <dgutov <at> yandex.ru>
Cc: 43464-done <at> debbugs.gnu.org, Andrii Kolomoiets <andreyk.mad <at> gmail.com>
Subject: Re: bug#43464: 28.0.50; vc: Error calling vc-revert for repo root
Date: Mon, 17 Feb 2025 15:42:13 +0800
Hello,

On Tue 13 Oct 2020 at 02:59pm +03, Dmitry Gutov wrote:

> On 11.10.2020 23:28, Andrii Kolomoiets wrote:
>
>> Does those kind of changes should be applied to any function that uses
>> 'vc-call' and can be called on dirs?
>
> I think so. Since none of them should work on directories now, it should be
> accompanied with some doc changes as well.

I went through all uses of vc-call in emacs.git and found that the only
two which would make sense to apply to directories are vc-rename-file
and vc-revert-file.  I've added a FIXME to the former.

>>> Also, your patch makes vc-registered work on directories.
>> How is that?  'vc-registered' is still returns nil for directories.  The
>> changes affects only the side effect of it.
>
> Oh, now I finally understand what it's doing.
>
> You can probably see how it's not ideal control flow (call a function, see it
> return nil, and then rely on its undocumented side-effect).
>
> So if we can avoid doing that and still fix the bug, the alternative approach
> should be preferable.

I'm not sure what you meant here, because Andrii's patch still has the
problem of creating cache entries for directories that will never be
invalidated.  That's more significant than the control flow issue.

I've now installed a change to fix this bug based on Dmitry's approach.

-- 
Sean Whitton

[Message part 3 (message/rfc822, inline)]
From: Andrii Kolomoiets <andreyk.mad <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 28.0.50; vc: Error calling vc-revert for repo root
Date: Thu, 17 Sep 2020 10:29:08 +0300
1. Create repo with modified file:
   mkdir gittest
   cd gittest
   git init
   touch foo.txt
   git add .
   git commit -m "foo"
   echo "bar" > foo.txt
2. emacs -Q
3. C-x v d
4. C-x v u
5. Confirm discarding changes

Debugger entered--Lisp error: (file-missing "Cannot open load file" "No such file or directory" "vc-nil")
  require(vc-nil)
  vc-find-backend-function(nil make-version-backups-p)
  vc-call-backend(nil make-version-backups-p "/private/tmp/gittest/")
  vc-version-backup-file("/private/tmp/gittest/")
  vc-revert-file("/private/tmp/gittest/")
  vc-revert()
  funcall-interactively(vc-revert)
  call-interactively(vc-revert nil nil)
  command-execute(vc-revert)

At least for `hg` and `git` backends.  Maybe because `vc-registered` for
repo root is nil.

Same error in Emacs 26 and 27.



This bug report was last modified 144 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.