Merge branch 'en/dirty-merge-fixes'
[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