Fix handling of submodule urls starting with ../ when the remote url is an scp-style URL with the format user@xxxxxxx:repo.git. For example, if the remote url is user@xxxxxxx:repo.git and the submodule URL is ../submodule.git, the combined default URL will now be user@xxxxxxx:submodule.git instead of user@xxxxxxx:repo.git/submodule.git. --- git-submodule.sh | 16 ++++++++++++++-- 1 files changed, 14 insertions(+), 2 deletions(-) diff --git a/git-submodule.sh b/git-submodule.sh index c291eed..533cf5d 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -36,13 +36,25 @@ resolve_relative_url () remoteurl=$(git config "remote.$remote.url") || die "remote ($remote) does not have a url defined in .git/config" url="$1" + sep="/" remoteurl=${remoteurl%/} while test -n "$url" do case "$url" in ../*) url="${url#../}" - remoteurl="${remoteurl%/*}" + remoteparent="${remoteurl%/*}" + if test "$remoteparent" != "$remoteurl" + then + remoteurl="$remoteparent" + else + remoteparent="${remoteurl%:*}" + if test "$remoteparent" != "$remoteurl" + then + remoteurl="$remoteparent" + sep=":" + fi + fi ;; ./*) url="${url#./}" @@ -51,7 +63,7 @@ resolve_relative_url () break;; esac done - echo "$remoteurl/${url%/}" + echo "$remoteurl$sep${url%/}" } # -- 1.7.3.2 -- 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