[PATCH] submodule: Improve handling of relative submodule URLs.

Subsystems: the rest

DORMANTno replies

2 messages, 2 authors, 2016-08-13 · open the first message on its own page

[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

Re: [PATCH] submodule: Improve handling of relative submodule URLs.

From: Mark Levedahl <hidden>
Date: 2016-06-15 22:48:21

On 02/25/2010 02:28 PM, Jacob Helwig wrote:
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.
   
My solution for this has been to always give the full path, possibly using ~

e.g.,     git@example.com:~/repo.git

and as that works fine, I'm indifferent to this proposed change.

Mark
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help