From: Robin Luckey Date: Thu, 15 May 2008 20:56:02 GMT Subject: Re: How can I tell if a SHA1 is a submodule reference? Message-ID: <90B9CF74-40E1-4469-AFF9-D8D349F6C80D@ohloh.net> In-Reply-To: <7vabirgvyg.fsf@gitster.siamese.dyndns.org> Thanks for the replies -- checking the mode bits was the ticket. Robin On May 15, 2008, at 1:21 PM, Junio C Hamano wrote: > Robin Luckey writes: > >> 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. > >