git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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.

Previous: Linus TorvaldsNext: Robin Luckey
Message 4 of 5 in “How can I tell if a SHA1 is a submodule reference?”
  1. Robin LuckeyMay 15, 2008
  2. Avery PennarunMay 15, 2008
  3. Linus TorvaldsMay 15, 2008
  4. Junio C HamanoMay 15, 2008
  5. Robin LuckeyMay 15, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.