Re: [PATCH] git-submodule.sh - Remove trailing / from URL if found
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 20, 2008, 04:07 UTC
- Message-ID
- <7vpro4tjkw.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <1219198703-2388-1-git-send-email-mlevedahl@gmail.com>
Mark Levedahl <mlevedahl@gmail.com> writes:
Show 24 quoted lines
> git clone does not complain if a trailing '/' is included in the origin
> URL, but doing so causes resolution of a submodule's URL relative to the
> superproject to fail. Regardless of whether git is changed to remove the
> trailing / before recording the URL, we should avoid this issue in
> submodule as existing repositories can have this problem.
>
> Signed-off-by: Mark Levedahl <mlevedahl@gmail.com>
> ---
> git-submodule.sh | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/git-submodule.sh b/git-submodule.sh
> index ea6357b..fa9dd3a 100755
> --- a/git-submodule.sh
> +++ b/git-submodule.sh
> @@ -34,7 +34,7 @@ resolve_relative_url ()
> remote=$(get_default_remote)
> remoteurl=$(git config "remote.$remote.url") ||
> die "remote ($remote) does not have a url in .git/config"
> - url="$1"
> + url="${1%/}"
> while test -n "$url"
> do
> case "$url" inHmm, the case arms outside the context looks like this:
while test -n "$url"
do
case "$url" in
../*)
url="${url#../}"
remoteurl="${remoteurl%/*}"
;;
./*)
url="${url#./}"
;;
*)
break;;
esac
done
echo "$remoteurl/$url"If you call "resolve_relative_url ../", the first arm used to fire once and stripped one level away, but with your patch it does not do so anymore, and returns "$remoteurl/.." instead?
I know you are primarily interested in making sure that "../foo" and "../foo/" are handled the same way, but somehow this change does not feel right. How about stripping the trailing slash from the end result?