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

Re: [PATCH v11 5/8] allow do_submodule_path to work even if submodule isn't checked out

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 26, 2016, 18:19 UTC
Message-ID
<xmqqshtrgzpi.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<20160825233243.30700-6-jacob.e.keller@intel.com>
Jacob Keller <jacob.e.keller@intel.com> writes:
Show 6 quoted lines
> Currently, do_submodule_path will attempt locating the .git directory by
> using read_gitfile on <path>/.git. If this fails it just assumes the
> <path>/.git is actually a git directory.
>
> This is good because it allows for handling submodules which were cloned
> in a regular manner first before being added to the parent project.
s/parent project/superproject/;
Show 7 quoted lines
> Unfortunately this fails if the <path> is not actually checked out any
> longer, such as by removing the directory.
>
> Fix this by checking if the directory we found is actually a gitdir. In
> the case it is not, attempt to lookup the submodule configuration and
> find the name of where it is stored in the .git/modules/ folder of the
> parent project.

As you consistently say "directory" in the earlier part of the log message,

s/folder of the parent project/directory of the superproject/;
is desired.
>
> If we can't locate the submodule configuration this might occur because
I added s/configuration/&,/ to make it a bit easier to read.
Show 6 quoted lines
> for example a submodule gitlink was added but the corresponding
> .gitmodules file was not properly updated. A die() here would not be
> pleasant to the users of submodule diff formats, so instead, modify
> do_submodule_path to return an error code. For git_pathdup_submodule,
> just return NULL when we fail to find a path. For strbuf_git_path_submodule
> propagate the error code to the caller.

Somehow I had to read the latter half of this paragraph twice, before I realized that the last two sentence talks about how these two functions exactly do "to return an error code". Tentatively what I queued has:

    ... so instead, modify do_submodule_path() to return an error code:
     - git_pathdup_submodule() returns NULL when we fail to find a path.
     - strbuf_git_path_submodule() propagates the error code to the
       caller.
instead, hoping that would be easier to understand.
> -static void do_submodule_path(struct strbuf *buf, const char *path,
> -			      const char *fmt, va_list args)
> +/* Returns 0 on success, non-zero on failure. */
s/non-zero/negative/;
> +#define SUBMODULE_PATH_ERR_NOT_CONFIGURED -1
> +static int do_submodule_path(struct strbuf *buf, const char *path,
> +			     const char *fmt, va_list args)
>  {

This 5/8 is the only changed one in the entire series from the previous round, I think. I'll replace what was in 'pu' and wait for responses.

Thanks.
Previous: Jacob KellerNext: Keller, Jacob E
Message 6 of 18 in “submodule inline diff format”
  1. 0/8 submodule inline diff formatJacob Keller, Aug 25, 2016
  2. 2/8 diff.c: remove output_prefix_length fieldJacob Keller, Aug 25, 2016
  3. 3/8 graph: add support for --line-prefix on all graph-aware outputJacob Keller, Aug 25, 2016
  4. 4/8 diff: prepare for additional submodule formatsJacob Keller, Aug 25, 2016
  5. 5/8 allow do_submodule_path to work even if submodule isn't checked outJacob Keller, Aug 25, 2016
  6. Junio C HamanoAug 26, 2016
  7. Keller, Jacob EAug 26, 2016
  8. 6/8 submodule: convert show_submodule_summary to use struct object_id *Jacob Keller, Aug 25, 2016
  9. 7/8 submodule: refactor show_submodule_summary with helper functionJacob Keller, Aug 25, 2016
  10. 8/8 diff: teach diff to display submodule difference with an inline diffJacob Keller, Aug 25, 2016
  11. 1/8 cache: add empty_tree_oid object and helper functionJacob Keller, Aug 25, 2016
  12. Stefan BellerAug 26, 2016
  13. Keller, Jacob EAug 26, 2016
  14. Jeff KingAug 26, 2016
  15. Jacob KellerAug 26, 2016
  16. Jacob KellerAug 26, 2016
  17. Junio C HamanoAug 31, 2016
  18. Jacob KellerAug 31, 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.