Re: How can I tell if a SHA1 is a submodule reference?
- From
Junio C Hamano <gitster@pobox.com>
- Date
- May 15, 2008, 20:21 UTC
- Message-ID
- <7vabirgvyg.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <7F242E8F-13CF-4BE5-B3E6-85F285391658@ohloh.net>
Robin Luckey <robin@ohloh.net> writes:
Show 17 quoted lines
> I am parsing the output of git-diff-tree to create some code analysis > reports. > > When a user adds a submodule to a repository, git-diff-tree reports > the SHA1 of the commit from the submodule. > > However, if I subsequently try to pass this SHA1 to git-cat-file, or > indeed any other git command I have tried, I receive an error: > > error: unable to find b0f8c354b142e27333abd0f175544b71a0cc444e > fatal: Not a valid object name b0f8c354b142e27333abd0f175544b71a0cc444e > > This makes sense to me, since these objects are not stored locally; > they are stored in the submodule repository. > > However, is there a simple and reliable way for me to know which SHA1 > hashes refer to such submodule objects? I'd like to simply ignore them.
I presume you are reading "diff-tree --raw" format output. The mode bits for submodules (aka gitlinks) are 160000, as opposed to either 100644 or 100755 for regular files and 120000 for symbolic links.