view tests/test-strip-cross.t @ 20275:2123d27ff75d

backout: avoid update on simple case. Before the changeset the backout process was: 1) go to <target> 2) revert to <target> parent 3) update back to changeset we came from The two update steps can takes a very long time to move back and forth unrelated file change between <target> and current working directory. The new process is just merging current working directory with the parent of <target> using <target> as ancestor. This give the very same result but skip the two updates. On big repo with a lot of files and changes that save a lots of time (x20 for one week window). The "merge" version (hg backout --merge) is still done with upgrades. We could imagine using in memory commit to speed it up but this is another fish.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Wed, 08 Jan 2014 14:53:46 -0800
parents aa9385f983fa
children 009d0283de5f
line wrap: on
line source

test stripping of filelogs where the linkrev doesn't always increase

  $ echo '[extensions]' >> $HGRCPATH
  $ echo 'strip =' >> $HGRCPATH
  $ hg init orig
  $ cd orig
  $ commit()
  > {
  >     hg up -qC null
  >     count=1
  >     for i in "$@"; do
  >         for f in $i; do
  >             echo $count > $f
  >         done
  >         count=`expr $count + 1`
  >     done
  >     hg commit -qAm "$*"
  > }

2 1 0 2 0 1 2

  $ commit '201 210'
  $ commit '102 120' '210'
  $ commit '021'
  $ commit '201' '021 120'
  $ commit '012 021' '102 201' '120 210'
  $ commit 'manifest-file'
  $ commit '102 120' '012 210' '021 201'
  $ commit '201 210' '021 120' '012 102'
  $ HGUSER=another-user; export HGUSER
  $ commit 'manifest-file'
  $ commit '012' 'manifest-file'
  $ cd ..
  $ hg clone -q -U -r -1 -r -2 -r -3 -r -4 -r -6 orig crossed
  $ cd crossed
  $ hg debugindex --manifest
     rev    offset  length  ..... linkrev nodeid       p1           p2 (re)
       0         0     112  .....       0 6f105cbb914d 000000000000 000000000000 (re)
       1       112      56  .....       3 1b55917b3699 000000000000 000000000000 (re)
       2       168     123  .....       1 8f3d04e263e5 000000000000 000000000000 (re)
       3       291     122  .....       2 f0ef8726ac4f 000000000000 000000000000 (re)
       4       413      87  .....       4 0b76e38b4070 000000000000 000000000000 (re)

  $ for i in 012 021 102 120 201 210 manifest-file; do
  >     echo $i
  >     hg debugindex $i
  >     echo
  > done
  012
     rev    offset  length  ..... linkrev nodeid       p1           p2 (re)
       0         0       3  .....       0 b8e02f643373 000000000000 000000000000 (re)
       1         3       3  .....       1 5d9299349fc0 000000000000 000000000000 (re)
       2         6       3  .....       2 2661d26c6496 000000000000 000000000000 (re)
  
  021
     rev    offset  length  ..... linkrev nodeid       p1           p2 (re)
       0         0       3  .....       0 b8e02f643373 000000000000 000000000000 (re)
       1         3       3  .....       2 5d9299349fc0 000000000000 000000000000 (re)
       2         6       3  .....       1 2661d26c6496 000000000000 000000000000 (re)
  
  102
     rev    offset  length  ..... linkrev nodeid       p1           p2 (re)
       0         0       3  .....       1 b8e02f643373 000000000000 000000000000 (re)
       1         3       3  .....       0 5d9299349fc0 000000000000 000000000000 (re)
       2         6       3  .....       2 2661d26c6496 000000000000 000000000000 (re)
  
  120
     rev    offset  length  ..... linkrev nodeid       p1           p2 (re)
       0         0       3  .....       1 b8e02f643373 000000000000 000000000000 (re)
       1         3       3  .....       2 5d9299349fc0 000000000000 000000000000 (re)
       2         6       3  .....       0 2661d26c6496 000000000000 000000000000 (re)
  
  201
     rev    offset  length  ..... linkrev nodeid       p1           p2 (re)
       0         0       3  .....       2 b8e02f643373 000000000000 000000000000 (re)
       1         3       3  .....       0 5d9299349fc0 000000000000 000000000000 (re)
       2         6       3  .....       1 2661d26c6496 000000000000 000000000000 (re)
  
  210
     rev    offset  length  ..... linkrev nodeid       p1           p2 (re)
       0         0       3  .....       2 b8e02f643373 000000000000 000000000000 (re)
       1         3       3  .....       1 5d9299349fc0 000000000000 000000000000 (re)
       2         6       3  .....       0 2661d26c6496 000000000000 000000000000 (re)
  
  manifest-file
     rev    offset  length  ..... linkrev nodeid       p1           p2 (re)
       0         0       3  .....       3 b8e02f643373 000000000000 000000000000 (re)
       1         3       3  .....       4 5d9299349fc0 000000000000 000000000000 (re)
  
  $ cd ..
  $ for i in 0 1 2 3 4; do
  >     hg clone -q -U --pull crossed $i
  >     echo "% Trying to strip revision $i"
  >     hg --cwd $i strip $i
  >     echo "% Verifying"
  >     hg --cwd $i verify
  >     echo
  > done
  % Trying to strip revision 0
  saved backup bundle to $TESTTMP/0/.hg/strip-backup/*-backup.hg (glob)
  % Verifying
  checking changesets
  checking manifests
  crosschecking files in changesets and manifests
  checking files
  7 files, 4 changesets, 15 total revisions
  
  % Trying to strip revision 1
  saved backup bundle to $TESTTMP/1/.hg/strip-backup/*-backup.hg (glob)
  % Verifying
  checking changesets
  checking manifests
  crosschecking files in changesets and manifests
  checking files
  7 files, 4 changesets, 14 total revisions
  
  % Trying to strip revision 2
  saved backup bundle to $TESTTMP/2/.hg/strip-backup/*-backup.hg (glob)
  % Verifying
  checking changesets
  checking manifests
  crosschecking files in changesets and manifests
  checking files
  7 files, 4 changesets, 14 total revisions
  
  % Trying to strip revision 3
  saved backup bundle to $TESTTMP/3/.hg/strip-backup/*-backup.hg (glob)
  % Verifying
  checking changesets
  checking manifests
  crosschecking files in changesets and manifests
  checking files
  7 files, 4 changesets, 19 total revisions
  
  % Trying to strip revision 4
  saved backup bundle to $TESTTMP/4/.hg/strip-backup/*-backup.hg (glob)
  % Verifying
  checking changesets
  checking manifests
  crosschecking files in changesets and manifests
  checking files
  7 files, 4 changesets, 19 total revisions