DORMANTno replies

[PATCH 1/1] git-submodule.sh: fix relative paths with ssh urls

From: Russell Yanofsky <hidden>
Date: 2016-06-15 22:50:09
Subsystem: the rest · Maintainer: Linus Torvalds

Fix handling of submodule urls starting with ../ when the remote url is
an scp-style URL with the format user@host.xz:repo.git. For example, if
the remote url is user@host.xz:repo.git and the submodule URL is
../submodule.git, the combined default URL will now be
user@host.xz:submodule.git instead of
user@host.xz: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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help