tests/test-merge-remove.t
author Simon Sapin <simon.sapin@octobus.net>
Fri, 07 Jan 2022 14:40:21 +0100
changeset 48575 e91aa800ae5b
parent 48013 87b3010c08e0
child 49585 55c6ebd11cb9
permissions -rw-r--r--
rhg: desambiguate status without decompressing filelog if possible When status is unsure based on `stat()` and the dirstate if a file is clean or modified, we need to compare it against the filelog. This comparison can skip looking at contents if the lengths differ. This changeset optimize this further to deduce what we can about the length if the filelog without decompressing it or resolving deltas. Differential Revision: https://phab.mercurial-scm.org/D11965
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12260
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
     1
  $ hg init
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
     2
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
     3
  $ echo foo > foo
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
     4
  $ echo bar > bar
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
     5
  $ hg ci -qAm 'add foo bar'
6297
fed1a9c22076 dirstate.remove: during merges, remember the previous file state
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     6
12260
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
     7
  $ echo foo2 >> foo
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
     8
  $ echo bleh > bar
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
     9
  $ hg ci -m 'change foo bar'
6297
fed1a9c22076 dirstate.remove: during merges, remember the previous file state
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    10
12260
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    11
  $ hg up -qC 0
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    12
  $ hg mv foo foo1
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    13
  $ echo foo1 > foo1
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    14
  $ hg cat foo >> foo1
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    15
  $ hg ci -m 'mv foo foo1'
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    16
  created new head
6297
fed1a9c22076 dirstate.remove: during merges, remember the previous file state
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    17
12260
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    18
  $ hg merge
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    19
  merging foo1 and foo to foo1
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    20
  1 files updated, 1 files merged, 0 files removed, 0 files unresolved
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    21
  (branch merge, don't forget to commit)
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    22
39776
7e99b02768ef debugdirstate: deprecate --nodates in favor of --no-dates
Martin von Zweigbergk <martinvonz@google.com>
parents: 39432
diff changeset
    23
  $ hg debugstate --no-dates
23840
ddc17eaf0f1b debugdirstate: don't hide date field with --nodate, just show 'set'/'unset'
Mads Kiilerich <madski@unity3d.com>
parents: 22897
diff changeset
    24
  m   0         -2 unset               bar
ddc17eaf0f1b debugdirstate: don't hide date field with --nodate, just show 'set'/'unset'
Mads Kiilerich <madski@unity3d.com>
parents: 22897
diff changeset
    25
  m   0         -2 unset               foo1
12260
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    26
  copy: foo -> foo1
6297
fed1a9c22076 dirstate.remove: during merges, remember the previous file state
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    27
12260
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    28
  $ hg st -q
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    29
  M bar
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    30
  M foo1
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    31
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    32
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    33
Removing foo1 and bar:
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    34
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    35
  $ cp foo1 F
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    36
  $ cp bar B
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    37
  $ hg rm -f foo1 bar
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    38
39776
7e99b02768ef debugdirstate: deprecate --nodates in favor of --no-dates
Martin von Zweigbergk <martinvonz@google.com>
parents: 39432
diff changeset
    39
  $ hg debugstate --no-dates
23840
ddc17eaf0f1b debugdirstate: don't hide date field with --nodate, just show 'set'/'unset'
Mads Kiilerich <madski@unity3d.com>
parents: 22897
diff changeset
    40
  r   0         -1 set                 bar
ddc17eaf0f1b debugdirstate: don't hide date field with --nodate, just show 'set'/'unset'
Mads Kiilerich <madski@unity3d.com>
parents: 22897
diff changeset
    41
  r   0         -1 set                 foo1
12260
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    42
  copy: foo -> foo1
6297
fed1a9c22076 dirstate.remove: during merges, remember the previous file state
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    43
12260
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    44
  $ hg st -qC
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    45
  R bar
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    46
  R foo1
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    47
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    48
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    49
Re-adding foo1 and bar:
6297
fed1a9c22076 dirstate.remove: during merges, remember the previous file state
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    50
12260
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    51
  $ cp F foo1
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    52
  $ cp B bar
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    53
  $ hg add -v foo1 bar
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    54
  adding bar
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    55
  adding foo1
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    56
39776
7e99b02768ef debugdirstate: deprecate --nodates in favor of --no-dates
Martin von Zweigbergk <martinvonz@google.com>
parents: 39432
diff changeset
    57
  $ hg debugstate --no-dates
48013
87b3010c08e0 dirstate: fix restoration of "merged" state after a remove
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46486
diff changeset
    58
  m   0         -2 unset               bar
87b3010c08e0 dirstate: fix restoration of "merged" state after a remove
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46486
diff changeset
    59
  m   0         -2 unset               foo1
12260
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    60
  copy: foo -> foo1
6298
53cbb33e1269 normallookup: during merges, restore the state saved by remove
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6297
diff changeset
    61
12260
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    62
  $ hg st -qC
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    63
  M bar
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    64
  M foo1
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    65
    foo
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    66
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    67
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    68
Reverting foo1 and bar:
6299
653ddd1d7cd7 revert: update state of files in the "checkout" list
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6298
diff changeset
    69
12260
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    70
  $ hg revert -vr . foo1 bar
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    71
  saving current version of bar as bar.orig
39432
cb70501d8b71 revert: fix the inconsistency of status msgs in --interactive mode
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 39312
diff changeset
    72
  saving current version of foo1 as foo1.orig
12260
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    73
  reverting bar
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    74
  reverting foo1
6299
653ddd1d7cd7 revert: update state of files in the "checkout" list
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6298
diff changeset
    75
39776
7e99b02768ef debugdirstate: deprecate --nodates in favor of --no-dates
Martin von Zweigbergk <martinvonz@google.com>
parents: 39432
diff changeset
    76
  $ hg debugstate --no-dates
48013
87b3010c08e0 dirstate: fix restoration of "merged" state after a remove
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46486
diff changeset
    77
  m   0         -2 unset               bar
87b3010c08e0 dirstate: fix restoration of "merged" state after a remove
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46486
diff changeset
    78
  m   0         -2 unset               foo1
12260
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    79
  copy: foo -> foo1
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    80
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    81
  $ hg st -qC
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    82
  M bar
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    83
  M foo1
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    84
    foo
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    85
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    86
  $ hg diff
0a63e91c519d tests: unify test-merge-remove
Adrian Buehlmann <adrian@cadifra.com>
parents: 6299
diff changeset
    87
20415
e4d7cbc94219 merge: don't overwrite file untracked after remove, abort with 'untracked files'
Mads Kiilerich <madski@unity3d.com>
parents: 12260
diff changeset
    88
Merge should not overwrite local file that is untracked after remove
e4d7cbc94219 merge: don't overwrite file untracked after remove, abort with 'untracked files'
Mads Kiilerich <madski@unity3d.com>
parents: 12260
diff changeset
    89
e4d7cbc94219 merge: don't overwrite file untracked after remove, abort with 'untracked files'
Mads Kiilerich <madski@unity3d.com>
parents: 12260
diff changeset
    90
  $ rm *
e4d7cbc94219 merge: don't overwrite file untracked after remove, abort with 'untracked files'
Mads Kiilerich <madski@unity3d.com>
parents: 12260
diff changeset
    91
  $ hg up -qC
e4d7cbc94219 merge: don't overwrite file untracked after remove, abort with 'untracked files'
Mads Kiilerich <madski@unity3d.com>
parents: 12260
diff changeset
    92
  $ hg rm bar
e4d7cbc94219 merge: don't overwrite file untracked after remove, abort with 'untracked files'
Mads Kiilerich <madski@unity3d.com>
parents: 12260
diff changeset
    93
  $ hg ci -m 'remove bar'
e4d7cbc94219 merge: don't overwrite file untracked after remove, abort with 'untracked files'
Mads Kiilerich <madski@unity3d.com>
parents: 12260
diff changeset
    94
  $ echo 'memories of buried pirate treasure' > bar
e4d7cbc94219 merge: don't overwrite file untracked after remove, abort with 'untracked files'
Mads Kiilerich <madski@unity3d.com>
parents: 12260
diff changeset
    95
  $ hg merge
e4d7cbc94219 merge: don't overwrite file untracked after remove, abort with 'untracked files'
Mads Kiilerich <madski@unity3d.com>
parents: 12260
diff changeset
    96
  bar: untracked file differs
e4d7cbc94219 merge: don't overwrite file untracked after remove, abort with 'untracked files'
Mads Kiilerich <madski@unity3d.com>
parents: 12260
diff changeset
    97
  abort: untracked files in working directory differ from files in requested revision
46486
dc00324e80f4 errors: use StateError more in merge module
Martin von Zweigbergk <martinvonz@google.com>
parents: 42565
diff changeset
    98
  [20]
20415
e4d7cbc94219 merge: don't overwrite file untracked after remove, abort with 'untracked files'
Mads Kiilerich <madski@unity3d.com>
parents: 12260
diff changeset
    99
  $ cat bar
e4d7cbc94219 merge: don't overwrite file untracked after remove, abort with 'untracked files'
Mads Kiilerich <madski@unity3d.com>
parents: 12260
diff changeset
   100
  memories of buried pirate treasure
e4d7cbc94219 merge: don't overwrite file untracked after remove, abort with 'untracked files'
Mads Kiilerich <madski@unity3d.com>
parents: 12260
diff changeset
   101
e4d7cbc94219 merge: don't overwrite file untracked after remove, abort with 'untracked files'
Mads Kiilerich <madski@unity3d.com>
parents: 12260
diff changeset
   102
Those who use force will lose
e4d7cbc94219 merge: don't overwrite file untracked after remove, abort with 'untracked files'
Mads Kiilerich <madski@unity3d.com>
parents: 12260
diff changeset
   103
e4d7cbc94219 merge: don't overwrite file untracked after remove, abort with 'untracked files'
Mads Kiilerich <madski@unity3d.com>
parents: 12260
diff changeset
   104
  $ hg merge -f
39312
a3fd84f4fb38 filemerge: fix the wrong placements of messages in prompt
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39311
diff changeset
   105
  file 'bar' was deleted in local [working copy] but was modified in other [merge rev].
42565
4764e8436b2a filemerge: make last line of prompts <40 english chars (issue6158)
Kyle Lippincott <spectral@google.com>
parents: 39776
diff changeset
   106
  You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
4764e8436b2a filemerge: make last line of prompts <40 english chars (issue6158)
Kyle Lippincott <spectral@google.com>
parents: 39776
diff changeset
   107
  What do you want to do? u
20415
e4d7cbc94219 merge: don't overwrite file untracked after remove, abort with 'untracked files'
Mads Kiilerich <madski@unity3d.com>
parents: 12260
diff changeset
   108
  merging foo1 and foo to foo1
27599
ad5966de3c9a filemerge: default change/delete conflicts to 'leave unresolved' (BC)
Siddharth Agarwal <sid0@fb.com>
parents: 27163
diff changeset
   109
  0 files updated, 1 files merged, 0 files removed, 1 files unresolved
35704
41ef02ba329b merge: add `--abort` flag which can abort the merge
Pulkit Goyal <7895pulkit@gmail.com>
parents: 30062
diff changeset
   110
  use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
27599
ad5966de3c9a filemerge: default change/delete conflicts to 'leave unresolved' (BC)
Siddharth Agarwal <sid0@fb.com>
parents: 27163
diff changeset
   111
  [1]
20415
e4d7cbc94219 merge: don't overwrite file untracked after remove, abort with 'untracked files'
Mads Kiilerich <madski@unity3d.com>
parents: 12260
diff changeset
   112
  $ cat bar
e4d7cbc94219 merge: don't overwrite file untracked after remove, abort with 'untracked files'
Mads Kiilerich <madski@unity3d.com>
parents: 12260
diff changeset
   113
  bleh
e4d7cbc94219 merge: don't overwrite file untracked after remove, abort with 'untracked files'
Mads Kiilerich <madski@unity3d.com>
parents: 12260
diff changeset
   114
  $ hg st
e4d7cbc94219 merge: don't overwrite file untracked after remove, abort with 'untracked files'
Mads Kiilerich <madski@unity3d.com>
parents: 12260
diff changeset
   115
  M bar
e4d7cbc94219 merge: don't overwrite file untracked after remove, abort with 'untracked files'
Mads Kiilerich <madski@unity3d.com>
parents: 12260
diff changeset
   116
  M foo1