When using git-mv with a submodule it will detect that and update the paths for its configurations (.gitmodules, worktree and gitfile). This does not work for recursive submodules where a user renames the root submodule. We discovered this fact when working on on-demand fetch for renamed submodules. Lets add a test to document. Signed-off-by: Heiko Voigt <hvoigt@xxxxxxxxxx> --- On Fri, Aug 18, 2017 at 12:04:03PM -0700, Stefan Beller wrote: > > I just copied the shortcut that they were adding themselfes as submodule > > in 'setup submodule'. The whole setup of submodules in this test is like > > this. This way we already had a nested submodule structure which I could > > just add. > > > > I agree that this is unrealistic so I can change that in the test I am > > adding. But from what I have seen, this shortcut is taken in quite some > > places when dealing with submodules. > > Please do not make it worse. > Once upon a time (late '16 IIRC) I had a series floating on the > list removing all occurrences, but there were issues with the > series and it did not land. Took a little while but here is a more clean patch creating individual submodules for the nesting. Cheers Heiko t/t7001-mv.sh | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/t/t7001-mv.sh b/t/t7001-mv.sh index e365d1ff77..cbc5fb37fe 100755 --- a/t/t7001-mv.sh +++ b/t/t7001-mv.sh @@ -491,4 +491,29 @@ test_expect_success 'moving a submodule in nested directories' ' test_cmp actual expect ' +test_expect_failure 'moving nested submodules' ' + git commit -am "cleanup commit" && + mkdir sub_nested_nested && + (cd sub_nested_nested && + touch nested_level2 && + git init && + git add . && + git commit -m "nested level 2" + ) && + mkdir sub_nested && + (cd sub_nested && + touch nested_level1 && + git init && + git add . && + git commit -m "nested level 1" + git submodule add ../sub_nested_nested && + git commit -m "add nested level 2" + ) && + git submodule add ./sub_nested nested_move && + git commit -m "add nested_move" && + git submodule update --init --recursive && + git mv nested_move sub_nested_moved && + git status +' + test_done -- 2.14.1.145.gb3622a4