tests/test-phases-exchange.t
author Pierre-Yves David <pierre-yves.david@logilab.fr>
Thu, 15 Dec 2011 11:45:01 +0100
changeset 15651 e69a3cdad37e
parent 15650 5b26667fc4d3
child 15659 7fba5a245acc
permissions -rw-r--r--
phases: exchange phase boundaries on push For now phase sync is tried even if push fails with some know pathological case. The exact behavior is to be discussed and implemented later.

  $ cat >> $HGRCPATH <<EOF
  > [extensions]
  > graphlog=
  > EOF
  $ alias hgph='hg log --template "{rev} {phase} {desc} - {node|short}\n"'

  $ mkcommit() {
  >    echo "$1" > "$1"
  >    hg add "$1"
  >    hg ci -m "$1"
  > }

  $ hg init alpha
  $ cd alpha
  $ mkcommit a-A
  $ mkcommit a-B
  $ mkcommit a-C
  $ mkcommit a-D
  $ hgph
  3 1 a-D - b555f63b6063
  2 1 a-C - 54acac6f23ab
  1 1 a-B - 548a3d25dbf0
  0 1 a-A - 054250a37db4

  $ hg init ../beta
  $ hg push -r 1 ../beta
  pushing to ../beta
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 2 changesets with 2 changes to 2 files
  $ hgph
  3 1 a-D - b555f63b6063
  2 1 a-C - 54acac6f23ab
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4

  $ cd ../beta
  $ hgph
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4
  $ hg up -q
  $ mkcommit b-A
  $ hgph
  2 1 b-A - f54f1bb90ff3
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4
  $ hg pull ../alpha
  pulling from ../alpha
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 2 changesets with 2 changes to 2 files (+1 heads)
  (run 'hg heads' to see heads, 'hg merge' to merge)
  $ hgph
  4 0 a-D - b555f63b6063
  3 0 a-C - 54acac6f23ab
  2 1 b-A - f54f1bb90ff3
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4

pull did not updated ../alpha state.
push from alpha to beta should update phase even if nothing is transfered

  $ cd ../alpha
  $ hgph # not updated by remote pull
  3 1 a-D - b555f63b6063
  2 1 a-C - 54acac6f23ab
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4
  $ hg push ../beta
  pushing to ../beta
  searching for changes
  no changes found
  $ hgph
  3 0 a-D - b555f63b6063
  2 0 a-C - 54acac6f23ab
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4

update must update phase of common changeset too

  $ hg pull ../beta # getting b-A
  pulling from ../beta
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 1 changes to 1 files (+1 heads)
  (run 'hg heads' to see heads, 'hg merge' to merge)

  $ cd ../beta
  $ hgph # not updated by remote pull
  4 0 a-D - b555f63b6063
  3 0 a-C - 54acac6f23ab
  2 1 b-A - f54f1bb90ff3
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4
  $ hg pull ../alpha
  pulling from ../alpha
  searching for changes
  no changes found
  $ hgph
  4 0 a-D - b555f63b6063
  3 0 a-C - 54acac6f23ab
  2 0 b-A - f54f1bb90ff3
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4

Publish configuration option
----------------------------

Pull
````

changegroup are added without phase movement

  $ hg bundle -a ../base.bundle
  5 changesets found
  $ cd ..
  $ hg init mu
  $ cd mu
  $ cat > .hg/hgrc << EOF
  > [phases]
  > publish=0
  > EOF
  $ hg unbundle ../base.bundle
  adding changesets
  adding manifests
  adding file changes
  added 5 changesets with 5 changes to 5 files (+1 heads)
  (run 'hg heads' to see heads, 'hg merge' to merge)
  $ hgph
  4 1 a-D - b555f63b6063
  3 1 a-C - 54acac6f23ab
  2 1 b-A - f54f1bb90ff3
  1 1 a-B - 548a3d25dbf0
  0 1 a-A - 054250a37db4
  $ cd ..

Pulling from publish=False to publish=False does not move boundary.

  $ hg init nu
  $ cd nu
  $ cat > .hg/hgrc << EOF
  > [phases]
  > publish=0
  > EOF
  $ hg pull ../mu -r 54acac6f23ab
  pulling from ../mu
  adding changesets
  adding manifests
  adding file changes
  added 3 changesets with 3 changes to 3 files
  (run 'hg update' to get a working copy)
  $ hgph
  2 1 a-C - 54acac6f23ab
  1 1 a-B - 548a3d25dbf0
  0 1 a-A - 054250a37db4

Even for common

  $ hg pull ../mu -r f54f1bb90ff3
  pulling from ../mu
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 1 changes to 1 files (+1 heads)
  (run 'hg heads' to see heads, 'hg merge' to merge)
  $ hgph
  3 1 b-A - f54f1bb90ff3
  2 1 a-C - 54acac6f23ab
  1 1 a-B - 548a3d25dbf0
  0 1 a-A - 054250a37db4


Pulling from Publish=True to Publish=False move boundary in common set.
we are in nu

  $ hg pull ../alpha -r b555f63b6063
  pulling from ../alpha
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 1 changes to 1 files
  (run 'hg update' to get a working copy)
  $ hgph
  4 0 a-D - b555f63b6063
  3 0 b-A - f54f1bb90ff3
  2 0 a-C - 54acac6f23ab
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4

pulling from Publish=False to publish=False with some public

  $ hg up -q f54f1bb90ff3
  $ mkcommit n-A
  $ mkcommit n-B
  $ hgph
  6 1 n-B - 145e75495359
  5 1 n-A - d6bcb4f74035
  4 0 a-D - b555f63b6063
  3 0 b-A - f54f1bb90ff3
  2 0 a-C - 54acac6f23ab
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4
  $ cd ../mu
  $ hg pull ../nu
  pulling from ../nu
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 2 changesets with 2 changes to 2 files
  (run 'hg update' to get a working copy)
  $ hgph
  6 1 n-B - 145e75495359
  5 1 n-A - d6bcb4f74035
  4 0 a-D - b555f63b6063
  3 0 a-C - 54acac6f23ab
  2 0 b-A - f54f1bb90ff3
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4
  $ cd ..

pulling into publish=True

  $ cd alpha
  $ hgph
  4 0 b-A - f54f1bb90ff3
  3 0 a-D - b555f63b6063
  2 0 a-C - 54acac6f23ab
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4
  $ hg pull ../mu
  pulling from ../mu
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 2 changesets with 2 changes to 2 files
  (run 'hg update' to get a working copy)
  $ hgph
  6 0 n-B - 145e75495359
  5 0 n-A - d6bcb4f74035
  4 0 b-A - f54f1bb90ff3
  3 0 a-D - b555f63b6063
  2 0 a-C - 54acac6f23ab
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4
  $ cd ..

pulling back into original repo

  $ cd nu
  $ hg pull ../alpha
  pulling from ../alpha
  searching for changes
  no changes found
  $ hgph
  6 0 n-B - 145e75495359
  5 0 n-A - d6bcb4f74035
  4 0 a-D - b555f63b6063
  3 0 b-A - f54f1bb90ff3
  2 0 a-C - 54acac6f23ab
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4
  $ cd ..

Push
````

initial setup

  $ cd alpha
  $ hg glog
  o  changeset:   6:145e75495359
  |  tag:         tip
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     n-B
  |
  o  changeset:   5:d6bcb4f74035
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     n-A
  |
  o  changeset:   4:f54f1bb90ff3
  |  parent:      1:548a3d25dbf0
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     b-A
  |
  | @  changeset:   3:b555f63b6063
  | |  user:        test
  | |  date:        Thu Jan 01 00:00:00 1970 +0000
  | |  summary:     a-D
  | |
  | o  changeset:   2:54acac6f23ab
  |/   user:        test
  |    date:        Thu Jan 01 00:00:00 1970 +0000
  |    summary:     a-C
  |
  o  changeset:   1:548a3d25dbf0
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     a-B
  |
  o  changeset:   0:054250a37db4
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     a-A
  
  $ mkcommit a-E
  $ mkcommit a-F
  $ mkcommit a-G
  $ hg up d6bcb4f74035 -q
  $ mkcommit a-H
  created new head
  $ hgph
  10 1 a-H - 967b449fbc94
  9 1 a-G - 3e27b6f1eee1
  8 1 a-F - b740e3e5c05d
  7 1 a-E - e9f537e46dea
  6 0 n-B - 145e75495359
  5 0 n-A - d6bcb4f74035
  4 0 b-A - f54f1bb90ff3
  3 0 a-D - b555f63b6063
  2 0 a-C - 54acac6f23ab
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4

Pushing to Publish=False (unknown changeset)

  $ hg push ../mu -r b740e3e5c05d # a-F
  pushing to ../mu
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 2 changesets with 2 changes to 2 files
  $ hgph
  10 1 a-H - 967b449fbc94
  9 1 a-G - 3e27b6f1eee1
  8 1 a-F - b740e3e5c05d
  7 1 a-E - e9f537e46dea
  6 0 n-B - 145e75495359
  5 0 n-A - d6bcb4f74035
  4 0 b-A - f54f1bb90ff3
  3 0 a-D - b555f63b6063
  2 0 a-C - 54acac6f23ab
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4

  $ cd ../mu
  $ hgph # d6bcb4f74035 and 145e75495359 changed because common is too smart
  8 1 a-F - b740e3e5c05d
  7 1 a-E - e9f537e46dea
  6 0 n-B - 145e75495359
  5 0 n-A - d6bcb4f74035
  4 0 a-D - b555f63b6063
  3 0 a-C - 54acac6f23ab
  2 0 b-A - f54f1bb90ff3
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4

Pushing to Publish=True (unknown changeset)

  $ hg push ../beta -r b740e3e5c05d
  pushing to ../beta
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 2 changesets with 2 changes to 2 files
  $ hgph # again d6bcb4f74035 and 145e75495359 changed because common is too smart
  8 0 a-F - b740e3e5c05d
  7 0 a-E - e9f537e46dea
  6 0 n-B - 145e75495359
  5 0 n-A - d6bcb4f74035
  4 0 a-D - b555f63b6063
  3 0 a-C - 54acac6f23ab
  2 0 b-A - f54f1bb90ff3
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4

Pushing to Publish=True (common changeset)

  $ cd ../beta
  $ hg push ../alpha
  pushing to ../alpha
  searching for changes
  no changes found
  $ hgph
  6 0 a-F - b740e3e5c05d
  5 0 a-E - e9f537e46dea
  4 0 a-D - b555f63b6063
  3 0 a-C - 54acac6f23ab
  2 0 b-A - f54f1bb90ff3
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4
  $ cd ../alpha
  $ hgph # e9f537e46dea and b740e3e5c05d should have been sync to 0
  10 1 a-H - 967b449fbc94
  9 1 a-G - 3e27b6f1eee1
  8 0 a-F - b740e3e5c05d
  7 0 a-E - e9f537e46dea
  6 0 n-B - 145e75495359
  5 0 n-A - d6bcb4f74035
  4 0 b-A - f54f1bb90ff3
  3 0 a-D - b555f63b6063
  2 0 a-C - 54acac6f23ab
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4

Pushing to Publish=False (common changeset that change phase + unknown one)

  $ hg push ../mu -r 967b449fbc94 -f
  pushing to ../mu
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 1 changes to 1 files (+1 heads)
  $ hgph
  10 1 a-H - 967b449fbc94
  9 1 a-G - 3e27b6f1eee1
  8 0 a-F - b740e3e5c05d
  7 0 a-E - e9f537e46dea
  6 0 n-B - 145e75495359
  5 0 n-A - d6bcb4f74035
  4 0 b-A - f54f1bb90ff3
  3 0 a-D - b555f63b6063
  2 0 a-C - 54acac6f23ab
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4
  $ cd ../mu
  $ hgph # d6bcb4f74035 should have changed phase
  >      # again d6bcb4f74035 and 145e75495359 changed because common was too smart
  9 1 a-H - 967b449fbc94
  8 0 a-F - b740e3e5c05d
  7 0 a-E - e9f537e46dea
  6 0 n-B - 145e75495359
  5 0 n-A - d6bcb4f74035
  4 0 a-D - b555f63b6063
  3 0 a-C - 54acac6f23ab
  2 0 b-A - f54f1bb90ff3
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4


Pushing to Publish=True (common changeset from publish=False)

  $ hg push ../alpha
  pushing to ../alpha
  searching for changes
  no changes found
  $ hgph
  9 0 a-H - 967b449fbc94
  8 0 a-F - b740e3e5c05d
  7 0 a-E - e9f537e46dea
  6 0 n-B - 145e75495359
  5 0 n-A - d6bcb4f74035
  4 0 a-D - b555f63b6063
  3 0 a-C - 54acac6f23ab
  2 0 b-A - f54f1bb90ff3
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4
  $ hgph -R ../alpha # a-H should have been synced to 0
  10 0 a-H - 967b449fbc94
  9 1 a-G - 3e27b6f1eee1
  8 0 a-F - b740e3e5c05d
  7 0 a-E - e9f537e46dea
  6 0 n-B - 145e75495359
  5 0 n-A - d6bcb4f74035
  4 0 b-A - f54f1bb90ff3
  3 0 a-D - b555f63b6063
  2 0 a-C - 54acac6f23ab
  1 0 a-B - 548a3d25dbf0
  0 0 a-A - 054250a37db4