Thread (4 messages) flat view 4 messages, 2 authors, 2016-06-16

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äll
Thanks 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 accidentally
destroy 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help