view tests/test-simple-update.t @ 48693:de3ac3d2c60b

stream-clone: allow to change persistent-nodemap format during stream clone Persistent nodemap affect the store format. However it is fairly isolated and fast to generate locally. So not making it a fixed part of the stream clone is useful. This allow clients without persistent-nodemap support (default for client without Rust enabled, or simply older client). So it make it possible to enable persistent nodemap on client, where it can provide a massive boost. without too much consequence. To do so, we stop using it in the advertisement requirements for streaming and let the client add/remove the necessary file depending of its configuration. We still send the files as it seems like a small save to not regenerate them. In addition, the way we match them will overlap with the changelog-v2/revlog-v2 so we can't simply skip the associated patterns. Differential Revision: https://phab.mercurial-scm.org/D12096
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Thu, 27 Jan 2022 22:24:11 +0100
parents 8d72e29ad1e0
children 2f2682f40ea0
line wrap: on
line source

  $ hg init test
  $ cd test
  $ echo foo>foo
  $ hg addremove
  adding foo
  $ hg commit -m "1"

  $ hg verify
  checking changesets
  checking manifests
  crosschecking files in changesets and manifests
  checking files
  checked 1 changesets with 1 changes to 1 files

  $ hg clone . ../branch
  updating to branch default
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ cd ../branch
  $ hg co
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ echo bar>>foo
  $ hg commit -m "2" -d '1 0'

  $ cd ../test

  $ hg pull ../branch
  pulling from ../branch
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 1 changes to 1 files
  new changesets 84b9316f7b31
  1 local changesets published
  (run 'hg update' to get a working copy)

  $ hg verify
  checking changesets
  checking manifests
  crosschecking files in changesets and manifests
  checking files
  checked 2 changesets with 2 changes to 1 files

  $ hg co
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved

  $ cat foo
  foo
  bar

  $ hg manifest --debug
  6f4310b00b9a147241b071a60c28a650827fb03d 644   foo

update to rev 0 with a date

  $ hg upd -d foo 0
  abort: you can't specify a revision and a date
  [10]

update by date

  $ hg update -d '<1970-01-01 00:00:02 +0000'
  found revision 1 from Thu Jan 01 00:00:01 1970 +0000
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg update -d '<1970-01-01 00:00:01 +0000'
  found revision 1 from Thu Jan 01 00:00:01 1970 +0000
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg update -d '<1970-01-01 00:00:00 +0000'
  found revision 0 from Thu Jan 01 00:00:00 1970 +0000
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved

  $ hg update -d '>1970-01-01 00:00:02 +0000'
  abort: revision matching date not found
  [10]
  $ hg update -d '>1970-01-01 00:00:01 +0000'
  found revision 1 from Thu Jan 01 00:00:01 1970 +0000
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg update -d '>1970-01-01 00:00:00 +0000'
  found revision 1 from Thu Jan 01 00:00:01 1970 +0000
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved

update to default destination (with empty revspec)

  $ hg update -q null
  $ hg update
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg id
  84b9316f7b31 tip

  $ hg update -q null
  $ hg update -r ''
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg id
  84b9316f7b31 tip

  $ hg update -q null
  $ hg update ''
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg id
  84b9316f7b31 tip

  $ cd ..

update with worker processes

#if no-windows

  $ cat <<EOF > forceworker.py
  > from mercurial import extensions, worker
  > def nocost(orig, ui, costperop, nops, threadsafe=True):
  >     return worker._numworkers(ui) > 1
  > def uisetup(ui):
  >     extensions.wrapfunction(worker, 'worthwhile', nocost)
  > EOF

  $ hg init worker
  $ cd worker
  $ cat <<EOF >> .hg/hgrc
  > [extensions]
  > forceworker = $TESTTMP/forceworker.py
  > [worker]
  > numcpus = 4
  > EOF
  $ for i in `"$PYTHON" $TESTDIR/seq.py 1 100`; do
  >   echo $i > $i
  > done
  $ hg ci -qAm 'add 100 files'

  $ hg update null
  0 files updated, 0 files merged, 100 files removed, 0 files unresolved
  $ hg update -v | grep 100
  getting 100
  100 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg status

  $ cd ..

#endif