GNU bug report logs - #59011
29.0.50; change to vc-git-working-revision breaks vc-git-mode-line-string

Previous Next

Package: emacs;

Reported by: Jonas Bernoulli <jonas <at> bernoul.li>

Date: Fri, 4 Nov 2022 06:55:01 UTC

Severity: normal

Found in version 29.0.50

To reply to this bug, email your comments to 59011 AT debbugs.gnu.org.

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#59011; Package emacs. (Fri, 04 Nov 2022 06:55:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Jonas Bernoulli <jonas <at> bernoul.li>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Fri, 04 Nov 2022 06:55:01 GMT) Full text and rfc822 format available.

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

From: Jonas Bernoulli <jonas <at> bernoul.li>
To: bug-gnu-emacs <at> gnu.org
Cc: Philip Kaludercic <philipk <at> posteo.net>
Subject: 29.0.50; change to vc-git-working-revision breaks
 vc-git-mode-line-string
Date: Fri, 04 Nov 2022 07:53:48 +0100
Since 307ad210040251ea0de2e7f453350c4497bda874 `vc-git-working-revision'
may return the name of a reference (aka symbolic commit) instead of the
full sha1 hash, as it used to always do.

When that name is shorter than seven characters, then that change breaks
`vc-git-mode-line-string', which expects to be able to extract the first
seven characters of the string returned by `vc-git-working-revision'.

(By the way, it is not correct to abbreviate a commit hash to the first
N characters using (substring hash 0 N).  Even in a small repository
there is a risk that such a naive abbreviation is ambiguous.  Instead of
doing that, one should use Git to perform the abbreviation; that way one
can request an abbreviation of a certain length, and Git will comply --
unless doing that would be ambiguous, in which case it returns a longer
abbreviation.)




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#59011; Package emacs. (Fri, 04 Nov 2022 16:35:01 GMT) Full text and rfc822 format available.

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

From: Philip Kaludercic <philipk <at> posteo.net>
To: Jonas Bernoulli <jonas <at> bernoul.li>
Cc: bug-gnu-emacs <at> gnu.org
Subject: Re: 29.0.50; change to vc-git-working-revision breaks
 vc-git-mode-line-string
Date: Fri, 04 Nov 2022 16:34:38 +0000
Jonas Bernoulli <jonas <at> bernoul.li> writes:

> Since 307ad210040251ea0de2e7f453350c4497bda874 `vc-git-working-revision'
> may return the name of a reference (aka symbolic commit) instead of the
> full sha1 hash, as it used to always do.
>
> When that name is shorter than seven characters, then that change breaks
> `vc-git-mode-line-string', which expects to be able to extract the first
> seven characters of the string returned by `vc-git-working-revision'.

This was already touched on in bug#58709, and I believe it is best to
revert the change for now.

The motivation for the change was to make selecting revisions for the
new `vc-prepare-patch' command, but perhaps it would be better to handle
the issue somewhere else like in vc-*-revision-table.

> (By the way, it is not correct to abbreviate a commit hash to the first
> N characters using (substring hash 0 N).  Even in a small repository
> there is a risk that such a naive abbreviation is ambiguous.  Instead of
> doing that, one should use Git to perform the abbreviation; that way one
> can request an abbreviation of a certain length, and Git will comply --
> unless doing that would be ambiguous, in which case it returns a longer
> abbreviation.)

If this is only done in the mode line, then I don't think there is too
much harm in doing so (it isn't fed back into git at any point), though
using a proper abbreviation would technically preferable.




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

Previous Next


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