git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jens Lehmann <Jens.Lehmann@web.de>
To: Git Mailing List <git@vger.kernel.org>
Cc: Junio C Hamano <gitster@pobox.com>,
	Marc Branchaud <marcnarc@xiplink.com>,
	Kevin Ballard <kevin@sb.org>,
	Jonathan Nieder <jrnieder@gmail.com>,
	Heiko Voigt <hvoigt@hvoigt.net>
Subject: [PATCH 0/6] Teach fetch/pull the on-demand mode and make it the default
Date: Wed, 23 Feb 2011 21:33:41 +0100	[thread overview]
Message-ID: <4D656F25.5090007@web.de> (raw)

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

             reply	other threads:[~2011-02-23 20:34 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-02-23 20:33 Jens Lehmann [this message]
2011-02-23 20:34 ` [PATCH 1/6] fetch/pull: recurse into submodules when necessary Jens Lehmann
2011-02-23 22:56   ` Junio C Hamano
2011-02-23 23:28     ` Jens Lehmann
2011-02-24  0:22       ` Jonathan Nieder
2011-02-23 23:07   ` Jonathan Nieder
2011-02-23 23:43     ` Jens Lehmann
2011-02-23 23:58       ` Jonathan Nieder
2011-02-23 20:35 ` [PATCH 2/6] fetch/pull: Add the 'on-demand' value to the --recurse-submodules option Jens Lehmann
2011-02-23 23:12   ` Jonathan Nieder
2011-02-23 23:14     ` Jonathan Nieder
2011-02-23 20:35 ` [PATCH 3/6] config: teach the fetch.recurseSubmodules option the 'on-demand' value Jens Lehmann
2011-02-23 20:36 ` [PATCH 4/6] Submodules: Add 'on-demand' value for the 'fetchRecurseSubmodule' option Jens Lehmann
2011-02-23 23:16   ` Junio C Hamano
2011-02-24 20:44     ` Jens Lehmann
2011-02-23 20:36 ` [PATCH 5/6] fetch/pull: Don't recurse into a submodule when commits are already present Jens Lehmann
2011-02-23 23:21   ` Junio C Hamano
2011-02-23 23:50     ` Jens Lehmann
2011-02-24  8:20       ` Jens Lehmann
2011-02-23 20:36 ` [PATCH 6/6] submodule update: Don't fetch when the submodule commit is " Jens Lehmann
2011-02-23 23:23   ` Junio C Hamano
2011-02-23 23:21 ` [PATCH 0/6] Teach fetch/pull the on-demand mode and make it the default Jonathan Nieder
2011-02-23 23:48   ` Jens Lehmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4D656F25.5090007@web.de \
    --to=jens.lehmann@web.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=hvoigt@hvoigt.net \
    --cc=jrnieder@gmail.com \
    --cc=kevin@sb.org \
    --cc=marcnarc@xiplink.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).