summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Andreas Köhler <andi5.py@gmx.net>2010-10-08 03:07:48 +0200
committerLibravatar Junio C Hamano <gitster@pobox.com>2010-10-13 18:31:45 -0700
commit33f072f8910081b12780197a2a5423227e437af8 (patch)
treeabfa4e5e3842c55dde210c298c613ae92dcf90cf
parentt/t3415: use && where applicable. (diff)
downloadtgif-33f072f8910081b12780197a2a5423227e437af8.tar.xz
submodule sync: Update "submodule.<name>.url" for empty directories
If a submodule directory has not been filled by "git submodule update" yet, then "git submodule sync" must still update the super-project's configuration for submodule.<name>.url. This situation occurs when switching between branches with a module from different urls and other branches without the submodule. Signed-off-by: Andreas Köhler <andi5.py@gmx.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xgit-submodule.sh5
-rwxr-xr-xt/t7403-submodule-sync.sh12
2 files changed, 14 insertions, 3 deletions
diff --git a/git-submodule.sh b/git-submodule.sh
index 9ebbab798d..c291eed59c 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -836,11 +836,12 @@ cmd_sync()
;;
esac
+ say "Synchronizing submodule url for '$name'"
+ git config submodule."$name".url "$url"
+
if test -e "$path"/.git
then
(
- say "Synchronizing submodule url for '$name'"
- git config submodule."$name".url "$url"
clear_local_git_env
cd "$path"
remote=$(get_default_remote)
diff --git a/t/t7403-submodule-sync.sh b/t/t7403-submodule-sync.sh
index 02522f9627..e5b19538b0 100755
--- a/t/t7403-submodule-sync.sh
+++ b/t/t7403-submodule-sync.sh
@@ -23,7 +23,9 @@ test_expect_success setup '
git commit -m "submodule"
) &&
git clone super super-clone &&
- (cd super-clone && git submodule update --init)
+ (cd super-clone && git submodule update --init) &&
+ git clone super empty-clone &&
+ (cd empty-clone && git submodule init)
'
test_expect_success 'change submodule' '
@@ -64,4 +66,12 @@ test_expect_success '"git submodule sync" should update submodule URLs' '
)
'
+test_expect_success '"git submodule sync" should update submodule URLs if not yet cloned' '
+ (cd empty-clone &&
+ git pull &&
+ git submodule sync &&
+ test -d "$(git config submodule.submodule.url)"
+ )
+'
+
test_done