GNU bug report logs -
#73801
31.0.50; project-try-vc sometimes set wrong cache project-vc-extra-root-markers
Previous Next
Reported by: Zhengyi Fu <i <at> fuzy.me>
Date: Mon, 14 Oct 2024 08:16:03 UTC
Severity: normal
Found in version 31.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 #11 received at 73801 <at> debbugs.gnu.org (full text, mbox):
Hi! Thanks for the report.
On 14/10/2024 09:29, Zhengyi Fu wrote:
> Consider the following project:
>
> test-project/
> ├── .git/
> └── subproject/
> ├── marker
> └── subdir/
>
> If `project-vc-extra-root-markers' is set to `("marker")' and
> `project-try-vc' is invoked with `test-project/subproject/subdir', it will set the `project-vc'
> VC property of the `test-project/subproject' directory to
> `(".../test-project" project-vc nil)', so if later `project-try-vc' is
> invoked with that directory, it will return a wrong result.
>
> This is because project-vc tries to detect the VC backend by invoking
> `project-try-vc' on the subproject while let binding
> `project-vc-extra-root-markers' to nil and the result is cached.
>
> The following patch can fix the problem:
>
> --- a/lisp/progmodes/project.el
> +++ b/lisp/progmodes/project.el
> @@ -595,7 +595,7 @@ project-try-vc
> (let* ((project-vc-extra-root-markers nil)
> ;; Avoid submodules scan.
> (enable-dir-local-variables nil)
> - (parent (project-try-vc root)))
> + (parent (project-try-vc dir)))
> (and parent (setq backend (nth 1 parent)))))
> (setq project (list 'vc backend root))
I've pushed a different fix in commit 29b30eb49f8 (with slightly better
performance, I think).
Please try it when you can.
It would be nice to get either of the patches into Emacs 30, too, but it
might be a little late given where it is in the pretest.
This bug report was last modified 204 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.