diff options
-rw-r--r-- | Documentation/git-submodule.txt | 4 | ||||
-rwxr-xr-x | git-submodule.sh | 2 | ||||
-rwxr-xr-x | t/t7400-submodule-basic.sh | 7 |
3 files changed, 9 insertions, 4 deletions
diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt index 1a16ff6044..f72e900d23 100644 --- a/Documentation/git-submodule.txt +++ b/Documentation/git-submodule.txt @@ -78,7 +78,9 @@ to exist in the superproject. If <path> is not given, the <repository> is the URL of the new submodule's origin repository. This may be either an absolute URL, or (if it begins with ./ or ../), the location relative to the superproject's origin -repository. +repository. If the superproject doesn't have an origin configured +the superproject is its own authoritative upstream and the current +working directory is used instead. + <path> is the relative location for the cloned submodule to exist in the superproject. If <path> does not exist, then the 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=/ diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh index cae5fd012c..9099e80e9e 100755 --- a/t/t7400-submodule-basic.sh +++ b/t/t7400-submodule-basic.sh @@ -446,10 +446,13 @@ test_expect_success 'add should fail when path is used by an existing directory' ) ' -test_expect_success 'add should fail when path is relative but no url is set in the superproject' ' +test_expect_success 'use superproject as upstream when path is relative and no url is set there' ' ( cd addtest && - test_must_fail git submodule add ../repo relative + git submodule add ../repo relative && + test "$(git config -f .gitmodules submodule.relative.url)" = ../repo && + git submodule sync relative && + test "$(git config submodule.relative.url)" = "$submodurl/repo" ) ' |