Hi Johan,
On 13.07.2009, at 14:43, Johan Herland wrote:
On Monday 13 July 2009, Johan Herland wrote:
On Monday 13 July 2009, Peter Voss wrote:
On 13.07.2009, at 12:59, Johan Herland wrote:
You might be able to pull this off using relative submodule URLs.
That's a good hint. Unfortunately I can't use this to go up 2
directories. I.e. I can't get from
git@xxxxxxxxxx:xxx/mymodule.git
to
git@xxxxxxxxxx:yyy/foo.git
Using the relative URL ../../yyy/foo.git leads to the result:
Clone of 'git@xxxxxxxxxx:xxx/yyy/foo.git' into submodule path 'foo'
failed
So I basically cannot replace the xxx part.
This is due to a small bug in git-submodule.sh. In the
resolve_relative_url() function, when repeatedly unwrapping '../'s
from $url in the while loop, the line remoteurl="${remoteurl%/*}"
removes everything _after_ the last slash, which does not work for
the git@xxxxxxxxxx:xxx part of your URL.
This should be relatively easy to fix, although maybe not as
straightforwardly trivial as it might seem at first sight.
I don't have the time to look into this now, so feel free to take a
stab at it.
Here's a first stab at it (TOTALLY UNTESTED). Obviously it needs a
testcase (typically in t7400-submodule-basic.sh) as well.
And I thought you didn't have time. ;-) Thanks for this patch. I will
test this out tomorrow.
Thanks,
--Peter
Have fun! :)
...Johan
diff --git a/git-submodule.sh b/git-submodule.sh
index ebed711..7d8f7a7 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -27,12 +27,19 @@ resolve_relative_url ()
die "remote ($remote) does not have a url defined in .git/config"
url="$1"
remoteurl=${remoteurl%/}
+ sep="/"
while test -n "$url"
do
case "$url" in
../*)
url="${url#../}"
- remoteurl="${remoteurl%/*}"
+ newremoteurl="${remoteurl%/*}"
+ if test "$newremoteurl" = "$remoteurl" -a "$sep" = "/"
+ then
+ newremoteurl="${remoteurl%:*}"
+ sep=":"
+ fi
+ remoteurl="$newremoteurl"
;;
./*)
url="${url#./}"
@@ -41,7 +48,7 @@ resolve_relative_url ()
break;;
esac
done
- echo "$remoteurl/${url%/}"
+ echo "$remoteurl$sep${url%/}"
}
#
--
Johan Herland, <johan@xxxxxxxxxxx>
www.herland.net
--
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