test-revert-interactive.t 6.43 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Revert interactive tests
1 add and commit file f
2 add commit file folder1/g
3 add and commit file folder2/h
4 add and commit file folder1/i
5 commit change to file f
6 commit changes to files folder1/g folder2/h
7 commit changes to files folder1/g folder2/h
8 revert interactive to commit id 2 (line 3 above), check that folder1/i is removed and
9 make workdir match 7
10 run the same test than 8 from within folder1 and check same expectations

  $ cat <<EOF >> $HGRCPATH
  > [ui]
  > interactive = true
  > [extensions]
  > record =
18
  > purge = 
19 20 21
  > EOF


22
  $ mkdir -p a/folder1 a/folder2
23 24
  $ cd a
  $ hg init
25 26
  >>> open('f', 'wb').write("1\n2\n3\n4\n5\n")
  $ hg add f ; hg commit -m "adding f"
27 28 29
  $ cat f > folder1/g ; hg add folder1/g ; hg commit -m "adding folder1/g"
  $ cat f > folder2/h ; hg add folder2/h ; hg commit -m "adding folder2/h"
  $ cat f > folder1/i ; hg add folder1/i ; hg commit -m "adding folder1/i"
30 31 32 33 34 35
  >>> open('f', 'wb').write("a\n1\n2\n3\n4\n5\nb\n")
  $ hg commit -m "modifying f"
  >>> open('folder1/g', 'wb').write("c\n1\n2\n3\n4\n5\nd\n")
  $ hg commit -m "modifying folder1/g"
  >>> open('folder2/h', 'wb').write("e\n1\n2\n3\n4\n5\nf\n")
  $ hg commit -m "modifying folder2/h"
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
  $ hg tip
  changeset:   6:59dd6e4ab63a
  tag:         tip
  user:        test
  date:        Thu Jan 01 00:00:00 1970 +0000
  summary:     modifying folder2/h
  
  $ hg revert -i -r 2 --all -- << EOF
  > y
  > y
  > y
  > y
  > y
  > n
  > n
  > EOF
  reverting f
  reverting folder1/g (glob)
  removing folder1/i (glob)
  reverting folder2/h (glob)
56
  diff --git a/f b/f
57 58 59
  2 hunks, 2 lines changed
  examine changes to 'f'? [Ynesfdaq?] y
  
60 61
  @@ -1,5 +1,6 @@
  +a
62 63 64 65 66 67 68
   1
   2
   3
   4
   5
  record change 1/6 to 'f'? [Ynesfdaq?] y
  
69
  @@ -1,5 +2,6 @@
70 71 72 73 74
   1
   2
   3
   4
   5
75
  +b
76 77
  record change 2/6 to 'f'? [Ynesfdaq?] y
  
78
  diff --git a/folder1/g b/folder1/g
79 80 81
  2 hunks, 2 lines changed
  examine changes to 'folder1/g'? [Ynesfdaq?] y
  
82 83
  @@ -1,5 +1,6 @@
  +c
84 85 86 87 88 89 90
   1
   2
   3
   4
   5
  record change 3/6 to 'folder1/g'? [Ynesfdaq?] y
  
91
  @@ -1,5 +2,6 @@
92 93 94 95 96
   1
   2
   3
   4
   5
97
  +d
98 99
  record change 4/6 to 'folder1/g'? [Ynesfdaq?] n
  
100
  diff --git a/folder2/h b/folder2/h
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
  2 hunks, 2 lines changed
  examine changes to 'folder2/h'? [Ynesfdaq?] n
  
  $ cat f
  1
  2
  3
  4
  5
  $ cat folder1/g
  1
  2
  3
  4
  5
  d
  $ cat folder2/h
  e
  1
  2
  3
  4
  5
  f
125 126 127 128 129 130

Test that --interactive lift the need for --all

  $ echo q | hg revert -i -r 2
  reverting folder1/g (glob)
  reverting folder2/h (glob)
131
  diff --git a/folder1/g b/folder1/g
132 133 134 135 136 137 138 139
  1 hunks, 1 lines changed
  examine changes to 'folder1/g'? [Ynesfdaq?] q
  
  abort: user quit
  [255]
  $ rm folder1/g.orig


140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
  $ hg update -C 6
  3 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg revert -i -r 2 --all -- << EOF
  > y
  > y
  > y
  > y
  > y
  > n
  > n
  > EOF
  reverting f
  reverting folder1/g (glob)
  removing folder1/i (glob)
  reverting folder2/h (glob)
155
  diff --git a/f b/f
156 157 158
  2 hunks, 2 lines changed
  examine changes to 'f'? [Ynesfdaq?] y
  
159 160
  @@ -1,5 +1,6 @@
  +a
161 162 163 164 165 166 167
   1
   2
   3
   4
   5
  record change 1/6 to 'f'? [Ynesfdaq?] y
  
168
  @@ -1,5 +2,6 @@
169 170 171 172 173
   1
   2
   3
   4
   5
174
  +b
175 176
  record change 2/6 to 'f'? [Ynesfdaq?] y
  
177
  diff --git a/folder1/g b/folder1/g
178 179 180
  2 hunks, 2 lines changed
  examine changes to 'folder1/g'? [Ynesfdaq?] y
  
181 182
  @@ -1,5 +1,6 @@
  +c
183 184 185 186 187 188 189
   1
   2
   3
   4
   5
  record change 3/6 to 'folder1/g'? [Ynesfdaq?] y
  
190
  @@ -1,5 +2,6 @@
191 192 193 194 195
   1
   2
   3
   4
   5
196
  +d
197 198
  record change 4/6 to 'folder1/g'? [Ynesfdaq?] n
  
199
  diff --git a/folder2/h b/folder2/h
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
  2 hunks, 2 lines changed
  examine changes to 'folder2/h'? [Ynesfdaq?] n
  
  $ cat f
  1
  2
  3
  4
  5
  $ cat folder1/g
  1
  2
  3
  4
  5
  d
  $ cat folder2/h
  e
  1
  2
  3
  4
  5
  f
224 225 226 227 228 229 230 231 232 233
  $ hg st
  M f
  M folder1/g
  R folder1/i
  $ hg revert --interactive f << EOF
  > y
  > y
  > n
  > n
  > EOF
234
  diff --git a/f b/f
235 236 237
  2 hunks, 2 lines changed
  examine changes to 'f'? [Ynesfdaq?] y
  
238 239
  @@ -1,6 +1,5 @@
  -a
240 241 242 243 244 245 246
   1
   2
   3
   4
   5
  record change 1/2 to 'f'? [Ynesfdaq?] y
  
247
  @@ -2,6 +1,5 @@
248 249 250 251 252
   1
   2
   3
   4
   5
253
  -b
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273
  record change 2/2 to 'f'? [Ynesfdaq?] n
  
  $ hg st
  M f
  M folder1/g
  R folder1/i
  ? f.orig
  $ cat f
  a
  1
  2
  3
  4
  5
  $ cat f.orig
  1
  2
  3
  4
  5
274 275 276 277 278 279 280 281 282 283 284 285
  $ rm f.orig
  $ hg update -C .
  3 files updated, 0 files merged, 0 files removed, 0 files unresolved

Check editing files newly added by a revert

1) Create a dummy editor changing 1 to 42
  $ cat > $TESTTMP/editor.sh << '__EOF__'
  > cat "$1"  | sed "s/1/42/g"  > tt
  > mv tt  "$1"
  > __EOF__

286 287 288
2) Add k
  $ printf "1\n" > k
  $ hg add k
289 290
  $ hg commit -m "add k"

291 292 293
3) Use interactive revert with editing (replacing +1 with +42):
  $ printf "0\n2\n" > k
  $ HGEDITOR="\"sh\" \"${TESTTMP}/editor.sh\"" hg revert -i  <<EOF
294 295 296
  > y
  > e
  > EOF
297 298 299 300
  reverting k
  diff --git a/k b/k
  1 hunks, 2 lines changed
  examine changes to 'k'? [Ynesfdaq?] y
301
  
302 303 304 305
  @@ -1,1 +1,2 @@
  -1
  +0
  +2
306
  record this change to 'k'? [Ynesfdaq?] e
307
  
308
  $ cat k
309
  42
310 311 312 313

Check the experimental config to invert the selection:
  $ cat <<EOF >> $HGRCPATH
  > [experimental]
314
  > revertalternateinteractivemode=False
315 316 317 318 319 320 321
  > EOF


  $ hg up -C .
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ printf 'firstline\nc\n1\n2\n3\n 3\n5\nd\nlastline\n' > folder1/g
  $ hg diff --nodates
322
  diff -r a3d963a027aa folder1/g
323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346
  --- a/folder1/g
  +++ b/folder1/g
  @@ -1,7 +1,9 @@
  +firstline
   c
   1
   2
   3
  -4
  + 3
   5
   d
  +lastline
  $ hg revert -i <<EOF
  > y
  > y
  > y
  > n
  > EOF
  reverting folder1/g (glob)
  diff --git a/folder1/g b/folder1/g
  3 hunks, 3 lines changed
  examine changes to 'folder1/g'? [Ynesfdaq?] y
  
347 348
  @@ -1,5 +1,4 @@
  -firstline
349 350 351 352 353 354
   c
   1
   2
   3
  record change 1/3 to 'folder1/g'? [Ynesfdaq?] y
  
355
  @@ -2,7 +1,7 @@
356 357 358 359
   c
   1
   2
   3
360 361
  - 3
  +4
362 363 364 365
   5
   d
  record change 2/3 to 'folder1/g'? [Ynesfdaq?] y
  
366
  @@ -7,3 +6,2 @@
367 368
   5
   d
369
  -lastline
370 371 372
  record change 3/3 to 'folder1/g'? [Ynesfdaq?] n
  
  $ hg diff --nodates
373
  diff -r a3d963a027aa folder1/g
374 375 376 377 378 379 380
  --- a/folder1/g
  +++ b/folder1/g
  @@ -5,3 +5,4 @@
   4
   5
   d
  +lastline
381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403

  $ hg update -C .
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg purge
  $ touch newfile
  $ hg add newfile
  $ hg status
  A newfile
  $ hg revert -i <<EOF
  > n
  > EOF
  forgetting newfile
  forget added file newfile (yn)? n
  $ hg status
  A newfile
  $ hg revert -i <<EOF
  > y
  > EOF
  forgetting newfile
  forget added file newfile (yn)? y
  $ hg status
  ? newfile