tests/test-simple-update.t
author Pierre-Yves David <pierre-yves.david@octobus.net>
Wed, 21 Feb 2024 10:41:09 +0100
changeset 51409 2f39c7aeb549
parent 49825 2f2682f40ea0
child 52060 8b7123c8947b
permissions -rw-r--r--
phases: large rewrite on retract boundary The new code is still pure Python, so we still have room to going significantly faster. However its complexity of the complex part is `O(|[min_new_draft, tip]|)` instead of `O(|[min_draft, tip]|` which should help tremendously one repository with old draft (like mercurial-devel or mozilla-try). This is especially useful as the most common "retract boundary" operation happens when we commit/rewrite new drafts or when we push new draft to a non-publishing server. In this case, the smallest new_revs is very close to the tip and there is very few work to do. A few smaller optimisation could be done for these cases and will be introduced in later changesets. We still have iterate over large sets of roots, but this is already a great improvement for a very small amount of work. We gather information on the affected changeset as we go as we can put it to use in the next changesets. This extra data collection might slowdown the `register_new` case a bit, however for register_new, it should not really matters. The set of new nodes is either small, so the impact is negligible, or the set of new nodes is large, and the amount of work to do to had them will dominate the overhead the collecting information in `changed_revs`. As this new code compute the changes on the fly, it unlock other interesting improvement to be done in later changeset.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13956
ffb5c09ba822 tests: remove redundant mkdir
Martin Geisler <mg@lazybytes.net>
parents: 12365
diff changeset
     1
  $ hg init test
12279
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
     2
  $ cd test
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
     3
  $ echo foo>foo
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
     4
  $ hg addremove
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
     5
  adding foo
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
     6
  $ hg commit -m "1"
331
55f63f3b6a54 Add a simple testing framework
mpm@selenic.com
parents:
diff changeset
     7
49825
2f2682f40ea0 tests: use the `--quiet` flag for verify when applicable
Raphaël Gomès <rgomes@octobus.net>
parents: 45827
diff changeset
     8
  $ hg verify -q
12279
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
     9
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    10
  $ hg clone . ../branch
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    11
  updating to branch default
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    12
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    13
  $ cd ../branch
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    14
  $ hg co
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    15
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    16
  $ echo bar>>foo
45456
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    17
  $ hg commit -m "2" -d '1 0'
331
55f63f3b6a54 Add a simple testing framework
mpm@selenic.com
parents:
diff changeset
    18
12279
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    19
  $ cd ../test
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    20
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    21
  $ hg pull ../branch
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    22
  pulling from ../branch
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    23
  searching for changes
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    24
  adding changesets
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    25
  adding manifests
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    26
  adding file changes
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    27
  added 1 changesets with 1 changes to 1 files
45456
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    28
  new changesets 84b9316f7b31
38250
d0abd7949ea3 phases: use "published" in the phase movement message
Boris Feld <boris.feld@octobus.net>
parents: 38249
diff changeset
    29
  1 local changesets published
12279
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    30
  (run 'hg update' to get a working copy)
331
55f63f3b6a54 Add a simple testing framework
mpm@selenic.com
parents:
diff changeset
    31
49825
2f2682f40ea0 tests: use the `--quiet` flag for verify when applicable
Raphaël Gomès <rgomes@octobus.net>
parents: 45827
diff changeset
    32
  $ hg verify -q
12279
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    33
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    34
  $ hg co
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    35
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    36
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    37
  $ cat foo
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    38
  foo
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    39
  bar
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    40
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    41
  $ hg manifest --debug
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    42
  6f4310b00b9a147241b071a60c28a650827fb03d 644   foo
28e2e3804f2e combine tests
Adrian Buehlmann <adrian@cadifra.com>
parents: 3736
diff changeset
    43
13960
190e5f2043d9 update: fix check for no rev when a date is given
Idan Kamara <idankk86@gmail.com>
parents: 13956
diff changeset
    44
update to rev 0 with a date
190e5f2043d9 update: fix check for no rev when a date is given
Idan Kamara <idankk86@gmail.com>
parents: 13956
diff changeset
    45
190e5f2043d9 update: fix check for no rev when a date is given
Idan Kamara <idankk86@gmail.com>
parents: 13956
diff changeset
    46
  $ hg upd -d foo 0
190e5f2043d9 update: fix check for no rev when a date is given
Idan Kamara <idankk86@gmail.com>
parents: 13956
diff changeset
    47
  abort: you can't specify a revision and a date
45827
8d72e29ad1e0 errors: introduce InputError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45456
diff changeset
    48
  [10]
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 13960
diff changeset
    49
45456
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    50
update by date
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    51
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    52
  $ hg update -d '<1970-01-01 00:00:02 +0000'
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    53
  found revision 1 from Thu Jan 01 00:00:01 1970 +0000
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    54
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    55
  $ hg update -d '<1970-01-01 00:00:01 +0000'
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    56
  found revision 1 from Thu Jan 01 00:00:01 1970 +0000
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    57
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    58
  $ hg update -d '<1970-01-01 00:00:00 +0000'
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    59
  found revision 0 from Thu Jan 01 00:00:00 1970 +0000
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    60
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    61
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    62
  $ hg update -d '>1970-01-01 00:00:02 +0000'
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    63
  abort: revision matching date not found
45827
8d72e29ad1e0 errors: introduce InputError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 45456
diff changeset
    64
  [10]
45456
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    65
  $ hg update -d '>1970-01-01 00:00:01 +0000'
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    66
  found revision 1 from Thu Jan 01 00:00:01 1970 +0000
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    67
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    68
  $ hg update -d '>1970-01-01 00:00:00 +0000'
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    69
  found revision 1 from Thu Jan 01 00:00:01 1970 +0000
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    70
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    71
41020
fbd5e2f0bba7 update: do not pass in user revspec as default destination (issue6044)
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    72
update to default destination (with empty revspec)
fbd5e2f0bba7 update: do not pass in user revspec as default destination (issue6044)
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    73
fbd5e2f0bba7 update: do not pass in user revspec as default destination (issue6044)
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    74
  $ hg update -q null
fbd5e2f0bba7 update: do not pass in user revspec as default destination (issue6044)
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    75
  $ hg update
fbd5e2f0bba7 update: do not pass in user revspec as default destination (issue6044)
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    76
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
fbd5e2f0bba7 update: do not pass in user revspec as default destination (issue6044)
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    77
  $ hg id
45456
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    78
  84b9316f7b31 tip
41020
fbd5e2f0bba7 update: do not pass in user revspec as default destination (issue6044)
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    79
fbd5e2f0bba7 update: do not pass in user revspec as default destination (issue6044)
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    80
  $ hg update -q null
fbd5e2f0bba7 update: do not pass in user revspec as default destination (issue6044)
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    81
  $ hg update -r ''
fbd5e2f0bba7 update: do not pass in user revspec as default destination (issue6044)
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    82
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
fbd5e2f0bba7 update: do not pass in user revspec as default destination (issue6044)
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    83
  $ hg id
45456
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    84
  84b9316f7b31 tip
41020
fbd5e2f0bba7 update: do not pass in user revspec as default destination (issue6044)
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    85
fbd5e2f0bba7 update: do not pass in user revspec as default destination (issue6044)
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    86
  $ hg update -q null
fbd5e2f0bba7 update: do not pass in user revspec as default destination (issue6044)
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    87
  $ hg update ''
fbd5e2f0bba7 update: do not pass in user revspec as default destination (issue6044)
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    88
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
fbd5e2f0bba7 update: do not pass in user revspec as default destination (issue6044)
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    89
  $ hg id
45456
65960fe9a769 test-simple-update: add test for -d DATE option
Yuya Nishihara <yuya@tcha.org>
parents: 42522
diff changeset
    90
  84b9316f7b31 tip
41020
fbd5e2f0bba7 update: do not pass in user revspec as default destination (issue6044)
Yuya Nishihara <yuya@tcha.org>
parents: 39707
diff changeset
    91
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 13960
diff changeset
    92
  $ cd ..
31117
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
    93
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
    94
update with worker processes
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
    95
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
    96
#if no-windows
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
    97
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
    98
  $ cat <<EOF > forceworker.py
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
    99
  > from mercurial import extensions, worker
38731
ef3838a47503 worker: ability to disable thread unsafe tasks
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38250
diff changeset
   100
  > def nocost(orig, ui, costperop, nops, threadsafe=True):
31117
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   101
  >     return worker._numworkers(ui) > 1
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   102
  > def uisetup(ui):
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   103
  >     extensions.wrapfunction(worker, 'worthwhile', nocost)
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   104
  > EOF
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   105
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   106
  $ hg init worker
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   107
  $ cd worker
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   108
  $ cat <<EOF >> .hg/hgrc
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   109
  > [extensions]
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   110
  > forceworker = $TESTTMP/forceworker.py
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   111
  > [worker]
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   112
  > numcpus = 4
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   113
  > EOF
39707
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 39489
diff changeset
   114
  $ for i in `"$PYTHON" $TESTDIR/seq.py 1 100`; do
31117
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   115
  >   echo $i > $i
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   116
  > done
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   117
  $ hg ci -qAm 'add 100 files'
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   118
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   119
  $ hg update null
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   120
  0 files updated, 0 files merged, 100 files removed, 0 files unresolved
31118
a91c62752d08 worker: flush messages written by child processes before exit
Yuya Nishihara <yuya@tcha.org>
parents: 31117
diff changeset
   121
  $ hg update -v | grep 100
a91c62752d08 worker: flush messages written by child processes before exit
Yuya Nishihara <yuya@tcha.org>
parents: 31117
diff changeset
   122
  getting 100
31117
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   123
  100 files updated, 0 files merged, 0 files removed, 0 files unresolved
42521
64a873ca7135 tests: show bug in update introduced in 87a34c767384
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents: 41020
diff changeset
   124
  $ hg status
31117
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   125
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   126
  $ cd ..
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   127
92bca12328d1 worker: add basic test to ensure child processes are managed well
Yuya Nishihara <yuya@tcha.org>
parents: 16913
diff changeset
   128
#endif