GNU bug report logs - #68174
30.0.50; Project and VC disagree about what repository we're in

Previous Next

Package: emacs;

Reported by: Sean Whitton <spwhitton <at> spwhitton.name>

Date: Sun, 31 Dec 2023 13:27:02 UTC

Severity: normal

Found in version 30.0.50

Fixed in version 30.1

Done: Dmitry Gutov <dmitry <at> gutov.dev>

Bug is archived. No further changes may be made.

Full log


Message #8 received at 68174 <at> debbugs.gnu.org (full text, mbox):

From: Dmitry Gutov <dmitry <at> gutov.dev>
To: Sean Whitton <spwhitton <at> spwhitton.name>, 68174 <at> debbugs.gnu.org
Cc: juri <at> linkov.net
Subject: Re: bug#68174: 30.0.50; Project and VC disagree about what repository
 we're in
Date: Tue, 2 Jan 2024 05:31:20 +0200
Hi!

On 31/12/2023 15:26, Sean Whitton wrote:
> X-debbugs-cc:juri <at> linkov.net
> 
> Hello,
> 
> 1. emacs -q
> 2. (setopt vc-deduce-backend-nonvc-modes t)
> 3. C-x C-f ~/src/dotfiles/.emacs.d/init.el RET
> 4. C-x p p ~/src/emacs/  RET o C-x v L
> 5. (project-root (project-current)) => "~/src/emacs/"
> 6. C-x v +
>     - git pull is attempted in ~/src/dotfiles/.
> 
> You're in a*vc-change-log*  for emacs.git, and (project-current) returns
> the correct project.  But C-x v + operates in ~/src/dotfiles/.

Thanks for the report.

I general, the problem looks unsolvable (or at least hard) because 
various VC-related buffers look back on the fileset that spawned them 
through the variable vc-parent-buffer. And that one is often just set to 
the buffer that was previous before the current one was created (in 
vc-setup-buffer).

This particular case though seems fixed with this patch, please test:

diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index 3cd835a9d6b..82051740b8f 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -1074,6 +1074,7 @@ vc-expand-dirs

 (defvar vc-dir-backend)
 (defvar log-view-vc-backend)
+(defvar log-view-vc-fileset)
 (defvar log-edit-vc-backend)
 (defvar diff-vc-backend)
 (defvar diff-vc-revisions)
@@ -1155,6 +1156,8 @@ vc-deduce-fileset
 	      (vc-state buffer-file-name)
 	      (vc-checkout-model backend buffer-file-name))
 	(list backend (list buffer-file-name))))
+     ((derived-mode-p 'log-view-mode)
+      (list log-view-vc-backend log-view-vc-fileset))
      ((and (buffer-live-p vc-parent-buffer)
            ;; FIXME: Why this test?  --Stef
            (or (buffer-file-name vc-parent-buffer)





This bug report was last modified 1 year and 136 days ago.

Previous Next


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