From 4d689320049e1ff3bd31e0468d6f17eeb0b7029c Mon Sep 17 00:00:00 2001 From: Jens Lehmann Date: Mon, 6 Jun 2011 21:58:04 +0200 Subject: submodule add: allow relative repository path even when no url is set Adding a submodule with a relative repository path did only succeed when the superproject's default remote was set. But when that is unset, the superproject is its own authoritative upstream, so lets use its working directory as upstream instead. This allows users to set up a new superpoject where the submodules urls are configured relative to the superproject's upstream while its default remote can be configured later. Signed-off-by: Jens Lehmann Signed-off-by: Junio C Hamano --- git-submodule.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'git-submodule.sh') diff --git a/git-submodule.sh b/git-submodule.sh index 4361ae418c..0c984a8983 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 defined in .git/config" + remoteurl=$(pwd) # the repository is its own authoritative upstream url="$1" remoteurl=${remoteurl%/} sep=/ -- cgit v1.3 From f22a17e8da25a043950a13f11035930922bb86e7 Mon Sep 17 00:00:00 2001 From: Jens Lehmann Date: Mon, 6 Jun 2011 21:58:43 +0200 Subject: submodule add: clean up duplicated code In cmd_add() the switch statement used to resolve a relative url was present twice. Remove the second one and use the realrepo variable set by the first one (lines 194 ff.) instead. Signed-off-by: Jens Lehmann Signed-off-by: Junio C Hamano --- git-submodule.sh | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) (limited to 'git-submodule.sh') diff --git a/git-submodule.sh b/git-submodule.sh index 0c984a8983..32cb05443a 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -238,15 +238,7 @@ cmd_add() die "'$path' already exists and is not a valid git repo" fi - case "$repo" in - ./*|../*) - url=$(resolve_relative_url "$repo") || exit - ;; - *) - url="$repo" - ;; - esac - git config submodule."$path".url "$url" + git config submodule."$path".url "$realrepo" else module_clone "$path" "$realrepo" "$reference" || exit -- cgit v1.3