Web lists-archives.com

Re: git describe/contains for submodule commits

On Thu, May 23 2019, Jacob Keller wrote:

> Hi,
> I've had a few times where I was curious of when a submodule got set
> to a specific commit.
> I noticed that git describe has "blob" support, which outputs something like
> <commit>:/path/to/file
> using the revision walking machinery.
> I'm curious if anyone knows if that sort of revision walk could be
> expected to find the first treeish that had a submodule commit instead
> of a blob.
> I'm not that familiar with the revision walking, so I was hoping to
> get some pointers of whre to look before I began implementing.
> Ultimately, I'd like to have some sort of command like:
>   git submodule contains <submodule> <commit id>
> and have it try to figure out the most recent commit htat has a
> submodule change for which the submodule is a child of the specified
> submodule commit.
> I can sort of reverse engineer this through git log, but it's slow and
> tedious, so I was hoping to be able to implement it into a revision
> walk that did this.
> Once I know the commit that introduces the submodule change, I could
> feed that to git describe --contains to find the tag/version which
> included the change easily enough.
> Thanks,
> Jake

You can do this with --find-object, e.g. on git.git:

    git log --find-object=855827c583bc30645ba427885caa40c5b81764d2

Plugging that into describe.c should be fairly straightforward.