GNU bug report logs -
#78987
30.1; Unable to create new Git repository in Dired mode
Previous Next
To reply to this bug, email your comments to 78987 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78987
; Package
emacs
.
(Wed, 09 Jul 2025 21:57:09 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
"Zipei Lu" <zipeilu <at> qq.com>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Wed, 09 Jul 2025 21:57:10 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
Here are the steps to reproduce the bug:
1. 'C-x d' to arbitrary directory without any version control repository.
2. Mark arbitrary number of files with 'm'.
3. Type 'C-x v v'.
Then the mini buffer will display:
No VC backend is responsible for c:/my/directory/
According to GNU Emacs manual 30.1.3.1, 'C-x v v' is expected to create
a new repository in the directory. However, 'C-x v v' can still be able to create
new repository in the buffer of a file(Not in the buffer of directory).
Zipei Lu
zipeilu <at> qq.com
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78987
; Package
emacs
.
(Thu, 10 Jul 2025 00:30:05 GMT)
Full text and
rfc822 format available.
Message #8 received at 78987 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
On Thu, 10 Jul 2025 03:37:40 +0800 "Zipei Lu" via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org> wrote:
> Here are the steps to reproduce the bug:
> 1. 'C-x d' to arbitrary directory without any version control repository.
> 2. Mark arbitrary number of files with 'm'.
> 3. Type 'C-x v v'.
>
> Then the mini buffer will display:
>
> No VC backend is responsible for c:/my/directory/
>
> According to GNU Emacs manual 30.1.3.1, 'C-x v v' is expected to create
> a new repository in the directory. However, 'C-x v v' can still be able to create
> new repository in the buffer of a file(Not in the buffer of directory).
This patch seems to DTRT, at least on initial testing with -Q:
[Message part 2 (text/x-patch, inline)]
diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
index e5b08af2a30..d8b195d9a12 100644
--- a/lisp/dired-aux.el
+++ b/lisp/dired-aux.el
@@ -4022,8 +4022,9 @@ dired-vc-next-action
;;;###autoload
(defun dired-vc-deduce-fileset
(&optional state-model-only-files not-state-changing)
- (let ((backend (vc-responsible-backend default-directory))
- (files (dired-get-marked-files nil nil nil nil t)))
+ (let* ((files (dired-get-marked-files nil nil nil nil t))
+ (backend (or (vc-responsible-backend default-directory t)
+ (vc-backend-for-registration (car files)))))
(when (and (not not-state-changing)
(cl-some #'file-directory-p files))
(user-error "\
[Message part 3 (text/plain, inline)]
Steve Berman
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78987
; Package
emacs
.
(Thu, 10 Jul 2025 00:31:01 GMT)
Full text and
rfc822 format available.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78987
; Package
emacs
.
(Fri, 11 Jul 2025 08:37:02 GMT)
Full text and
rfc822 format available.
Message #14 received at 78987 <at> debbugs.gnu.org (full text, mbox):
Hello,
On Thu 10 Jul 2025 at 02:29am +02, Stephen Berman via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote:
> On Thu, 10 Jul 2025 03:37:40 +0800 "Zipei Lu" via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org> wrote:
>
>> Here are the steps to reproduce the bug:
>> 1. 'C-x d' to arbitrary directory without any version control repository.
>> 2. Mark arbitrary number of files with 'm'.
>> 3. Type 'C-x v v'.
>>
>> Then the mini buffer will display:
>>
>> No VC backend is responsible for c:/my/directory/
>>
>> According to GNU Emacs manual 30.1.3.1, 'C-x v v' is expected to create
>> a new repository in the directory. However, 'C-x v v' can still be able to create
>> new repository in the buffer of a file(Not in the buffer of directory).
>
> This patch seems to DTRT, at least on initial testing with -Q:
>
> diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
> index e5b08af2a30..d8b195d9a12 100644
> --- a/lisp/dired-aux.el
> +++ b/lisp/dired-aux.el
> @@ -4022,8 +4022,9 @@ dired-vc-next-action
> ;;;###autoload
> (defun dired-vc-deduce-fileset
> (&optional state-model-only-files not-state-changing)
> - (let ((backend (vc-responsible-backend default-directory))
> - (files (dired-get-marked-files nil nil nil nil t)))
> + (let* ((files (dired-get-marked-files nil nil nil nil t))
> + (backend (or (vc-responsible-backend default-directory t)
> + (vc-backend-for-registration (car files)))))
> (when (and (not not-state-changing)
> (cl-some #'file-directory-p files))
> (user-error "\
I think this is okay, please install.
--
Sean Whitton
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78987
; Package
emacs
.
(Fri, 11 Jul 2025 09:06:02 GMT)
Full text and
rfc822 format available.
Message #17 received at 78987 <at> debbugs.gnu.org (full text, mbox):
Hello,
On Fri 11 Jul 2025 at 09:36am +01, Sean Whitton wrote:
>> diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
>> index e5b08af2a30..d8b195d9a12 100644
>> --- a/lisp/dired-aux.el
>> +++ b/lisp/dired-aux.el
>> @@ -4022,8 +4022,9 @@ dired-vc-next-action
>> ;;;###autoload
>> (defun dired-vc-deduce-fileset
>> (&optional state-model-only-files not-state-changing)
>> - (let ((backend (vc-responsible-backend default-directory))
>> - (files (dired-get-marked-files nil nil nil nil t)))
>> + (let* ((files (dired-get-marked-files nil nil nil nil t))
>> + (backend (or (vc-responsible-backend default-directory t)
>> + (vc-backend-for-registration (car files)))))
>> (when (and (not not-state-changing)
>> (cl-some #'file-directory-p files))
>> (user-error "\
>
> I think this is okay, please install.
No, wait. I think that we need to pass down the allow-unregistered
argument from vc-deduce-fileset to dired-vc-deduce-fileset, and only
if that's non-nil can we call vc-backend-for-registration.
--
Sean Whitton
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78987
; Package
emacs
.
(Fri, 11 Jul 2025 09:35:02 GMT)
Full text and
rfc822 format available.
Message #20 received at 78987 <at> debbugs.gnu.org (full text, mbox):
On Fri, 11 Jul 2025 10:05:00 +0100 Sean Whitton <spwhitton <at> spwhitton.name> wrote:
> Hello,
>
> On Fri 11 Jul 2025 at 09:36am +01, Sean Whitton wrote:
>
>>> diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
>>> index e5b08af2a30..d8b195d9a12 100644
>>> --- a/lisp/dired-aux.el
>>> +++ b/lisp/dired-aux.el
>>> @@ -4022,8 +4022,9 @@ dired-vc-next-action
>>> ;;;###autoload
>>> (defun dired-vc-deduce-fileset
>>> (&optional state-model-only-files not-state-changing)
>>> - (let ((backend (vc-responsible-backend default-directory))
>>> - (files (dired-get-marked-files nil nil nil nil t)))
>>> + (let* ((files (dired-get-marked-files nil nil nil nil t))
>>> + (backend (or (vc-responsible-backend default-directory t)
>>> + (vc-backend-for-registration (car files)))))
>>> (when (and (not not-state-changing)
>>> (cl-some #'file-directory-p files))
>>> (user-error "\
>>
>> I think this is okay, please install.
>
> No, wait. I think that we need to pass down the allow-unregistered
> argument from vc-deduce-fileset to dired-vc-deduce-fileset, and only
> if that's non-nil can we call vc-backend-for-registration.
When I test with -Q, a Git repository is created and either the file at
point or the marked files in Dired are added to it, although
`vc-deduce-fileset' calls `(dired-vc-deduce-fileset
state-model-only-files not-state-changing)', i.e., without passing
`allow-unregistered'; so why do you think it must be passed (and
non-nil)?
Steve Berman
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78987
; Package
emacs
.
(Fri, 11 Jul 2025 11:13:02 GMT)
Full text and
rfc822 format available.
Message #23 received at 78987 <at> debbugs.gnu.org (full text, mbox):
> Cc: zipeilu <at> qq.com, Stephen Berman <stephen.berman <at> gmx.net>
> From: Sean Whitton <spwhitton <at> spwhitton.name>
> Date: Fri, 11 Jul 2025 09:36:14 +0100
>
> Hello,
>
> On Thu 10 Jul 2025 at 02:29am +02, Stephen Berman via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote:
>
> > On Thu, 10 Jul 2025 03:37:40 +0800 "Zipei Lu" via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org> wrote:
> >
> >> Here are the steps to reproduce the bug:
> >> 1. 'C-x d' to arbitrary directory without any version control repository.
> >> 2. Mark arbitrary number of files with 'm'.
> >> 3. Type 'C-x v v'.
> >>
> >> Then the mini buffer will display:
> >>
> >> No VC backend is responsible for c:/my/directory/
> >>
> >> According to GNU Emacs manual 30.1.3.1, 'C-x v v' is expected to create
> >> a new repository in the directory. However, 'C-x v v' can still be able to create
> >> new repository in the buffer of a file(Not in the buffer of directory).
> >
> > This patch seems to DTRT, at least on initial testing with -Q:
> >
> > diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
> > index e5b08af2a30..d8b195d9a12 100644
> > --- a/lisp/dired-aux.el
> > +++ b/lisp/dired-aux.el
> > @@ -4022,8 +4022,9 @@ dired-vc-next-action
> > ;;;###autoload
> > (defun dired-vc-deduce-fileset
> > (&optional state-model-only-files not-state-changing)
> > - (let ((backend (vc-responsible-backend default-directory))
> > - (files (dired-get-marked-files nil nil nil nil t)))
> > + (let* ((files (dired-get-marked-files nil nil nil nil t))
> > + (backend (or (vc-responsible-backend default-directory t)
> > + (vc-backend-for-registration (car files)))))
> > (when (and (not not-state-changing)
> > (cl-some #'file-directory-p files))
> > (user-error "\
>
> I think this is okay, please install.
Please don't ignore my comment in
https://lists.gnu.org/archive/html/help-gnu-emacs/2025-07/msg00090.html
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78987
; Package
emacs
.
(Fri, 11 Jul 2025 11:50:02 GMT)
Full text and
rfc822 format available.
Message #26 received at 78987 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
On Fri, 11 Jul 2025 14:12:38 +0300 Eli Zaretskii <eliz <at> gnu.org> wrote:
>> Cc: zipeilu <at> qq.com, Stephen Berman <stephen.berman <at> gmx.net>
>> From: Sean Whitton <spwhitton <at> spwhitton.name>
>> Date: Fri, 11 Jul 2025 09:36:14 +0100
>>
>> Hello,
>>
>> On Thu 10 Jul 2025 at 02:29am +02, Stephen Berman via "Bug reports for GNU
>> Emacs, the Swiss army knife of text editors" wrote:
>>
>> > On Thu, 10 Jul 2025 03:37:40 +0800 "Zipei Lu" via "Bug reports for GNU
>> > Emacs, the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
>> > wrote:
>> >
>> >> Here are the steps to reproduce the bug:
>> >> 1. 'C-x d' to arbitrary directory without any version control repository.
>> >> 2. Mark arbitrary number of files with 'm'.
>> >> 3. Type 'C-x v v'.
>> >>
>> >> Then the mini buffer will display:
>> >>
>> >> No VC backend is responsible for c:/my/directory/
>> >>
>> >> According to GNU Emacs manual 30.1.3.1, 'C-x v v' is expected to create
>> >> a new repository in the directory. However, 'C-x v v' can still be able
>> >> to create
>> >> new repository in the buffer of a file(Not in the buffer of directory).
>> >
>> > This patch seems to DTRT, at least on initial testing with -Q:
>> >
>> > diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
>> > index e5b08af2a30..d8b195d9a12 100644
>> > --- a/lisp/dired-aux.el
>> > +++ b/lisp/dired-aux.el
>> > @@ -4022,8 +4022,9 @@ dired-vc-next-action
>> > ;;;###autoload
>> > (defun dired-vc-deduce-fileset
>> > (&optional state-model-only-files not-state-changing)
>> > - (let ((backend (vc-responsible-backend default-directory))
>> > - (files (dired-get-marked-files nil nil nil nil t)))
>> > + (let* ((files (dired-get-marked-files nil nil nil nil t))
>> > + (backend (or (vc-responsible-backend default-directory t)
>> > + (vc-backend-for-registration (car files)))))
>> > (when (and (not not-state-changing)
>> > (cl-some #'file-directory-p files))
>> > (user-error "\
>>
>> I think this is okay, please install.
>
> Please don't ignore my comment in
>
> https://lists.gnu.org/archive/html/help-gnu-emacs/2025-07/msg00090.html
I wanted to reply to that so I'll do it here; here's the context:
> From: Eli Zaretskii <eliz <at> gnu.org>
> Subject: Re: Unable to create new Git repo with VC utilities
> To: Stephen Berman <stephen.berman <at> gmx.net>
> Cc: rpluim <at> gmail.com, lzpzipei <at> gmail.com, help-gnu-emacs <at> gnu.org
> Date: Thu, 10 Jul 2025 07:52:07 +0300 (1 day, 6 hours, 38 minutes ago)
>
>> From: Stephen Berman <stephen.berman <at> gmx.net>
>> Cc: rpluim <at> gmail.com, lzpzipei <at> gmail.com, help-gnu-emacs <at> gnu.org
>> Date: Wed, 09 Jul 2025 19:55:54 +0200
[...]
>> >> This patch seems to DTRT, at least on initial testing:
[...]
>> > Thanks, but vc-backend-for-registration is not autoloaded, so I think
>> > something is still missing.
>>
>> But vc-responsible-backend is called first and it is autoloaded.
>
> It is not a good idea to rely on that. It's fragile: one simple
> change to the source, and the command will signal an error.
I'm not sure what you mean by "one simple change to the source". But I
did see this warning after rebuilding emacs:
⛔ Warning (native-compiler): dired-aux.el:4027:24: Warning: the
function ‘vc-backend-for-registration’ is not known to be defined.
With the following patch, there is no longer such a warning; does it
also allay your reservations?
[Message part 2 (text/x-patch, inline)]
diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
index e5b08af2a30..3c6ef080f5f 100644
--- a/lisp/dired-aux.el
+++ b/lisp/dired-aux.el
@@ -4022,8 +4022,10 @@ dired-vc-next-action
;;;###autoload
(defun dired-vc-deduce-fileset
(&optional state-model-only-files not-state-changing)
- (let ((backend (vc-responsible-backend default-directory))
- (files (dired-get-marked-files nil nil nil nil t)))
+ (eval-when-compile (require 'vc))
+ (let* ((files (dired-get-marked-files nil nil nil nil t))
+ (backend (or (vc-responsible-backend default-directory t)
+ (vc-backend-for-registration (car files)))))
(when (and (not not-state-changing)
(cl-some #'file-directory-p files))
(user-error "\
[Message part 3 (text/plain, inline)]
Steve Berman
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#78987
; Package
emacs
.
(Fri, 11 Jul 2025 18:15:01 GMT)
Full text and
rfc822 format available.
Message #29 received at 78987 <at> debbugs.gnu.org (full text, mbox):
Hello,
On Fri 11 Jul 2025 at 11:33am +02, Stephen Berman via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote:
> When I test with -Q, a Git repository is created and either the file at
> point or the marked files in Dired are added to it, although
> `vc-deduce-fileset' calls `(dired-vc-deduce-fileset
> state-model-only-files not-state-changing)', i.e., without passing
> `allow-unregistered'; so why do you think it must be passed (and
> non-nil)?
It should be passed because the corresponding code path for vc-dir
passes allow-unregistered down. dired-vc-deduce-fileset is meant to be
just a dired version of the vc-dir code path in vc-deduce-fileset.
--
Sean Whitton
This bug report was last modified today.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.