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

[PATCH 0/6] Teach fetch/pull the on-demand mode and make it the default

From
Jens Lehmann <jens.lehmann@web.de>
Date
Feb 23, 2011, 20:33 UTC
Message-ID
<4D656F25.5090007@web.de>

So here is my patch series to implement the new default "on-demand" fetch mode and let "git submodule update" only fetch submodules when the commit to check out is not already present in the submodule. This is only done for populated submodules and prepares them for disconnected operation without having to think about doing a recursive fetch before going on a plane and having to add the '-N' option to "git submodule update" while on it. Also merging submodule commits in the superproject and "git diff --submodule" (which is used by git gui and gitk) depend on the presence of those commits referenced by the superproject to work.

The last commit is slightly orthogonal as it would be useful without on-demand fetch too. With it rewinding a submodule to a commit that is already present (e.g. because it was checked out earlier) will be done without issuing a fetch even in current git. Together with the other patches "git submodule update" won't have to fetch a submodule at all anymore (at least unless the new "on-demand" default is disabled through the also added configuration options).

Changes since the last version: (see http://article.gmane.org/gmane.comp.version-control.git/163429)

*) Added the "on-demand" value to the "--recurse-submodules" command
   line option and the "submodule.<name>.fetchRecurseSubmodules" and
   "fetch.recurseSubmodules" config options.
*) The fetch is only done when the recorded submodule commit isn't
   already present.
*) Added test cases.

There are two things that could be optimized, but that can be the topic of other patches:

*) The submodule fetches could be done in parallel.
*) It might be expensive to compute the newly fetched commits. If
   the transport helper could be asked for the list commits it just
   fetched that would go away.

I tend to think that this is suited for 1.7.5 but don't have any objections against holding it back until 1.8.0 either. What do others think?

Jens Lehmann (6):
  fetch/pull: recurse into submodules when necessary
  fetch/pull: Add the 'on-demand' value to the --recurse-submodules
    option
  config: teach the fetch.recurseSubmodules option the 'on-demand'
    value
  Submodules: Add 'on-demand' value for the 'fetchRecurseSubmodule'
    option
  fetch/pull: Don't recurse into a submodule when commits are already
    present
  submodule update: Don't fetch when the submodule commit is already
    present
 Documentation/config.txt        |   12 ++-
 Documentation/fetch-options.txt |   24 +++-
 Documentation/git-pull.txt      |    2 +-
 Documentation/gitmodules.txt    |    4 +-
 builtin/fetch.c                 |   49 ++++++--
 git-pull.sh                     |    3 +
 git-submodule.sh                |    2 +-
 submodule.c                     |  124 +++++++++++++++++--
 submodule.h                     |   11 ++-
 t/t5526-fetch-submodules.sh     |  255 +++++++++++++++++++++++++++++++++++++++
 t/t7403-submodule-sync.sh       |    2 +-
 t/t7406-submodule-update.sh     |   20 +++
 12 files changed, 471 insertions(+), 37 deletions(-)
-- 
1.7.4.1.190.g13e20
Next: Jens Lehmann
Message 1 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.