Initial setup
$ . $TESTDIR/_exc-util.sh
==== A.1.1 pushing a single head ====
..
.. {{{
.. ⇠◔ A
.. |
.. ● O
.. }}}
..
.. Marker exist from:
..
.. * A
..
.. Command run:
..
.. * hg push -r A
.. * hg push
..
.. Expected exchange:
..
.. * chain from A
Setup
---------------
initial
$ mkdir A.1.1
$ cd A.1.1
$ hg init source
$ hg init dest
$ hg init other
$ cd source
$ mkcommit O
$ hg phase --public .
$ hg push -q ../dest
$ hg push -q ../other
$ mkcommit A
$ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `getid 'desc(A)'`
$ hg log -G
@ f5bc6836db60 (draft): A
|
o a9bdc8b26820 (public): O
$ hg debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ cd ..
$ cd ..
setup both variants
$ cp -r A.1.1 A.1.1.a
$ cp -r A.1.1 A.1.1.b
Variante a: push -r A
---------------------
$ cd A.1.1.a
$ hg -R source id -r 'desc(A)'
f5bc6836db60 tip
$ hg -R source debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ hg -R dest debugobsolete
$ hg -R other debugobsolete
$ hg -R source push -r 'desc(A)' dest
pushing to dest
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
OBSEXC: computing relevant nodes
OBSEXC: computing markers relevant to 2 nodes
OBSEXC: encoding 1 markers
OBSEXC: sending 1 pushkey payload (78 bytes)
OBSEXC: DONE
$ hg -R source debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ hg -R dest debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ hg -R other debugobsolete
$ hg -R other pull -r 'f5bc6836db60' dest
pulling from dest
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
OBSEXC: pull obsolescence markers
OBSEXC: merging obsolescence markers (62 bytes)
OBSEXC: 1 markers added
OBSEXC: DONE
(run 'hg update' to get a working copy)
$ hg -R source debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ hg -R dest debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ hg -R other debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ cd ..
Variante b: push
---------------------
$ cd A.1.1.b
$ hg -R source id -r 'desc(A)'
f5bc6836db60 tip
$ hg -R source debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ hg -R dest debugobsolete
$ hg -R other debugobsolete
$ hg -R source push dest
pushing to dest
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
OBSEXC: computing relevant nodes
OBSEXC: computing markers relevant to 2 nodes
OBSEXC: encoding 1 markers
OBSEXC: sending 1 pushkey payload (78 bytes)
OBSEXC: DONE
$ hg -R source debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ hg -R dest debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ hg -R other debugobsolete
$ hg -R other pull dest
pulling from dest
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
OBSEXC: pull obsolescence markers
OBSEXC: merging obsolescence markers (62 bytes)
OBSEXC: 1 markers added
OBSEXC: DONE
(run 'hg update' to get a working copy)
$ hg -R source debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ hg -R dest debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ hg -R other debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ cd ..
==== A.1.2 pushing a multiple changeset into a single head ====
.. {{{
.. ◔ B
.. |
.. ⇠◔ A
.. |
.. ● O
.. }}}
..
.. Marker exist from:
..
.. * A
..
.. Command run:
..
.. * hg push -r B
.. * hg push
..
.. Expected exchange:
..
.. * chain from A
Setup
---------------
initial
$ mkdir A.1.2
$ cd A.1.2
$ hg init source
$ hg init dest
$ hg init other
$ cd source
$ mkcommit O
$ hg phase --public .
$ hg push -q ../dest
$ hg push -q ../other
$ mkcommit A
$ mkcommit B
$ hg log -G
@ f6fbb35d8ac9 (draft): B
|
o f5bc6836db60 (draft): A
|
o a9bdc8b26820 (public): O
$ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `getid 'desc(A)'`
$ hg debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ cd ..
$ cd ..
setup both variants
$ cp -r A.1.2 A.1.2.a
$ cp -r A.1.2 A.1.2.b
Variante a: push -r A
---------------------
$ cd A.1.2.a
$ hg -R source id -r 'desc(B)'
f6fbb35d8ac9 tip
$ hg -R source debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ hg -R dest debugobsolete
$ hg -R other debugobsolete
$ hg -R source push -r 'desc(B)' dest
pushing to dest
searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 2 files
OBSEXC: computing relevant nodes
OBSEXC: computing markers relevant to 3 nodes
OBSEXC: encoding 1 markers
OBSEXC: sending 1 pushkey payload (78 bytes)
OBSEXC: DONE
$ hg -R source debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ hg -R dest debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ hg -R other debugobsolete
$ hg -R other pull -r 'f6fbb35d8ac9' dest
pulling from dest
searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 2 files
OBSEXC: pull obsolescence markers
OBSEXC: merging obsolescence markers (62 bytes)
OBSEXC: 1 markers added
OBSEXC: DONE
(run 'hg update' to get a working copy)
$ hg -R source debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ hg -R dest debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ hg -R other debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ cd ..
Variante b: push
---------------------
$ cd A.1.2.b
$ hg -R source id -r 'desc(B)'
f6fbb35d8ac9 tip
$ hg -R source debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ hg -R dest debugobsolete
$ hg -R other debugobsolete
$ hg -R source push dest
pushing to dest
searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 2 files
OBSEXC: computing relevant nodes
OBSEXC: computing markers relevant to 3 nodes
OBSEXC: encoding 1 markers
OBSEXC: sending 1 pushkey payload (78 bytes)
OBSEXC: DONE
$ hg -R source debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ hg -R dest debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ hg -R other debugobsolete
$ hg -R other pull dest
pulling from dest
searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 2 files
OBSEXC: pull obsolescence markers
OBSEXC: merging obsolescence markers (62 bytes)
OBSEXC: 1 markers added
OBSEXC: DONE
(run 'hg update' to get a working copy)
$ hg -R source debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ hg -R dest debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ hg -R other debugobsolete
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {'date': '', 'user': 'test'}
$ cd ..