Mercurial > hg
annotate tests/test-import-bypass.t @ 15198:62dc0e7ab092
import: wrap a transaction around the whole command
Now 'rollback' after 'import' is less surprising: it rolls back all of
the imported changesets, not just the last one. As an extra added
benefit, you don't need 'rollback -f' after 'import --bypass', which
was an undesired side effect of fixing issue2998 (59e8bc22506e)..
Note that this is a different take on issue963, which complained that
rollback after importing multiple patches returned the working dir
parent to the starting point, not to the second-last patch applied.
Since we now rollback the entire import, returning the working dir to
the starting point is entirely logical. So this change also undoes
a732eebf1958, the fix to issue963, and updates its tests accordingly.
Bottom line: rollback after import was weird before issue963,
understandable since the fix for issue963, and even better now.
author | Greg Ward <greg@gerg.ca> |
---|---|
date | Sun, 02 Oct 2011 14:34:28 -0400 |
parents | 0705f2ac79d6 |
children | e0348815e806 41885892796e |
rev | line source |
---|---|
14611 | 1 $ echo "[extensions]" >> $HGRCPATH |
2 $ echo "purge=" >> $HGRCPATH | |
3 $ echo "graphlog=" >> $HGRCPATH | |
4 | |
5 $ shortlog() { | |
6 > hg glog --template '{rev}:{node|short} {author} {date|hgdate} - {branch} - {desc|firstline}\n' | |
7 > } | |
8 | |
9 Test --bypass with other options | |
10 | |
11 $ hg init repo-options | |
12 $ cd repo-options | |
13 $ echo a > a | |
14 $ hg ci -Am adda | |
15 adding a | |
16 $ echo a >> a | |
17 $ hg branch foo | |
18 marked working directory as branch foo | |
19 $ hg ci -Am changea | |
20 $ hg export . > ../test.diff | |
21 $ hg up null | |
22 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
23 | |
24 Test importing an existing revision | |
25 | |
26 $ hg import --bypass --exact ../test.diff | |
27 applying ../test.diff | |
28 $ shortlog | |
29 o 1:4e322f7ce8e3 test 0 0 - foo - changea | |
30 | | |
31 o 0:07f494440405 test 0 0 - default - adda | |
32 | |
33 | |
34 Test failure without --exact | |
35 | |
36 $ hg import --bypass ../test.diff | |
37 applying ../test.diff | |
38 unable to find 'a' for patching | |
39 abort: patch failed to apply | |
40 [255] | |
41 $ hg st | |
42 $ shortlog | |
43 o 1:4e322f7ce8e3 test 0 0 - foo - changea | |
44 | | |
45 o 0:07f494440405 test 0 0 - default - adda | |
46 | |
47 | |
48 Test --user, --date and --message | |
49 | |
50 $ hg up 0 | |
51 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
52 $ hg import --bypass --u test2 -d '1 0' -m patch2 ../test.diff | |
53 applying ../test.diff | |
54 $ cat .hg/last-message.txt | |
55 patch2 (no-eol) | |
56 $ shortlog | |
57 o 2:2e127d1da504 test2 1 0 - default - patch2 | |
58 | | |
59 | o 1:4e322f7ce8e3 test 0 0 - foo - changea | |
60 |/ | |
61 @ 0:07f494440405 test 0 0 - default - adda | |
62 | |
15198
62dc0e7ab092
import: wrap a transaction around the whole command
Greg Ward <greg@gerg.ca>
parents:
15194
diff
changeset
|
63 $ hg rollback |
62dc0e7ab092
import: wrap a transaction around the whole command
Greg Ward <greg@gerg.ca>
parents:
15194
diff
changeset
|
64 repository tip rolled back to revision 1 (undo import) |
14611 | 65 |
66 Test --import-branch | |
67 | |
68 $ hg import --bypass --import-branch ../test.diff | |
69 applying ../test.diff | |
70 $ shortlog | |
71 o 1:4e322f7ce8e3 test 0 0 - foo - changea | |
72 | | |
73 @ 0:07f494440405 test 0 0 - default - adda | |
74 | |
15198
62dc0e7ab092
import: wrap a transaction around the whole command
Greg Ward <greg@gerg.ca>
parents:
15194
diff
changeset
|
75 $ hg rollback |
62dc0e7ab092
import: wrap a transaction around the whole command
Greg Ward <greg@gerg.ca>
parents:
15194
diff
changeset
|
76 repository tip rolled back to revision 1 (undo import) |
14611 | 77 |
78 Test --strip | |
79 | |
80 $ hg import --bypass --strip 0 - <<EOF | |
81 > # HG changeset patch | |
82 > # User test | |
83 > # Date 0 0 | |
84 > # Branch foo | |
85 > # Node ID 4e322f7ce8e3e4203950eac9ece27bf7e45ffa6c | |
86 > # Parent 07f4944404050f47db2e5c5071e0e84e7a27bba9 | |
87 > changea | |
88 > | |
89 > diff -r 07f494440405 -r 4e322f7ce8e3 a | |
90 > --- a Thu Jan 01 00:00:00 1970 +0000 | |
91 > +++ a Thu Jan 01 00:00:00 1970 +0000 | |
92 > @@ -1,1 +1,2 @@ | |
93 > a | |
94 > +a | |
95 > EOF | |
96 applying patch from stdin | |
15198
62dc0e7ab092
import: wrap a transaction around the whole command
Greg Ward <greg@gerg.ca>
parents:
15194
diff
changeset
|
97 $ hg rollback |
62dc0e7ab092
import: wrap a transaction around the whole command
Greg Ward <greg@gerg.ca>
parents:
15194
diff
changeset
|
98 repository tip rolled back to revision 1 (undo import) |
14611 | 99 |
100 Test unsupported combinations | |
101 | |
102 $ hg import --bypass --no-commit ../test.diff | |
103 abort: cannot use --no-commit with --bypass | |
104 [255] | |
105 $ hg import --bypass --similarity 50 ../test.diff | |
106 abort: cannot use --similarity with --bypass | |
107 [255] | |
108 | |
109 Test commit editor | |
110 | |
111 $ hg diff -c 1 > ../test.diff | |
112 $ HGEDITOR=cat hg import --bypass ../test.diff | |
113 applying ../test.diff | |
114 | |
115 | |
116 HG: Enter commit message. Lines beginning with 'HG:' are removed. | |
117 HG: Leave message empty to abort commit. | |
118 HG: -- | |
119 HG: user: test | |
120 HG: branch 'default' | |
121 HG: changed a | |
122 abort: empty commit message | |
123 [255] | |
124 | |
125 Test patch.eol is handled | |
126 | |
127 $ python -c 'file("a", "wb").write("a\r\n")' | |
128 $ hg ci -m makeacrlf | |
129 $ hg import -m 'should fail because of eol' --bypass ../test.diff | |
130 applying ../test.diff | |
131 patching file a | |
132 Hunk #1 FAILED at 0 | |
133 abort: patch failed to apply | |
134 [255] | |
135 $ hg --config patch.eol=auto import -d '0 0' -m 'test patch.eol' --bypass ../test.diff | |
136 applying ../test.diff | |
137 $ shortlog | |
138 o 3:d7805b4d2cb3 test 0 0 - default - test patch.eol | |
139 | | |
140 @ 2:872023de769d test 0 0 - default - makeacrlf | |
141 | | |
142 | o 1:4e322f7ce8e3 test 0 0 - foo - changea | |
143 |/ | |
144 o 0:07f494440405 test 0 0 - default - adda | |
145 | |
146 | |
147 Test applying multiple patches | |
148 | |
149 $ hg up -qC 0 | |
150 $ echo e > e | |
151 $ hg ci -Am adde | |
152 adding e | |
153 created new head | |
154 $ hg export . > ../patch1.diff | |
155 $ hg up -qC 1 | |
156 $ echo f > f | |
157 $ hg ci -Am addf | |
158 adding f | |
159 $ hg export . > ../patch2.diff | |
160 $ cd .. | |
161 $ hg clone -r1 repo-options repo-multi1 | |
162 adding changesets | |
163 adding manifests | |
164 adding file changes | |
165 added 2 changesets with 2 changes to 1 files | |
166 updating to branch foo | |
167 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
168 $ cd repo-multi1 | |
169 $ hg up 0 | |
170 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
171 $ hg import --bypass ../patch1.diff ../patch2.diff | |
172 applying ../patch1.diff | |
173 applying ../patch2.diff | |
174 $ shortlog | |
175 o 3:bc8ca3f8a7c4 test 0 0 - default - addf | |
176 | | |
177 o 2:16581080145e test 0 0 - default - adde | |
178 | | |
179 | o 1:4e322f7ce8e3 test 0 0 - foo - changea | |
180 |/ | |
181 @ 0:07f494440405 test 0 0 - default - adda | |
182 | |
183 | |
184 Test applying multiple patches with --exact | |
185 | |
186 $ cd .. | |
187 $ hg clone -r1 repo-options repo-multi2 | |
188 adding changesets | |
189 adding manifests | |
190 adding file changes | |
191 added 2 changesets with 2 changes to 1 files | |
192 updating to branch foo | |
193 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
194 $ cd repo-multi2 | |
195 $ hg import --bypass --exact ../patch1.diff ../patch2.diff | |
196 applying ../patch1.diff | |
197 applying ../patch2.diff | |
198 $ shortlog | |
199 o 3:d60cb8989666 test 0 0 - foo - addf | |
200 | | |
201 | o 2:16581080145e test 0 0 - default - adde | |
202 | | | |
203 @ | 1:4e322f7ce8e3 test 0 0 - foo - changea | |
204 |/ | |
205 o 0:07f494440405 test 0 0 - default - adda | |
206 | |
207 | |
208 $ cd .. | |
209 | |
210 Test complicated patch with --exact | |
211 | |
212 $ hg init repo-exact | |
213 $ cd repo-exact | |
214 $ echo a > a | |
215 $ echo c > c | |
216 $ echo d > d | |
217 $ echo e > e | |
218 $ echo f > f | |
219 $ chmod +x f | |
220 $ ln -s c linkc | |
221 $ hg ci -Am t | |
222 adding a | |
223 adding c | |
224 adding d | |
225 adding e | |
226 adding f | |
227 adding linkc | |
228 $ hg cp a aa1 | |
229 $ echo b >> a | |
230 $ echo b > b | |
231 $ hg add b | |
232 $ hg cp a aa2 | |
233 $ echo aa >> aa2 | |
234 $ chmod +x e | |
235 $ chmod -x f | |
236 $ ln -s a linka | |
237 $ hg rm d | |
238 $ hg rm linkc | |
239 $ hg mv c cc | |
240 $ hg ci -m patch | |
241 $ hg export --git . > ../test.diff | |
242 $ hg up -C null | |
243 0 files updated, 0 files merged, 7 files removed, 0 files unresolved | |
244 $ hg purge | |
245 $ hg st | |
246 $ hg import --bypass --exact ../test.diff | |
247 applying ../test.diff | |
248 | |
249 The patch should have matched the exported revision and generated no additional | |
250 data. If not, diff both heads to debug it. | |
251 | |
252 $ shortlog | |
253 o 1:2978fd5c8aa4 test 0 0 - default - patch | |
254 | | |
255 o 0:a0e19e636a43 test 0 0 - default - t | |
256 |