[PATCH] submodule: Improve handling of relative submodule URLs.
From: Jacob Helwig <hidden>
Date: 2016-08-13 23:25:42
Relative URLs only worked with <proto>://<host>/<location> style URLs, and would break when cloning a repository using <user>@<host>:<location> (scp) style "URL"s. When a submodule's URL was set to "../submodule.git", and the repository using it was cloned from "git@example.com:repo.git", git would try to clone the submodule from "git@example.com:repo.git/submodule.git", which would not likely work. This updates resolve_relative_url to handle the scp style URLs. Signed-off-by: Jacob Helwig <redacted> --- git-submodule.sh | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/git-submodule.sh b/git-submodule.sh
index 664f217..97787a3 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh@@ -37,18 +37,19 @@ resolve_relative_url () while test -n "$url" do case "$url" in - ../*) + ..[/:]*) url="${url#../}" - remoteurl="${remoteurl%/*}" + remoteurl="$(echo "$remoteurl" | sed -e 's|\(.*[/:]\).*|\1|')" ;; - ./*) + .[/:]*) url="${url#./}" + remoteurl="$remoteurl/" ;; *) break;; esac done - echo "$remoteurl/${url%/}" + echo "$remoteurl${url#[/:]}" } #
--
1.7.0.91.g310a