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

Re: [PATCH 1/6] fetch/pull: recurse into submodules when necessary

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Feb 23, 2011, 23:58 UTC
Message-ID
<20110223235808.GB7286@elie>
In-Reply-To
<4D659BB2.3020805@web.de>
Jens Lehmann wrote:
> Am 24.02.2011 00:07, schrieb Jonathan Nieder:
Show 9 quoted lines
>> Could this be combined with the --recurse-submodules, with a "last instance
>> of the option wins" rule?  Something like:
>> 
>>  --recurse-submodules[=(yes | no | changed)]::
>>  --no-recurse-submodules::
>
> Nope, as this only sets the default. "--recurse-submodules" overrides
> anything configured, which is not what we want here. This option should
> only set the default.

Ah. So --recurse-submodules-default means "like --recurse-submodules, but with lower precedence than the configuration". Sensible. (Maybe it could be documented in --help-all that way?)

Show 11 quoted lines
>>> +			/* Submodule is new or was moved here */
>>> +			/* NEEDSWORK: When the .git directories of submodules
>>> +			 * live inside the superprojects .git directory some
>>> +			 * day we should fetch new submodules directly into
>>> +			 * that location too when config or options request
>>> +			 * that so they can be checked out from there. */
>>> +			continue;
>> 
>> Maybe this can be mentioned in a BUGS section on the git-fetch(1)
>> manpage to give readers a warning and clue about the intended
>> meaning of --recurse-submodules?
[...]
> I'm not sure I understand what you mean by this, right now this can
> only work for populated submodules. I hope this will change soon, but
> I'm not quite there yet ;-)

What I mean is the following: to make life easier for people and scripts using --recurse-submodules today, it might be nice to document how stable or unstable its meaning is.

In this case, there is a plan to make --recurse-submodules=on-demand do more in the future than it does now;

 - a note in BUGS could explain that --recurse-submodules's current
   behavior is considered an infelicity and likely to change;
 - unfortunately not all users will necessarily see it that way (c.f.
   aforementioned use case), so it might be better to plan on yet
   another choice in the list of options provided by
   --recurse-submodules.
Show 9 quoted lines
>> Maybe:
>>
>> 	char *new_rev;
>> 	...
>> 	argv[1] = new_rev = xstrdup(...);
>> 	...
>> 	free(new_rev);
>
> I'm not sure I get what the extra variable gains us ...

A reminder to free that memory in all code paths exiting the function. But it might not be worth the noise.

>> Maybe a comment so the reader doesn't have to delve deeper?
>
> ?

Sorry for the confusion. That suggestion refers to the loop after it rather than what comes before it.

Show 6 quoted lines
>> 	/*
>> 	 * Collect checked out submodules that have changed upstream
>> 	 * in "changed_submodule_paths".
>> 	 */
>> 
>>> +	while ((commit = get_revision(&rev))) {
[...]
> Thanks!

Thanks for deciphering the gibberish I sent. :) Jonathan

Previous: Jens LehmannNext: Jens Lehmann
Message 8 of 23 in “Teach fetch/pull the on-demand mode and make it the default”
  1. 0/6 Teach fetch/pull the on-demand mode and make it the defaultJens Lehmann, Feb 23, 2011
  2. 1/6 fetch/pull: recurse into submodules when necessaryJens Lehmann, Feb 23, 2011
  3. Junio C HamanoFeb 23, 2011
  4. Jens LehmannFeb 23, 2011
  5. Jonathan NiederFeb 24, 2011
  6. Jonathan NiederFeb 23, 2011
  7. Jens LehmannFeb 23, 2011
  8. Jonathan NiederFeb 23, 2011
  9. 2/6 fetch/pull: Add the 'on-demand' value to the --recurse-submodules optionJens Lehmann, Feb 23, 2011
  10. Jonathan NiederFeb 23, 2011
  11. Jonathan NiederFeb 23, 2011
  12. 3/6 config: teach the fetch.recurseSubmodules option the 'on-demand' valueJens Lehmann, Feb 23, 2011
  13. 4/6 Submodules: Add 'on-demand' value for the 'fetchRecurseSubmodule' optionJens Lehmann, Feb 23, 2011
  14. Junio C HamanoFeb 23, 2011
  15. Jens LehmannFeb 24, 2011
  16. 5/6 fetch/pull: Don't recurse into a submodule when commits are already presentJens Lehmann, Feb 23, 2011
  17. Junio C HamanoFeb 23, 2011
  18. Jens LehmannFeb 23, 2011
  19. Jens LehmannFeb 24, 2011
  20. 6/6 submodule update: Don't fetch when the submodule commit is already presentJens Lehmann, Feb 23, 2011
  21. Junio C HamanoFeb 23, 2011
  22. Jonathan NiederFeb 23, 2011
  23. Jens LehmannFeb 23, 2011

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.