Merge branch 'sb/misc-cleanups' into HEAD
[git] / t / t9826-git-p4-keep-empty-commits.sh
1 #!/bin/sh
2
3 test_description='Clone repositories and keep empty commits'
4
5 . ./lib-git-p4.sh
6
7 test_expect_success 'start p4d' '
8         start_p4d
9 '
10
11 test_expect_success 'Create a repo' '
12         client_view "//depot/... //client/..." &&
13         (
14                 cd "$cli" &&
15
16                 mkdir -p subdir &&
17
18                 >subdir/file1.txt &&
19                 p4 add subdir/file1.txt &&
20                 p4 submit -d "Add file 1" &&
21
22                 >file2.txt &&
23                 p4 add file2.txt &&
24                 p4 submit -d "Add file 2" &&
25
26                 >subdir/file3.txt &&
27                 p4 add subdir/file3.txt &&
28                 p4 submit -d "Add file 3" &&
29
30                 >file4.txt &&
31                 p4 add file4.txt &&
32                 p4 submit -d "Add file 4" &&
33
34                 p4 delete subdir/file3.txt &&
35                 p4 submit -d "Remove file 3" &&
36
37                 p4 delete file4.txt &&
38                 p4 submit -d "Remove file 4"
39         )
40 '
41
42 test_expect_success 'Clone repo root path with all history' '
43         client_view "//depot/... //client/..." &&
44         test_when_finished cleanup_git &&
45         (
46                 cd "$git" &&
47                 git init . &&
48                 git p4 clone --use-client-spec --destination="$git" //depot@all &&
49                 cat >expect <<-\EOF &&
50 Remove file 4
51 [git-p4: depot-paths = "//depot/": change = 6]
52
53 Remove file 3
54 [git-p4: depot-paths = "//depot/": change = 5]
55
56 Add file 4
57 [git-p4: depot-paths = "//depot/": change = 4]
58
59 Add file 3
60 [git-p4: depot-paths = "//depot/": change = 3]
61
62 Add file 2
63 [git-p4: depot-paths = "//depot/": change = 2]
64
65 Add file 1
66 [git-p4: depot-paths = "//depot/": change = 1]
67
68                 EOF
69                 git log --format=%B >actual &&
70                 test_cmp expect actual
71         )
72 '
73
74 test_expect_success 'Clone repo subdir with all history but keep empty commits' '
75         client_view "//depot/subdir/... //client/subdir/..." &&
76         test_when_finished cleanup_git &&
77         (
78                 cd "$git" &&
79                 git init . &&
80                 git config git-p4.keepEmptyCommits true &&
81                 git p4 clone --use-client-spec --destination="$git" //depot@all &&
82                 cat >expect <<-\EOF &&
83 Remove file 4
84 [git-p4: depot-paths = "//depot/": change = 6]
85
86 Remove file 3
87 [git-p4: depot-paths = "//depot/": change = 5]
88
89 Add file 4
90 [git-p4: depot-paths = "//depot/": change = 4]
91
92 Add file 3
93 [git-p4: depot-paths = "//depot/": change = 3]
94
95 Add file 2
96 [git-p4: depot-paths = "//depot/": change = 2]
97
98 Add file 1
99 [git-p4: depot-paths = "//depot/": change = 1]
100
101                 EOF
102                 git log --format=%B >actual &&
103                 test_cmp expect actual
104         )
105 '
106
107 test_expect_success 'Clone repo subdir with all history' '
108         client_view "//depot/subdir/... //client/subdir/..." &&
109         test_when_finished cleanup_git &&
110         (
111                 cd "$git" &&
112                 git init . &&
113                 git p4 clone --use-client-spec --destination="$git" --verbose //depot@all &&
114                 cat >expect <<-\EOF &&
115 Remove file 3
116 [git-p4: depot-paths = "//depot/": change = 5]
117
118 Add file 3
119 [git-p4: depot-paths = "//depot/": change = 3]
120
121 Add file 1
122 [git-p4: depot-paths = "//depot/": change = 1]
123
124                 EOF
125                 git log --format=%B >actual &&
126                 test_cmp expect actual
127         )
128 '
129
130 test_expect_success 'kill p4d' '
131         kill_p4d
132 '
133
134 test_done