test-revert-interactive.t 6.02 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
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 =
  > EOF


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

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

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


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

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

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

Check the experimental config to invert the selection:
  $ cat <<EOF >> $HGRCPATH
  > [experimental]
313
  > revertalternateinteractivemode=False
314 315 316 317 318 319 320
  > 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
321
  diff -r a3d963a027aa folder1/g
322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345
  --- 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
  
346 347
  @@ -1,5 +1,4 @@
  -firstline
348 349 350 351 352 353
   c
   1
   2
   3
  record change 1/3 to 'folder1/g'? [Ynesfdaq?] y
  
354
  @@ -2,7 +1,7 @@
355 356 357 358
   c
   1
   2
   3
359 360
  - 3
  +4
361 362 363 364
   5
   d
  record change 2/3 to 'folder1/g'? [Ynesfdaq?] y
  
365
  @@ -7,3 +6,2 @@
366 367
   5
   d
368
  -lastline
369 370 371
  record change 3/3 to 'folder1/g'? [Ynesfdaq?] n
  
  $ hg diff --nodates
372
  diff -r a3d963a027aa folder1/g
373 374 375 376 377 378 379
  --- a/folder1/g
  +++ b/folder1/g
  @@ -5,3 +5,4 @@
   4
   5
   d
  +lastline