From: "Kévin Le Gouguec" <kevin.legouguec@gmail.com>
To: git@vger.kernel.org
Subject: git describe and "the smallest number of commits possible"
Date: Sat, 26 Aug 2017 16:47:17 +0200 [thread overview]
Message-ID: <CAOAAw7WsiwzQYhiU9xxcoteaEWgaXRQkiVb0Xa2WckR4=m-bFw@mail.gmail.com> (raw)
Hi,
I've asked this question on the git-users Google Groups list[1], and
while the answers there were interesting, I still cannot figure
whether my problem comes from an actual bug, a misleading manpage, my
inability to understand the code and/or the manpage, or a combination
of the three.
I noticed this problem on 2.1.4 (Debian oldstable); I can reproduce it
on next (7ef03bb281b2220d0f2414365e4949beb2337042). Quoting
git-describe(1)'s SEARCH STRATEGY section:
> If multiple tags were found during the walk then the tag which has
> the fewest commits different from the input commit-ish will be
> selected and output. Here fewest commits different is defined as the
> number of commits which would be shown by `git log tag..input` will
> be the smallest number of commits possible.
To put it shortly, after cloning GNU Emacs's repository[2]:
$ git describe --tags
emacs-25.1-129847-gdcc3ef3ee7
$ git log --oneline emacs-25.1.. | wc -l
5126
$ git log --oneline emacs-25.2.. | wc -l
4793
If I am reading it correctly, the manpage suggests that emacs-25.2
should be picked in this situation ("log emacs-25.2.." shows fewer
commits than "log emacs-25.1..").
Once more with --debug:
$ git describe --debug --tags
searching to describe HEAD
lightweight 129847 emacs-25.1
lightweight 4086 emacs-25.1-rc2
lightweight 4126 emacs-25.1-rc1
annotated 4185 emacs-25.2
annotated 4220 emacs-25.2-rc2
lightweight 4226 emacs-25.0.95
annotated 4236 emacs-25.2-rc1
annotated 4280 emacs-25.1.91
lightweight 4305 emacs-25.0.94
lightweight 4329 emacs-25.1.90
traversed 130257 commits
more than 10 tags found; listed 10 most recent
gave up search at 5c587fdff164e8b90beb47f6da64b4884290e40a
emacs-25.1-129847-gdcc3ef3ee7
I tried to get a sense of what builtin/describe.c is doing (see [1]
for some debug printfs); to summarize what I figured:
- When QSORT() is called in describe(), emacs-25.1's depth is smaller
than emacs-25.2's.
- finish_depth_computation() updates the best candidate's depth; AFAIU
this update's only purpose is to make the displayed suffix more
accurate.
That is all I have right now. I apologize for failing to come up with
a simpler test case (I tried to make toy repositories with a similar
topology to reproduce the issue, to no avail). To conclude, as far as
I can tell, one of the following holds:
- something about this repository[3] causes git-describe(1) to not
work as advertised;
- I fail at reading manuals.
[1]: https://groups.google.com/forum/?fromgroups#!topic/git-users/tSnX-O-3aNI
[2]: https://git.savannah.gnu.org/git/emacs.git
[3]: The project's workflow sounds straightforward:
- development happens mainly on the master branch;
- the emacs-25 branch receives maintenance fixes and release tags; it
is periodically merged back into master;
- experimental work can happen on scratch branches; these may
eventually be merged back into master.
There are some complications (e.g. pull-induced merges) but if
I --simplify-by-decoration I find that the repository's topology
matches this description.
next reply other threads:[~2017-08-26 14:47 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-26 14:47 Kévin Le Gouguec [this message]
2017-08-28 18:24 ` git describe and "the smallest number of commits possible" Stefan Beller
2017-08-29 13:34 ` Michael J Gruber
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAOAAw7WsiwzQYhiU9xxcoteaEWgaXRQkiVb0Xa2WckR4=m-bFw@mail.gmail.com' \
--to=kevin.legouguec@gmail.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).