If the update subcommand combines with --force, instead of issuing a "Not a submodule" warning for non-submodules, non-submodules (i.e. modules existing in .gitmodules or $GIT_DIR/config but not added to the super module) will also be cloned and the master branch will be checked out. However, if a non-submodule has already been cloned before, the update will be rejected since we don't know what the update means. Signed-off-by: Ping Yin <pkufranky@xxxxxxxxx> --- git-submodule.sh | 13 ++++++++++++- 1 files changed, 12 insertions(+), 1 deletions(-) diff --git a/git-submodule.sh b/git-submodule.sh index 87d84fa..ed6f698 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -361,6 +361,9 @@ cmd_update() -q|--quiet) quiet=1 ;; + -f | --force) + force="$1" + ;; --) shift break @@ -381,7 +384,8 @@ cmd_update() test -n "$name" || exit if test $sha1 = 0000000000000000000000000000000000000000 then - say "Not a submodule: $name @ $path" + test -z "$force" && + say "Not a submodule: $name @ $path" && continue elif test -z "$url" then @@ -395,8 +399,15 @@ cmd_update() if ! test -d "$path"/.git then module_clone "$path" "$url" || exit + test "$sha1" = 0000000000000000000000000000000000000000 && + (unset GIT_DIR; cd "$path" && git checkout -q master) && + say "non-submodule cloned and master checked out: $name @ $path" && + continue subsha1= else + test "$sha1" = 0000000000000000000000000000000000000000 && + say "non-submodule already cloned: $name @ $path" && + continue subsha1=$(unset GIT_DIR; cd "$path" && git rev-parse --verify HEAD) || die "Unable to find current revision in submodule path '$path'" -- 1.5.5.70.gd68a -- 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