It's un-necessary (both time-consuming and annoying if you are disconnected) for git submodule update to always running git-fetch prior to the detached head checkout of the submodule if the commit already exists. Signed-off-by: Torgil Svensson <torgil.svensson@xxxxxxxxx> --- git-submodule.sh | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) diff --git a/git-submodule.sh b/git-submodule.sh index 2cfeadd..dc2ed4b 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -39,6 +39,11 @@ get_repo_base() { ) 2>/dev/null } +has_sha1() +{ + git rev-list 2>/dev/null --max-count=0 $1 +} + # # Map submodule path to submodule name # @@ -193,9 +198,9 @@ modules_update() if test "$subsha1" != "$sha1" then - (unset GIT_DIR && cd "$path" && git-fetch && + (unset GIT_DIR && cd "$path" && (has_sha1 "$sha1" || git-fetch) && git-checkout -q "$sha1") || - die "Unable to checkout '$sha1' in submodule path '$path'" + die "Unable to checkout '$sha1' in submodule path '$path'" say "Submodule path '$path': checked out '$sha1'" fi -- 1.5.3.rc4.730.ga8c3-dirty - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html