Re: [PATCHv2 6/7] builtin/describe.c: describe a blob
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Nov 1, 2017, 22:12 UTC
- Message-ID
- <alpine.DEB.2.21.1.1711012310250.6482@virtualbox>
- In-Reply-To
- <EF573E5E-EA72-4DEE-822C-B44265FD581B@gmail.com>
Hi,
On Wed, 1 Nov 2017, Jacob Keller wrote:
Show 43 quoted lines
> On November 1, 2017 10:59:08 AM PDT, Stefan Beller <sbeller@google.com> wrote:
> >>> Does the code describe a9dbc3f12c as v2.15.0:GIT-VERSION-GEN, or
> >>> would it always be <commit>:<path>?
> >>
> >> As the blob is described using this function:
> >>
> >> static void process_object(struct object *obj, const char *path, void
> >*data)
> >> {
> >> struct process_commit_data *pcd = data;
> >>
> >> if (!oidcmp(&pcd->looking_for, &obj->oid) && !pcd->dst->len) {
> >> reset_revision_walk();
> >> describe_commit(&pcd->current_commit, pcd->dst);
> >> strbuf_addf(pcd->dst, ":%s", path);
> >> }
> >> }
> >>
> >> i.e. as `describe_commit()` is used on the commit part, the answer to
> >your
> >> question is: the former. I guess that is why Stefan wrote
> >`commit-ish`
> >> instead of `commit` ;-)
> >
> >$ ./git describe a9dbc3f12c
> >warning: reflog of 'HEAD' references pruned commits
> >v2.15.0-7-g980e40477f:GIT-VERSION-GEN
> >
> >So as noted below, this output is less than ideal, but technically
> >correct as
> >v2.15.0-7-g980e40477f contains that blob as well (you don't have these;
> >it is this very series consisting of 7 patches on top of 2.15, none of
> >them
> >touching GIT-VERSION-GEN, hence that blob stays intact.)
> >
> >The way Junio asked, we actually may prefer the commit-ish to give
> >that commit that introduced the blob for the first time, i.e. add the
> >--reverse to the graph walking.
>
> I know id prefer the first commit that introduced the blob. That's what
> describing a commit does, it finds the oldest tag prior to the commit,
> while --contains finds the first tag that contains the commit as an
> ancestor.It is very easy to wish for "the oldest commit introducing a blob". But since we're in a DAG, this question is not necessarily easy to answer:
- A - B - C
\ /
DLet's assume that all commits except A have the blob, and that B and D (for some reason) have the same author/committer dates.
Do you identify B or D as the commit introducing the blob?
Ciao, Dscho