]>
Commit | Line | Data |
---|---|---|
8bf2c69c AR |
1 | #!/bin/sh |
2 | ||
5be60078 | 3 | test_description='git mv in subdirs' |
8bf2c69c AR |
4 | . ./test-lib.sh |
5 | ||
6 | test_expect_success \ | |
7 | 'prepare reference tree' \ | |
8 | 'mkdir path0 path1 && | |
9 | cp ../../COPYING path0/COPYING && | |
5be60078 | 10 | git add path0/COPYING && |
8bf2c69c AR |
11 | git-commit -m add -a' |
12 | ||
13 | test_expect_success \ | |
90924d55 | 14 | 'moving the file out of subdirectory' \ |
5be60078 | 15 | 'cd path0 && git mv COPYING ../path1/COPYING' |
8bf2c69c AR |
16 | |
17 | # in path0 currently | |
18 | test_expect_success \ | |
19 | 'commiting the change' \ | |
90924d55 | 20 | 'cd .. && git-commit -m move-out -a' |
8bf2c69c AR |
21 | |
22 | test_expect_success \ | |
23 | 'checking the commit' \ | |
5be60078 | 24 | 'git diff-tree -r -M --name-status HEAD^ HEAD | \ |
90ed6c05 | 25 | grep "^R100..*path0/COPYING..*path1/COPYING"' |
8bf2c69c | 26 | |
90924d55 JW |
27 | test_expect_success \ |
28 | 'moving the file back into subdirectory' \ | |
5be60078 | 29 | 'cd path0 && git mv ../path1/COPYING COPYING' |
90924d55 JW |
30 | |
31 | # in path0 currently | |
32 | test_expect_success \ | |
33 | 'commiting the change' \ | |
34 | 'cd .. && git-commit -m move-in -a' | |
35 | ||
36 | test_expect_success \ | |
37 | 'checking the commit' \ | |
5be60078 | 38 | 'git diff-tree -r -M --name-status HEAD^ HEAD | \ |
90ed6c05 | 39 | grep "^R100..*path1/COPYING..*path0/COPYING"' |
90924d55 | 40 | |
afd22296 JW |
41 | test_expect_success \ |
42 | 'adding another file' \ | |
43 | 'cp ../../README path0/README && | |
5be60078 | 44 | git add path0/README && |
afd22296 JW |
45 | git-commit -m add2 -a' |
46 | ||
47 | test_expect_success \ | |
48 | 'moving whole subdirectory' \ | |
5be60078 | 49 | 'git mv path0 path2' |
afd22296 JW |
50 | |
51 | test_expect_success \ | |
52 | 'commiting the change' \ | |
53 | 'git-commit -m dir-move -a' | |
54 | ||
55 | test_expect_success \ | |
56 | 'checking the commit' \ | |
5be60078 | 57 | 'git diff-tree -r -M --name-status HEAD^ HEAD | \ |
90ed6c05 | 58 | grep "^R100..*path0/COPYING..*path2/COPYING" && |
5be60078 | 59 | git diff-tree -r -M --name-status HEAD^ HEAD | \ |
90ed6c05 | 60 | grep "^R100..*path0/README..*path2/README"' |
afd22296 | 61 | |
1d6249e6 JS |
62 | test_expect_success \ |
63 | 'succeed when source is a prefix of destination' \ | |
5be60078 | 64 | 'git mv path2/COPYING path2/COPYING-renamed' |
1d6249e6 | 65 | |
a1dad607 JS |
66 | test_expect_success \ |
67 | 'moving whole subdirectory into subdirectory' \ | |
5be60078 | 68 | 'git mv path2 path1' |
a1dad607 JS |
69 | |
70 | test_expect_success \ | |
71 | 'commiting the change' \ | |
72 | 'git-commit -m dir-move -a' | |
73 | ||
74 | test_expect_success \ | |
75 | 'checking the commit' \ | |
5be60078 | 76 | 'git diff-tree -r -M --name-status HEAD^ HEAD | \ |
90ed6c05 | 77 | grep "^R100..*path2/COPYING..*path1/path2/COPYING" && |
5be60078 | 78 | git diff-tree -r -M --name-status HEAD^ HEAD | \ |
90ed6c05 | 79 | grep "^R100..*path2/README..*path1/path2/README"' |
a1dad607 | 80 | |
41ac414e | 81 | test_expect_success \ |
ac64a722 | 82 | 'do not move directory over existing directory' \ |
41ac414e | 83 | 'mkdir path0 && mkdir path0/path2 && ! git mv path2 path0' |
ac64a722 | 84 | |
c5203bdf JS |
85 | test_expect_success \ |
86 | 'move into "."' \ | |
5be60078 | 87 | 'git mv path1/path2/ .' |
c5203bdf | 88 | |
4fddf579 JH |
89 | test_expect_success "Michael Cassar's test case" ' |
90 | rm -fr .git papers partA && | |
5c94f87e | 91 | git init && |
4fddf579 JH |
92 | mkdir -p papers/unsorted papers/all-papers partA && |
93 | echo a > papers/unsorted/Thesis.pdf && | |
94 | echo b > partA/outline.txt && | |
95 | echo c > papers/unsorted/_another && | |
96 | git add papers partA && | |
97 | T1=`git write-tree` && | |
98 | ||
99 | git mv papers/unsorted/Thesis.pdf papers/all-papers/moo-blah.pdf && | |
100 | ||
101 | T=`git write-tree` && | |
102 | git ls-tree -r $T | grep partA/outline.txt || { | |
103 | git ls-tree -r $T | |
104 | (exit 1) | |
105 | } | |
106 | ' | |
107 | ||
aca085e5 JS |
108 | rm -fr papers partA path? |
109 | ||
110 | test_expect_success "Sergey Vlasov's test case" ' | |
111 | rm -fr .git && | |
5c94f87e | 112 | git init && |
aca085e5 JS |
113 | mkdir ab && |
114 | date >ab.c && | |
115 | date >ab/d && | |
116 | git add ab.c ab && | |
117 | git commit -m 'initial' && | |
118 | git mv ab a | |
119 | ' | |
120 | ||
8bf2c69c | 121 | test_done |