GNU bug report logs - #65315
30.0.50; vc-dir fails with Git < 2.7.0

Previous Next

Package: emacs;

Reported by: Bob Rogers <rogers <at> rgrjr.com>

Date: Tue, 15 Aug 2023 18:53: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.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 65315 in the body.
You can then email your comments to 65315 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#65315; Package emacs. (Tue, 15 Aug 2023 18:53:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Bob Rogers <rogers <at> rgrjr.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Tue, 15 Aug 2023 18:53:02 GMT) Full text and rfc822 format available.

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

From: Bob Rogers <rogers <at> rgrjr.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 30.0.50; vc-dir fails with Git < 2.7.0
Date: Tue, 15 Aug 2023 11:52:35 -0700
[Message part 1 (text/plain, inline)]
   1.  On a system with a version of Git older than 2.7.0, navigate to a
git-controlled directory and invoke "emacs -Q".

   2.  With this as the default directory, invoke vc-dir.  This fails
with the error "vc-do-command: Failed (status 129): git --no-pager
remote get-url origin ."

   This is because the "get-url" subcommand of "git remote", used by
vc-git-repository-url, was added in 2.7.0 [1].  The attached patch
against master rev 1db7e8eba961e88181879213dd5374ad9e87ac76 uses "git
config" in a way that works in both old and new systems (tested with git
2.1.2 and git 2.35.3).

   Of course, supporting 7+-year-old versions of git is probably not a
high priority, so I won't be too disappointed if this fix is rejected.
On the other hand, it's a small change, and having vc-dir fail on any
system, especially when using Git, puts a big damper on being able to
use Emacs to hack on things in older systems, so I think it's worth
having.

					-- Bob Rogers
					   http://www.rgrjr.com/

[1]  https://github.com/git/git/blob/master/Documentation/RelNotes/2.7.0.txt,
     line 13.

------------------------------------------------------------------------
In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
 3.24.34, cairo version 1.16.0) of 2023-08-15 built on orion
Repository revision: 1db7e8eba961e88181879213dd5374ad9e87ac76
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101004
System Description: openSUSE Leap 15.5

Configured using:
 'configure --with-dbus=no --with-gsettings=no --with-gif=ifavailable
 --with-tiff=no --with-gnutls=yes --with-gconf=no'

Configured features:
ACL CAIRO FREETYPE GIF GLIB GMP GNUTLS HARFBUZZ JPEG LIBSELINUX LIBXML2
MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS
TOOLKIT_SCROLL_BARS X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

[make-vc-git-repository-url-work-pre-2.7.0.patch (text/x-patch, inline)]
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index dfca944dc74..a7763360795 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -1342,8 +1342,10 @@ vc-git-conflicted-files
 (defun vc-git-repository-url (file-or-dir &optional remote-name)
   (let ((default-directory (vc-git-root file-or-dir)))
     (with-temp-buffer
-      (vc-git-command (current-buffer) 0 nil "remote" "get-url"
-                      (or remote-name "origin"))
+      ;; The "get-url" subcommand of "git remote" was new in git 2.7.0;
+      ;; "git config" also works in older versions.  -- rgr, 15-Aug-23.
+      (let ((opt-name (concat "remote." (or remote-name "origin") ".url")))
+	(vc-git-command (current-buffer) 0 (list "config" "--get" opt-name)))
       (buffer-substring-no-properties (point-min) (1- (point-max))))))
 
 ;; Everywhere but here, follows vc-git-command, which uses vc-do-command

Reply sent to Dmitry Gutov <dmitry <at> gutov.dev>:
You have taken responsibility. (Wed, 16 Aug 2023 01:34:01 GMT) Full text and rfc822 format available.

Notification sent to Bob Rogers <rogers <at> rgrjr.com>:
bug acknowledged by developer. (Wed, 16 Aug 2023 01:34:01 GMT) Full text and rfc822 format available.

Message #10 received at 65315-done <at> debbugs.gnu.org (full text, mbox):

From: Dmitry Gutov <dmitry <at> gutov.dev>
To: Bob Rogers <rogers <at> rgrjr.com>, 65315-done <at> debbugs.gnu.org
Subject: Re: bug#65315: 30.0.50; vc-dir fails with Git < 2.7.0
Date: Wed, 16 Aug 2023 04:33:04 +0300
Version: 30.1

On 15/08/2023 21:52, Bob Rogers wrote:
>     1.  On a system with a version of Git older than 2.7.0, navigate to a
> git-controlled directory and invoke "emacs -Q".
> 
>     2.  With this as the default directory, invoke vc-dir.  This fails
> with the error "vc-do-command: Failed (status 129): git --no-pager
> remote get-url origin ."
> 
>     This is because the "get-url" subcommand of "git remote", used by
> vc-git-repository-url, was added in 2.7.0 [1].  The attached patch
> against master rev 1db7e8eba961e88181879213dd5374ad9e87ac76 uses "git
> config" in a way that works in both old and new systems (tested with git
> 2.1.2 and git 2.35.3).

Thanks! Pushed to master.

>     Of course, supporting 7+-year-old versions of git is probably not a
> high priority, so I won't be too disappointed if this fix is rejected.
> On the other hand, it's a small change, and having vc-dir fail on any
> system, especially when using Git, puts a big damper on being able to
> use Emacs to hack on things in older systems, so I think it's worth
> having.

I'm not a fan of spending too much time on older versions myself, but 
the patch is indeed small, and we're still making allowances for 
versions older than that still.

Speaking of older systems, though, I would hope they have similarly old 
repositories with suitably old Emacs versions (or, if you build from 
source, there is a respective tag in the repo). We do have to drop 
compatibilities when stuff is old enough.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#65315; Package emacs. (Wed, 16 Aug 2023 01:52:01 GMT) Full text and rfc822 format available.

Message #13 received at 65315-done <at> debbugs.gnu.org (full text, mbox):

From: Bob Rogers <rogers <at> rgrjr.com>
To: Dmitry Gutov <dmitry <at> gutov.dev>
Cc: 65315-done <at> debbugs.gnu.org
Subject: Re: bug#65315: 30.0.50; vc-dir fails with Git < 2.7.0
Date: Tue, 15 Aug 2023 18:51:32 -0700
   From: Dmitry Gutov <dmitry <at> gutov.dev>
   Date: Wed, 16 Aug 2023 04:33:04 +0300

   . . .

   I'm not a fan of spending too much time on older versions myself, but 
   the patch is indeed small, and we're still making allowances for 
   versions older than that still.

Great; thank you.

   Speaking of older systems, though, I would hope they have similarly
   old repositories with suitably old Emacs versions (or, if you build
   from source, there is a respective tag in the repo).  We do have to
   drop compatibilities when stuff is old enough.

Understood.  I have been building emacs from master in order to have all
my latest customizations on this system; really what I suppose I ought
to do is create a branch (or two) of my customizations and revert the
relevant updates.  Fortunately, I no longer need to hack on this system
very often.

					-- Bob




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Wed, 13 Sep 2023 11:24:09 GMT) Full text and rfc822 format available.

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

Previous Next


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