X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=git-submodule.sh;h=3320998c76ba72094755ec60369a6266751889ff;hb=e4cd6c7a20bfc776086817671d58e09060a8079a;hp=c29e2c3c9dd0bf42cc6ac68f70aef1fc742c5207;hpb=b941ffac506d3f57246e46a8913da614e62a1d48;p=git.git diff --git a/git-submodule.sh b/git-submodule.sh index c29e2c3c9..3320998c7 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -46,8 +46,11 @@ get_repo_base() { # module_name() { - name=$(GIT_CONFIG=.gitmodules git-config --get-regexp '^submodule\..*\.path$' "$1" | - sed -nre 's/^submodule\.(.+)\.path .+$/\1/p') + # Do we have "submodule..path = $1" defined in .gitmodules file? + re=$(printf '%s' "$1" | sed -e 's/\([^a-zA-Z0-9_]\)/\\\1/g') + name=$( GIT_CONFIG=.gitmodules \ + git config --get-regexp '^submodule\..*\.path$' | + sed -n -e 's|^submodule\.\(.*\)\.path '"$re"'$|\1|p' ) test -z "$name" && die "No submodule mapping found in .gitmodules for path '$path'" echo "$name" @@ -116,7 +119,7 @@ module_add() test -e "$path" && die "'$path' already exists" - git-ls-files --error-unmatch "$path" > /dev/null 2>&1 && + git ls-files --error-unmatch "$path" > /dev/null 2>&1 && die "'$path' already exists in the index" module_clone "$path" "$repo" || exit @@ -143,14 +146,14 @@ modules_init() do # Skip already registered paths name=$(module_name "$path") || exit - url=$(git-config submodule."$name".url) + url=$(git config submodule."$name".url) test -z "$url" || continue - url=$(GIT_CONFIG=.gitmodules git-config submodule."$name".url) + url=$(GIT_CONFIG=.gitmodules git config submodule."$name".url) test -z "$url" && die "No url found for submodule path '$path' in .gitmodules" - git-config submodule."$name".url "$url" || + git config submodule."$name".url "$url" || die "Failed to register url for submodule path '$path'" say "Submodule '$name' ($url) registered for path '$path'" @@ -168,7 +171,7 @@ modules_update() while read mode sha1 stage path do name=$(module_name "$path") || exit - url=$(git-config submodule."$name".url) + url=$(git config submodule."$name".url) if test -z "$url" then # Only mention uninitialized submodules when its @@ -184,7 +187,7 @@ modules_update() subsha1= else subsha1=$(unset GIT_DIR && cd "$path" && - git-rev-parse --verify HEAD) || + git rev-parse --verify HEAD) || die "Unable to find current revision in submodule path '$path'" fi @@ -203,9 +206,9 @@ set_name_rev () { revname=$( ( unset GIT_DIR && cd "$1" && { - git-describe "$2" 2>/dev/null || - git-describe --tags "$2" 2>/dev/null || - git-describe --contains --tags "$2" + git describe "$2" 2>/dev/null || + git describe --tags "$2" 2>/dev/null || + git describe --contains --tags "$2" } ) ) test -z "$revname" || revname=" ($revname)" @@ -227,22 +230,21 @@ modules_list() while read mode sha1 stage path do name=$(module_name "$path") || exit - url=$(git-config submodule."$name".url) + url=$(git config submodule."$name".url) if test -z "url" || ! test -d "$path"/.git then say "-$sha1 $path" continue; fi - revname=$(unset GIT_DIR && cd "$path" && git-describe --tags $sha1) - set_name_rev "$path" $"sha1" + set_name_rev "$path" "$sha1" if git diff-files --quiet -- "$path" then say " $sha1 $path$revname" else if test -z "$cached" then - sha1=$(unset GIT_DIR && cd "$path" && git-rev-parse --verify HEAD) - set_name_rev "$path" $"sha1" + sha1=$(unset GIT_DIR && cd "$path" && git rev-parse --verify HEAD) + set_name_rev "$path" "$sha1" fi say "+$sha1 $path$revname" fi @@ -311,7 +313,7 @@ case "$add,$init,$update,$status,$cached" in ,,1,,) modules_update "$@" ;; -,,,1,*) +,,,*,*) modules_list "$@" ;; *)