X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=git-submodule.sh;h=ad9fe628fdf0f7d5a9a968abeb03d6213e3772d7;hb=eadb5831342bb2e756fa05c03642c4aa1929d4f5;hp=4aaaaab0d8450094efb8d2f8e82cc63383b91b48;hpb=afc05f9f13beded8caf15d8e58d06fd64e0f7808;p=git.git diff --git a/git-submodule.sh b/git-submodule.sh index 4aaaaab0d..ad9fe628f 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -5,6 +5,7 @@ # Copyright (c) 2007 Lars Hjemli USAGE='[--quiet] [--cached] [add [-b branch]|status|init|update] [--] [...]' +OPTIONS_SPEC= . git-sh-setup require_work_tree @@ -73,7 +74,7 @@ resolve_relative_url () module_name() { # Do we have "submodule..path = $1" defined in .gitmodules file? - re=$(printf '%s' "$1" | sed -e 's/\([^a-zA-Z0-9_]\)/\\\1/g') + re=$(printf '%s' "$1" | sed -e 's/[].[^$\\*]/\\&/g') name=$( GIT_CONFIG=.gitmodules \ git config --get-regexp '^submodule\..*\.path$' | sed -n -e 's|^submodule\.\(.*\)\.path '"$re"'$|\1|p' ) @@ -157,7 +158,7 @@ module_add() die "'$path' already exists in the index" 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 -q ${branch:+-b "$branch" "origin/$branch"}) || die "Unable to checkout submodule '$path'" git add "$path" || die "Failed to add submodule '$path'" @@ -227,14 +228,14 @@ modules_update() module_clone "$path" "$url" || exit subsha1= else - subsha1=$(unset GIT_DIR && cd "$path" && + subsha1=$(unset GIT_DIR; cd "$path" && git rev-parse --verify HEAD) || die "Unable to find current revision in submodule path '$path'" fi if test "$subsha1" != "$sha1" then - (unset GIT_DIR && cd "$path" && git-fetch && + (unset GIT_DIR; cd "$path" && git-fetch && git-checkout -q "$sha1") || die "Unable to checkout '$sha1' in submodule path '$path'" @@ -245,7 +246,7 @@ modules_update() set_name_rev () { revname=$( ( - unset GIT_DIR && + unset GIT_DIR cd "$1" && { git describe "$2" 2>/dev/null || git describe --tags "$2" 2>/dev/null || @@ -284,7 +285,7 @@ modules_list() else if test -z "$cached" then - sha1=$(unset GIT_DIR && cd "$path" && git rev-parse --verify HEAD) + sha1=$(unset GIT_DIR; cd "$path" && git rev-parse --verify HEAD) set_name_rev "$path" "$sha1" fi say "+$sha1 $path$revname"