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

Re: git submodules implementation question

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 29, 2016, 23:15 UTC
Message-ID
<xmqqbn0b6ua8.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<CAN5XQfsg_sJbyjfdc=-e85jiCQNUqagwgh6TVOXN+NskZ7KkVw@mail.gmail.com>
Uma Srinivasan <usrinivasan@twitter.com> writes:
Show 23 quoted lines
> On Mon, Aug 29, 2016 at 2:13 PM, Uma Srinivasan <usrinivasan@twitter.com> wrote:
>> Ok that makes sense. Thanks much.
>>
>> Uma
>>
> With respect to my original problem with a corrupted .git directory
> under the submodule directory, I am thinking of adding the following 4
> lines marked with ### to is_submodule_modified() to detect the
> corrupted dir and die quickly instead of forking several child
> processes:
>
>                strbuf_addf(&buf, "%s/.git", path);
>                git_dir = read_gitfile(buf.buf);
>                if (!git_dir) {
>                  ### strbuf_addf(&head_ref, "%s/HEAD",buf.buf);
>                  ### if (strbuf_read_file(&temp_ref, head_ref.buf,0) < 0) {
>                           ### die("Corrupted .git dir in submodule %s", path);
>                  ###}
>                          git_dir = buf.buf;
>               }
>
> This fixes my issue but what do you think? Is this the right way to
> fix it? Is there a better way?

I think we already have a helper function that does a lot better than "does it have a file called HEAD" to ask "is this a git directory?" and its name I think is "is_git_directory" (I know, we are not imaginative when naming our functions).

As to the check makes sense in the context of this function, I am not an expert to judge. I'd expect Jens, Heiko and/or Stefan to know better than I do.

Previous: Uma SrinivasanNext: Uma Srinivasan
Message 7 of 31 in “git submodules implementation question”
  1. Uma SrinivasanAug 28, 2016
  2. Junio C HamanoAug 29, 2016
  3. Uma SrinivasanAug 29, 2016
  4. Junio C HamanoAug 29, 2016
  5. Uma SrinivasanAug 29, 2016
  6. Uma SrinivasanAug 29, 2016
  7. Junio C HamanoAug 29, 2016
  8. Uma SrinivasanAug 29, 2016
  9. Jacob KellerAug 30, 2016
  10. Uma SrinivasanAug 30, 2016
  11. Jacob KellerAug 30, 2016
  12. Jacob KellerAug 30, 2016
  13. Uma SrinivasanAug 30, 2016
  14. Junio C HamanoAug 30, 2016
  15. Uma SrinivasanAug 31, 2016
  16. Junio C HamanoAug 31, 2016
  17. Uma SrinivasanAug 31, 2016
  18. Junio C HamanoAug 31, 2016
  19. Uma SrinivasanAug 31, 2016
  20. Uma SrinivasanSep 1, 2016
  21. Junio C HamanoSep 1, 2016
  22. Uma SrinivasanSep 1, 2016
  23. Junio C HamanoSep 1, 2016
  24. Stefan BellerSep 1, 2016
  25. Junio C HamanoSep 1, 2016
  26. Junio C HamanoSep 1, 2016
  27. Junio C HamanoSep 1, 2016
  28. Stefan BellerSep 1, 2016
  29. Junio C HamanoSep 1, 2016
  30. Uma SrinivasanSep 1, 2016
  31. Junio C HamanoSep 1, 2016

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.