Source

mutable-history / tests / test-draft.t

The default branch has multiple heads

Full commit
  $ cat >> $HGRCPATH <<EOF
  > [web]
  > push_ssl = false
  > allow_push = *
  > [extensions]
  > EOF
  $ echo "states=$(echo $(dirname $TESTDIR))/hgext/states.py" >> $HGRCPATH

  $ hg init local
  $ hg init remote1
  $ hg init remote2
  $ cd local
  $ echo "celestine" > babar
  $ hg add babar
  $ hg ci -m "add babar"
  $ echo "la veille dame" > babar
  $ hg ci -m "add dame"
  $ hg log --template='{rev}:{node|short}: {state}\n'
  1:710fe444b3b0: published
  0:5caa672bac26: published
  $ hg out  ../remote1 --template='{rev}:{node|short}\n'
  comparing with ../remote1
  searching for changes
  0:5caa672bac26
  1:710fe444b3b0
  $ hg push ../remote1
  pushing to ../remote1
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 2 changesets with 2 changes to 1 files
  $ echo "tree" >> savanna
  $ hg add savanna
  $ hg ci -m "terrain"
  $ echo "flore" >> babar
  $ hg ci -m "children"
  $ hg log --template='{rev}:{node|short}: {state}\n'
  3:73585b17392a: published
  2:3c8695235a32: published
  1:710fe444b3b0: published
  0:5caa672bac26: published

turn draft on (repo side)
  $ hg states draft
  $ hg log --template='{rev}:{node|short}: {state}\n'
  3:73585b17392a: draft
  2:3c8695235a32: draft
  1:710fe444b3b0: published
  0:5caa672bac26: published
  $ hg log --template='{rev}:{node|short}: {state}\n' -r 'draftheads()'
  3:73585b17392a: draft


test outgoing and push
  $ hg out  ../remote1 --template='{rev}:{node|short}\n'
  comparing with ../remote1
  searching for changes
  no changes found
  [1]
  $ hg push --traceback  ../remote1
  pushing to ../remote1
  searching for changes
  no changes found

  $ hg out  ../remote2 --template='{rev}:{node|short}\n'
  comparing with ../remote2
  searching for changes
  0:5caa672bac26
  1:710fe444b3b0
  $ hg push  ../remote2
  pushing to ../remote2
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 2 changesets with 2 changes to 1 files

turn draft off again (repo side)
  $ hg states --off draft
  abort: draft could not be disabled: not empty
  (You may want to use `hg published 'draftheads()'`)
  [255]
  $ hg published tip
  $ hg log --template='{rev}:{node|short}: {state}\n'
  3:73585b17392a: published
  2:3c8695235a32: published
  1:710fe444b3b0: published
  0:5caa672bac26: published
  $ hg out  ../remote1 --template='{rev}:{node|short}\n'
  comparing with ../remote1
  searching for changes
  2:3c8695235a32
  3:73585b17392a

turn draft on again (repo side)
  $ hg states draft
  $ hg draft --exact 2

test incoming and pull

  $ hg init ../other1
  $ cd ../other1
  $ hg incoming ../local --template='{rev}:{node|short}\n'
  comparing with ../local
  0:5caa672bac26
  1:710fe444b3b0
  $ hg pull ../local
  pulling from ../local
  requesting all changes
  adding changesets
  adding manifests
  adding file changes
  added 2 changesets with 2 changes to 1 files
  (run 'hg update' to get a working copy)
  $ hg log --template='{rev}:{node|short}\n'
  1:710fe444b3b0
  0:5caa672bac26
  $ cd ..
  $ hg clone local other2
  requesting all changes
  adding changesets
  adding manifests
  adding file changes
  added 2 changesets with 2 changes to 1 files
  updating to branch default
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg -R other2 log --template='{rev}:{node|short}\n'
  1:710fe444b3b0
  0:5caa672bac26

test on http

  $ hg -R local serve -p $HGPORT -d --pid-file=local.pid
  $ cat local.pid >> "$DAEMON_PIDS"
  $ hg clone http://localhost:$HGPORT/ fromhttp
  requesting all changes
  adding changesets
  adding manifests
  adding file changes
  added 2 changesets with 2 changes to 1 files
  updating to branch default
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg -R fromhttp log --template='{rev}:{node|short}\n'
  1:710fe444b3b0
  0:5caa672bac26

  $ hg init fromhttp2
  $ cd fromhttp2
  $ hg inc http://localhost:$HGPORT/ --template='{rev}:{node|short}\n'
  comparing with http://localhost:$HGPORT/
  0:5caa672bac26
  1:710fe444b3b0
  $ hg pull http://localhost:$HGPORT/
  pulling from http://localhost:$HGPORT/
  requesting all changes
  adding changesets
  adding manifests
  adding file changes
  added 2 changesets with 2 changes to 1 files
  (run 'hg update' to get a working copy)
  $ hg log --template='{rev}:{node|short}\n'
  1:710fe444b3b0
  0:5caa672bac26
  $ hg inc http://localhost:$HGPORT/ --template='{rev}:{node|short}\n'
  comparing with http://localhost:$HGPORT/
  searching for changes
  no changes found
  [1]

turn draft off again (repo side)
  $ cd ..
  $ "$TESTDIR/killdaemons.py"
  $ hg -R local states --off draft
  abort: draft could not be disabled: not empty
  (You may want to use `hg published 'draftheads()'`)
  [255]
  $ hg -R local published tip
  $ hg -R local states --off draft
  $ hg -R local serve -p $HGPORT -d --pid-file=local.pid
  $ cat local.pid >> "$DAEMON_PIDS"
  $ cd fromhttp2

  $ hg inc http://localhost:$HGPORT/ --template='{rev}:{node|short}\n'
  comparing with http://localhost:$HGPORT/
  searching for changes
  2:3c8695235a32
  3:73585b17392a
  $ hg pull http://localhost:$HGPORT/
  pulling from http://localhost:$HGPORT/
  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)
  $ cd ..
  $ "$TESTDIR/killdaemons.py"

turn draft on again (repo side)
  $ hg -R local states draft
  $ hg init httpto
  $ hg -R httpto serve -p $HGPORT -d --pid-file=remote.pid
  $ cat remote.pid >> "$DAEMON_PIDS"
  $ cd local
  $ hg out http://localhost:$HGPORT/  --template='{rev}:{node|short}\n'
  comparing with http://localhost:$HGPORT/
  searching for changes
  0:5caa672bac26
  1:710fe444b3b0
  2:3c8695235a32
  3:73585b17392a
  $ hg push http://localhost:$HGPORT/
  pushing to http://localhost:$HGPORT/
  searching for changes
  remote: adding changesets
  remote: adding manifests
  remote: adding file changes
  remote: added 4 changesets with 4 changes to 2 files
  $ "$TESTDIR/killdaemons.py"