Skip to content

Commit 33f072f

Browse files
andi5gitster
authored andcommitted
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 <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 7c6eafa commit 33f072f

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

git-submodule.sh

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -836,11 +836,12 @@ cmd_sync()
836836
;;
837837
esac
838838

839+
say "Synchronizing submodule url for '$name'"
840+
git config submodule."$name".url "$url"
841+
839842
if test -e "$path"/.git
840843
then
841844
(
842-
say "Synchronizing submodule url for '$name'"
843-
git config submodule."$name".url "$url"
844845
clear_local_git_env
845846
cd "$path"
846847
remote=$(get_default_remote)

t/t7403-submodule-sync.sh

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ test_expect_success setup '
2323
git commit -m "submodule"
2424
) &&
2525
git clone super super-clone &&
26-
(cd super-clone && git submodule update --init)
26+
(cd super-clone && git submodule update --init) &&
27+
git clone super empty-clone &&
28+
(cd empty-clone && git submodule init)
2729
'
2830

2931
test_expect_success 'change submodule' '
@@ -64,4 +66,12 @@ test_expect_success '"git submodule sync" should update submodule URLs' '
6466
)
6567
'
6668

69+
test_expect_success '"git submodule sync" should update submodule URLs if not yet cloned' '
70+
(cd empty-clone &&
71+
git pull &&
72+
git submodule sync &&
73+
test -d "$(git config submodule.submodule.url)"
74+
)
75+
'
76+
6777
test_done

0 commit comments

Comments
 (0)