From b9b378a001d35a64a30a652a45f8084ee2be6cdf Mon Sep 17 00:00:00 2001 From: Ping Yin Date: Fri, 26 Sep 2008 23:33:23 +0800 Subject: [PATCH] git-submodule: Fix "Unable to checkout" for the initial 'update' Since commit 55218("checkout: do not lose staged removal"), in cmd_add/cmd_update, "git checkout " following "git clone -n" may fail if is different from HEAD. So Use "git checkout -f " to fix this. Signed-off-by: Ping Yin Signed-off-by: Shawn O. Pearce --- git-submodule.sh | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/git-submodule.sh b/git-submodule.sh index b40f876a2..5888735e4 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -185,7 +185,7 @@ cmd_add() else module_clone "$path" "$realrepo" || exit - (unset GIT_DIR; cd "$path" && git checkout -q ${branch:+-b "$branch" "origin/$branch"}) || + (unset GIT_DIR; cd "$path" && git checkout -f -q ${branch:+-b "$branch" "origin/$branch"}) || die "Unable to checkout submodule '$path'" fi @@ -311,8 +311,13 @@ cmd_update() if test "$subsha1" != "$sha1" then + force= + if test -z "$subsha1" + then + force="-f" + fi (unset GIT_DIR; cd "$path" && git-fetch && - git-checkout -q "$sha1") || + git-checkout $force -q "$sha1") || die "Unable to checkout '$sha1' in submodule path '$path'" say "Submodule path '$path': checked out '$sha1'" -- 2.45.2