diff options
author | Jens Lehmann <Jens.Lehmann@web.de> | 2011-03-06 23:13:36 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-03-09 13:10:35 -0800 |
commit | e5f522d610d34914e3fcf8b23de1b771c467196e (patch) | |
tree | fe09323e53774a471c2b899a20c586b2eb4a917f /git-submodule.sh | |
parent | c16c3e40b5908ecf28be12b1caf266c7ab8de3c6 (diff) | |
download | git-e5f522d610d34914e3fcf8b23de1b771c467196e.tar.gz |
submodule update: Don't fetch when the submodule commit is already present
If the commit to be checked out on "git submodule update" has already been
fetched in the submodule there is no need to run "git fetch" again. Since
"git fetch" recently learned recursion (and the new on-demand mode to
fetch commits recorded in the superproject is enabled by default) this
will happen pretty often, thereby making the unconditional fetch during
"git submodule update" unnecessary.
If the commit is not present in the submodule (e.g. the user disabled the
fetch on-demand mode) the fetch will be run as before.
Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-submodule.sh')
-rwxr-xr-x | git-submodule.sh | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/git-submodule.sh b/git-submodule.sh index 8b90589717..514d2eb7ab 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -464,8 +464,11 @@ cmd_update() if test -z "$nofetch" then + # Run fetch only if $sha1 isn't present or it + # is not reachable from a ref. (clear_local_git_env; cd "$path" && - git-fetch) || + ((rev=$(git rev-list -n 1 $sha1 --not --all 2>/dev/null) && + test -z "$rev") || git-fetch)) || die "Unable to fetch in submodule path '$path'" fi |