Re: 'git mv' doesn't move submodule if it's in a subdirectory
From: Stefan Beller <hidden>
Date: 2016-06-16 02:18:48
Subsystem:
the rest · Maintainer:
Linus Torvalds
On Fri, Apr 15, 2016 at 10:18 AM, Stefan Beller [off-list ref] wrote:
On Fri, Apr 15, 2016 at 1:14 AM, Albin Otterhäll [off-list ref] wrote:quoted
I've a submodule located in a subdirectory ({git_rep}/home/{directory}/{submodule}), and I wanted to move the whole directory up a level ({git_rep}/{directory}/{submodule}). But when I used 'git mv {directory} ../' the '.gitmodule' file didn't get modified. Best regards, Albin OtterhällThanks for the bug report! Which version of Git do you use? (Did you try different versions?)
I think I can reproduce the problem. A regression test (which currently fails) could look like
diff --git a/t/t7001-mv.sh b/t/t7001-mv.sh
index 4008fae..3b96a9a 100755
--- a/t/t7001-mv.sh
+++ b/t/t7001-mv.sh@@ -292,6 +292,9 @@ test_expect_success 'setup submodule' ' echo content >file && git add file && git commit -m "added sub and file" && + mkdir -p deep/directory/hierachy && + git submodule add ./. deep/directory/hierachy/sub && + git commit -m "added another submodule" && git branch submodule '
@@ -475,4 +478,14 @@ test_expect_success 'mv -k does not accidentallydestroy submodules' '
git checkout .
'
+test_expect_failure 'moving a submodule in nested directories' '
+ (
+ cd deep &&
+ git mv directory ../ &&
+ git status
+ # currently git status exits with 128
+ # fatal: Not a git repository:
directory/hierachy/sub/../../../../.git/modules/deep/directory/hierachy/sub
+ )
+'
+
test_done