#
module_name()
{
- name=$(GIT_CONFIG=.gitmodules git-config --get-regexp '^submodule\..*\.path$' "$1" |
- sed -nre 's/^submodule\.(.+)\.path .+$/\1/p')
+ # Do we have "submodule.<something>.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"
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
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'"
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
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
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)"
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