# HG changeset patch # User Pierre-Yves David # Date 1492686345 -7200 # Node ID 080b9384d7419f98943de377084e5abc33e0bcad # Parent dad84c052463e5cf57d8a74655c9ee514e76be7b# Parent 1b6d4d176145d043bc953d6644e15ab2b640531e merge back with stable diff -r dad84c052463 -r 080b9384d741 .hgtags --- a/.hgtags Sat Apr 01 12:45:18 2017 +0200 +++ b/.hgtags Thu Apr 20 13:05:45 2017 +0200 @@ -47,3 +47,4 @@ e7b6e9c4a5d4317f56c2862910c569723b6ea71b 5.6.0 70694b2621ba9d919bc38303f8901e84caf5da0f 5.6.1 165ad227993de4e7d819cc6c820d5b9f7b38b80d 6.0.0 +5ef112a6eb875633a7925cde61b7d2d9e65b3a56 6.0.1 diff -r dad84c052463 -r 080b9384d741 Makefile --- a/Makefile Sat Apr 01 12:45:18 2017 +0200 +++ b/Makefile Thu Apr 20 13:05:45 2017 +0200 @@ -2,10 +2,6 @@ PYTHON=python -help: - @echo 'Commonly used make targets:' - @echo ' deb-prepare - prepare the build of a debian package' - all: help deb-prepare: @@ -27,6 +23,7 @@ help: @echo 'Commonly used make targets:' + @echo ' deb-prepare - prepare the build of a debian package' @echo ' tests - run all tests in the automatic test suite' @echo ' all-version-tests - run all tests against many hg versions' @echo ' tests-%s - run all tests in the specified hg version' @@ -34,9 +31,9 @@ all: help _check_hgroot: - ifeq ($(HGROOT),) - $(error HGROOT is not set to the root of the hg source tree) - endif +ifeq ($(HGROOT),) + $(error HGROOT is not set to the root of the hg source tree) +endif tests: _check_hgroot cd tests && $(PYTHON) $(HGTESTS)/run-tests.py $(TESTFLAGS) diff -r dad84c052463 -r 080b9384d741 README --- a/README Sat Apr 01 12:45:18 2017 +0200 +++ b/README Thu Apr 20 13:05:45 2017 +0200 @@ -112,7 +112,16 @@ Changelog ========= -6.0.0 -- 2017-02-31 + +6.0.1 -- 2017-04-20 +------------------- + + - template: adapt to change in 4.2, + - fix 'debugrecordpruneparents' (outdated API usage) + - checkheads: give priority to updated 4.2 code, + - serveronly: fix repository initialization. + +6.0.0 -- 2017-03-31 ------------------- - push: improved detection of obsoleted remote branch (issue4354), diff -r dad84c052463 -r 080b9384d741 debian/changelog --- a/debian/changelog Sat Apr 01 12:45:18 2017 +0200 +++ b/debian/changelog Thu Apr 20 13:05:45 2017 +0200 @@ -1,10 +1,14 @@ -mercurial-evolve (6.0.0-1) UNRELEASED; urgency=medium +mercurial-evolve (6.0.1-1) UNRELEASED; urgency=medium + + * New upstream version + + -- Pierre-Yves David Thu, 20 Apr 2017 12:58:35 +0200 + +mercurial-evolve (6.0.0-1) unstable; urgency=medium * New Upstream Release - * new upstream version - * new upstream release - -- Pierre-Yves David Fri, 31 Mar 2017 15:50:12 +0200 + -- Pierre-Yves David Thu, 20 Apr 2017 12:58:03 +0200 mercurial-evolve (5.5.0-1) unstable; urgency=medium diff -r dad84c052463 -r 080b9384d741 hgext3rd/evolve/__init__.py --- a/hgext3rd/evolve/__init__.py Sat Apr 01 12:45:18 2017 +0200 +++ b/hgext3rd/evolve/__init__.py Thu Apr 20 13:05:45 2017 +0200 @@ -113,7 +113,6 @@ from . import ( checkheads, debugcmd, - obsdiscovery, obsexchange, exthelper, metadata, @@ -146,7 +145,6 @@ eh = exthelper.exthelper() eh.merge(debugcmd.eh) -eh.merge(obsdiscovery.eh) eh.merge(obsexchange.eh) eh.merge(checkheads.eh) uisetup = eh.final_uisetup @@ -432,11 +430,17 @@ return '' @eh.templatekw('troubles') -def showtroubles(repo, ctx, **args): +def showtroubles(**args): """:troubles: List of strings. Evolution troubles affecting the changeset (zero or more of "unstable", "divergent" or "bumped").""" - return templatekw.showlist('trouble', ctx.troubles(), plural='troubles', - **args) + ctx = args['ctx'] + try: + # specify plural= explicitly to trigger TypeError on hg < 4.2 + return templatekw.showlist('trouble', ctx.troubles(), args, + plural='troubles') + except TypeError: + return templatekw.showlist('trouble', ctx.troubles(), plural='troubles', + **args) ##################################################################### ### Various trouble warning ### diff -r dad84c052463 -r 080b9384d741 hgext3rd/evolve/checkheads.py --- a/hgext3rd/evolve/checkheads.py Sat Apr 01 12:45:18 2017 +0200 +++ b/hgext3rd/evolve/checkheads.py Thu Apr 20 13:05:45 2017 +0200 @@ -30,10 +30,8 @@ @eh.uisetup def setupcheckheadswrapper(ui): - if util.safehasattr(discovery, '_postprocessobsolete'): - extensions.wrapfunction(discovery, '_postprocessobsolete', - checkheadslightoverlay) - else: + if not util.safehasattr(discovery, '_postprocessobsolete'): + # hg-4.2+ has all the code natively extensions.wrapfunction(discovery, 'checkheads', checkheadsfulloverlay) @@ -44,9 +42,6 @@ else: return orig(pushop) -def checkheadslightoverlay(orig, *args, **kwargs): - return _postprocessobsolete(*args, **kwargs) - # copied from mercurial.discovery.checkheads as in a5bad127128d (4.1) # # The only differences are: diff -r dad84c052463 -r 080b9384d741 hgext3rd/evolve/legacy.py --- a/hgext3rd/evolve/legacy.py Sat Apr 01 12:45:18 2017 +0200 +++ b/hgext3rd/evolve/legacy.py Thu Apr 20 13:05:45 2017 +0200 @@ -192,8 +192,8 @@ ctx = unfi[rev] parents = tuple(p.node() for p in ctx.parents()) before = len(store._all) - store.create(tr, mark[0], mark[1], mark[2], mark[3], - parents=parents) + store.create(tr, prec=mark[0], succs=mark[1], flag=mark[2], + metadata=dict(mark[3]), parents=parents) if len(store._all) - before: ui.write(_('created new markers for %i\n') % rev) ui.progress(pgop, idx, total=pgtotal) diff -r dad84c052463 -r 080b9384d741 hgext3rd/evolve/metadata.py --- a/hgext3rd/evolve/metadata.py Sat Apr 01 12:45:18 2017 +0200 +++ b/hgext3rd/evolve/metadata.py Thu Apr 20 13:05:45 2017 +0200 @@ -5,7 +5,7 @@ # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. -__version__ = '6.0.0' +__version__ = '6.0.1' testedwith = '3.8.4 3.9.2 4.0.2 4.1.1' minimumhgversion = '3.8' buglink = 'https://bz.mercurial-scm.org/' diff -r dad84c052463 -r 080b9384d741 hgext3rd/evolve/obsexchange.py --- a/hgext3rd/evolve/obsexchange.py Sat Apr 01 12:45:18 2017 +0200 +++ b/hgext3rd/evolve/obsexchange.py Thu Apr 20 13:05:45 2017 +0200 @@ -39,6 +39,7 @@ ) eh = exthelper.exthelper() +eh.merge(obsdiscovery.eh) obsexcmsg = utility.obsexcmsg obsexcprg = utility.obsexcprg diff -r dad84c052463 -r 080b9384d741 hgext3rd/evolve/serveronly.py --- a/hgext3rd/evolve/serveronly.py Sat Apr 01 12:45:18 2017 +0200 +++ b/hgext3rd/evolve/serveronly.py Thu Apr 20 13:05:45 2017 +0200 @@ -17,7 +17,6 @@ from . import ( exthelper, metadata, - obsdiscovery, obsexchange, ) except ValueError as exc: @@ -28,7 +27,6 @@ from evolve import ( exthelper, metadata, - obsdiscovery, obsexchange, ) @@ -38,7 +36,6 @@ buglink = metadata.buglink eh = exthelper.exthelper() -eh.merge(obsdiscovery.eh) eh.merge(obsexchange.eh) uisetup = eh.final_uisetup extsetup = eh.final_extsetup @@ -46,7 +43,7 @@ cmdtable = eh.cmdtable @eh.reposetup -def reposetup(ui, repo): +def default2evolution(ui, repo): evolveopts = ui.configlist('experimental', 'evolution') if not evolveopts: evolveopts = 'all' diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-partial-C1.t --- a/tests/test-checkheads-partial-C1.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -==================================== -Testing head checking code: Case C-1 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category C: checking case were the branch is only partially obsoleted. -TestCase 1: 2 changeset branch, only the head is rewritten - -.. old-state: -.. -.. * 2 changeset branch -.. -.. new-state: -.. -.. * 1 new changesets branches superceeding only the head of the old one -.. * base of the old branch is still alive -.. -.. expected-result: -.. -.. * push denied -.. -.. graph-summary: -.. -.. B ø⇠◔ B' -.. | | -.. A ○ | -.. |/ -.. ○ - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd server - $ mkcommit B0 - $ cd ../client - $ hg pull - pulling from $TESTTMP/server - 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) - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit B1 - created new head - $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"` - $ hg log -G --hidden - @ 25c56d33e4c4 (draft): B1 - | - | x d73caddc5533 (draft): B0 - | | - | o 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - - -Actual testing --------------- - - $ hg push - pushing to $TESTTMP/server - searching for changes - abort: push creates new remote head 25c56d33e4c4! - (merge or see 'hg help push' for details about pushing new heads) - [255] diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-partial-C2.t --- a/tests/test-checkheads-partial-C2.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -==================================== -Testing head checking code: Case C-2 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category C: checking case were the branch is only partially obsoleted. -TestCase 2: 2 changeset branch, only the base is rewritten - -.. old-state: -.. -.. * 2 changeset branch -.. -.. new-state: -.. -.. * 1 new changesets branches superceeding only the base of the old one -.. * The old branch is still alive (base is obsolete, head is alive) -.. -.. expected-result: -.. -.. * push denied -.. -.. graph-summary: -.. -.. B ○ -.. | -.. A ø⇠◔ A' -.. |/ -.. ○ - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd server - $ mkcommit B0 - $ cd ../client - $ hg pull - pulling from $TESTTMP/server - 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) - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit A1 - created new head - $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` - $ hg log -G --hidden - @ f6082bc4ffef (draft): A1 - | - | o d73caddc5533 (draft): B0 - | | - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - - -Actual testing --------------- - - $ hg push --rev 'desc(A1)' - pushing to $TESTTMP/server - searching for changes - abort: push creates new remote head f6082bc4ffef! - (merge or see 'hg help push' for details about pushing new heads) - [255] diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-partial-C3.t --- a/tests/test-checkheads-partial-C3.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -==================================== -Testing head checking code: Case C-3 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category C: checking case were the branch is only partially obsoleted. -TestCase 3: 2 changeset branch, only the head is pruned - -.. old-state: -.. -.. * 2 changeset branch -.. -.. new-state: -.. -.. * old head is pruned -.. * 1 new unrelated branch -.. -.. expected-result: -.. -.. * push denied -.. -.. graph-summary: -.. -.. B ⊗ -.. | -.. A ◔ ◔ C -.. |/ -.. ○ - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd server - $ mkcommit B0 - $ cd ../client - $ hg pull - pulling from $TESTTMP/server - 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) - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit C0 - created new head - $ hg debugobsolete --record-parents `getid "desc(B0)"` - $ hg log -G --hidden - @ 0f88766e02d6 (draft): C0 - | - | x d73caddc5533 (draft): B0 - | | - | o 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - -Actual testing --------------- - - $ hg push - pushing to $TESTTMP/server - searching for changes - abort: push creates new remote head 0f88766e02d6! - (merge or see 'hg help push' for details about pushing new heads) - [255] diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-partial-C4.t --- a/tests/test-checkheads-partial-C4.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -==================================== -Testing head checking code: Case C-4 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category C: checking case were the branch is only partially obsoleted. -TestCase 4: 2 changeset branch, only the base is pruned - -.. old-state: -.. -.. * 2 changeset branch -.. -.. new-state: -.. -.. * old base is pruned -.. * 1 new unrelated branch -.. -.. expected-result: -.. -.. * push denied -.. -.. graph-summary: -.. -.. B ◔ -.. | -.. A ⊗ ◔ C -.. |/ -.. ○ - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd server - $ mkcommit B0 - $ cd ../client - $ hg pull - pulling from $TESTTMP/server - 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) - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit C0 - created new head - $ hg debugobsolete --record-parents `getid "desc(A0)"` - $ hg log -G --hidden - @ 0f88766e02d6 (draft): C0 - | - | o d73caddc5533 (draft): B0 - | | - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - -Actual testing --------------- - - $ hg push --rev 'desc(C0)' - pushing to $TESTTMP/server - searching for changes - abort: push creates new remote head 0f88766e02d6! - (merge or see 'hg help push' for details about pushing new heads) - [255] diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-pruned-B1.t --- a/tests/test-checkheads-pruned-B1.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -==================================== -Testing head checking code: Case B-1 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category B: checking simple case involving pruned changesets -TestCase 1: single pruned changeset - -.. old-state: -.. -.. * 1 changeset branch -.. -.. new-state: -.. -.. * old branch is pruned -.. * 1 new unrelated branch -.. -.. expected-result: -.. -.. * push allowed -.. -.. graph-summary: -.. -.. ◔ B -.. | -.. A ⊗ | -.. |/ -.. ○ - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd client - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit B0 - created new head - $ hg debugobsolete --record-parents `getid "desc(A0)"` - $ hg log -G --hidden - @ 74ff5441d343 (draft): B0 - | - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - -Actual testing --------------- - - $ hg push - pushing to $TESTTMP/server - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files (+1 heads) - 1 new obsolescence markers - - - diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-pruned-B2.t --- a/tests/test-checkheads-pruned-B2.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ -==================================== -Testing head checking code: Case B-2 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category B: checking simple case involving pruned changesets -TestCase 2: multi-changeset branch, head is pruned, rest is superceeded - -.. old-state: -.. -.. * 2 changeset branch -.. -.. new-state: -.. -.. * old head is pruned -.. * 1 new branch succeeding to the other changeset in the old branch -.. -.. expected-result: -.. -.. * push allowed -.. -.. graph-summary: -.. -.. B ⊗ -.. | -.. A ø⇠◔ A' -.. |/ -.. ○ - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd server - $ mkcommit B0 - $ cd ../client - $ hg pull - pulling from $TESTTMP/server - 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) - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit A1 - created new head - $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` - $ hg debugobsolete --record-parents `getid "desc(B0)"` - $ hg log -G --hidden - @ f6082bc4ffef (draft): A1 - | - | x d73caddc5533 (draft): B0 - | | - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - -Actual testing --------------- - - $ hg push - pushing to $TESTTMP/server - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files (+1 heads) - 2 new obsolescence markers - diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-pruned-B3.t --- a/tests/test-checkheads-pruned-B3.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ -==================================== -Testing head checking code: Case B-3 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category B: checking simple case involving pruned changesets -TestCase 3: multi-changeset branch, other is pruned, rest is superceeded - -.. old-state: -.. -.. * 2 changeset branch -.. -.. new-state: -.. -.. * old head is superceeded -.. * old other is pruned -.. -.. expected-result: -.. -.. * push allowed -.. -.. graph-summary: -.. -.. B ø⇠◔ B' -.. | | -.. A ⊗ | -.. |/ -.. ○ - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd server - $ mkcommit B0 - $ cd ../client - $ hg pull - pulling from $TESTTMP/server - 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) - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit B1 - created new head - $ hg debugobsolete --record-parents `getid "desc(A0)"` - $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"` - $ hg log -G --hidden - @ 25c56d33e4c4 (draft): B1 - | - | x d73caddc5533 (draft): B0 - | | - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - -Actual testing --------------- - - $ hg push - pushing to $TESTTMP/server - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files (+1 heads) - 2 new obsolescence markers - diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-pruned-B4.t --- a/tests/test-checkheads-pruned-B4.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,83 +0,0 @@ -==================================== -Testing head checking code: Case B-4 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category B: checking simple case involving pruned changesets -TestCase 4: multi-changeset branch, all are pruned - -.. old-state: -.. -.. * 2 changeset branch -.. -.. new-state: -.. -.. * old branch is pruned -.. -.. expected-result: -.. -.. * push allowed -.. -.. graph-summary: -.. -.. B ⊗ -.. | -.. A ⊗ -.. | -.. | ◔ C -.. |/ -.. ○ - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd server - $ mkcommit B0 - $ cd ../client - $ hg pull - pulling from $TESTTMP/server - 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) - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit C0 - created new head - $ hg debugobsolete --record-parents `getid "desc(A0)"` - $ hg debugobsolete --record-parents `getid "desc(B0)"` - $ hg log -G --hidden - @ 0f88766e02d6 (draft): C0 - | - | x d73caddc5533 (draft): B0 - | | - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - -Actual testing --------------- - - $ hg push - pushing to $TESTTMP/server - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files (+1 heads) - 2 new obsolescence markers - diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-pruned-B5.t --- a/tests/test-checkheads-pruned-B5.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,89 +0,0 @@ -==================================== -Testing head checking code: Case B-5 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category B: checking simple case involving pruned changesets -TestCase 5: multi-changeset branch, mix of pruned and superceeded - -.. old-state: -.. -.. * 3 changeset branch -.. -.. new-state: -.. -.. * old head is pruned -.. * old mid is superceeded -.. * old root is pruned -.. -.. expected-result: -.. -.. * push allowed -.. -.. graph-summary: -.. -.. B ⊗ -.. | -.. A ø⇠◔ A' -.. | | -.. B ⊗ | -.. |/ -.. ○ - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd server - $ mkcommit B0 - $ mkcommit C0 - $ cd ../client - $ hg pull - pulling from $TESTTMP/server - 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) - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit B1 - created new head - $ hg debugobsolete --record-parents `getid "desc(A0)"` - $ hg debugobsolete `getid "desc(B0)"` `getid "desc(B1)"` - $ hg debugobsolete --record-parents `getid "desc(C0)"` - $ hg log -G --hidden - @ 25c56d33e4c4 (draft): B1 - | - | x 821fb21d0dd2 (draft): C0 - | | - | x d73caddc5533 (draft): B0 - | | - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - -Actual testing --------------- - - $ hg push - pushing to $TESTTMP/server - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files (+1 heads) - 3 new obsolescence markers - diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-pruned-B6.t --- a/tests/test-checkheads-pruned-B6.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -==================================== -Testing head checking code: Case B-6 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category B: checking simple case involving pruned changesets -TestCase 6: single changesets, pruned then superseeded (on a new changeset) - -.. old-state: -.. -.. * 1 changeset branch -.. -.. new-state: -.. -.. * old branch is rewritten onto another one, -.. * the new version is then pruned. -.. -.. expected-result: -.. -.. * push allowed -.. -.. graph-summary: -.. -.. A ø⇠⊗ A' -.. | | -.. | ◔ B -.. |/ -.. ○ - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd client - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit B0 - created new head - $ mkcommit A1 - $ hg up 'desc(B0)' - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ hg debugobsolete `getid "desc(A0)"` `getid "desc(A1)"` - $ hg debugobsolete --record-parents `getid "desc(A1)"` - $ hg log -G --hidden - x ba93660aff8d (draft): A1 - | - @ 74ff5441d343 (draft): B0 - | - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - -Actual testing --------------- - - $ hg push - pushing to $TESTTMP/server - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files (+1 heads) - 2 new obsolescence markers diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-pruned-B7.t --- a/tests/test-checkheads-pruned-B7.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -==================================== -Testing head checking code: Case B-7 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category B: checking simple case involving pruned changesets -TestCase 7: single changesets, pruned then superseeded (on an existing changeset) - -.. old-state: -.. -.. * 1 changeset branch -.. -.. new-state: -.. -.. * old branch is rewritten onto the common set, -.. * the new version is then pruned. -.. -.. expected-result: -.. -.. * push allowed -.. -.. graph-summary: -.. -.. A ø⇠⊗ A' -.. B ◔ | | -.. \|/ -.. ● - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd client - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit B0 - created new head - $ mkcommit A1 - $ hg up 'desc(B0)' - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ hg debugobsolete `getid "desc(A0)"` `getid "desc(A1)"` - $ hg debugobsolete --record-parents `getid "desc(A1)"` - $ hg log -G --hidden - x ba93660aff8d (draft): A1 - | - @ 74ff5441d343 (draft): B0 - | - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - -Actual testing --------------- - - $ hg push - pushing to $TESTTMP/server - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files (+1 heads) - 2 new obsolescence markers diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-pruned-B8.t --- a/tests/test-checkheads-pruned-B8.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -==================================== -Testing head checking code: Case B-2 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category B: checking simple case involving pruned changesets -TestCase 2: multi-changeset branch, head is pruned, rest is superceeded, through other - -.. old-state: -.. -.. * 2 changeset branch -.. -.. new-state: -.. -.. * old head is rewritten then pruned -.. * 1 new branch succeeding to the other changeset in the old branch (through another obsolete branch) -.. -.. expected-result: -.. -.. * push allowed -.. -.. graph-summary: -.. -.. B ø⇠⊗ B' -.. | | A' -.. A ø⇠ø⇠◔ A'' -.. |/ / -.. | / -.. |/ -.. ○ - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd server - $ mkcommit B0 - $ cd ../client - $ hg pull - pulling from $TESTTMP/server - 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) - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit A1 - created new head - $ mkcommit B1 - $ hg up 0 - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ mkcommit A2 - created new head - $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` - $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"` - $ hg debugobsolete --record-parents `getid "desc(B1)"` - $ hg debugobsolete `getid "desc(A1)" ` `getid "desc(A2)"` - $ hg log -G --hidden - @ c1f8d089020f (draft): A2 - | - | x 262c8c798096 (draft): B1 - | | - | x f6082bc4ffef (draft): A1 - |/ - | x d73caddc5533 (draft): B0 - | | - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - -Actual testing --------------- - - $ hg push - pushing to $TESTTMP/server - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files (+1 heads) - 4 new obsolescence markers - diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-superceed-A1.t --- a/tests/test-checkheads-superceed-A1.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -==================================== -Testing head checking code: Case A-1 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category A: checking simple case invoving a branch being superceeded by another. -TestCase 1: single-changeset branch - -.. old-state: -.. -.. * 1 changeset branch -.. -.. new-state: -.. -.. * 1 changeset branch succeeding to A -.. -.. expected-result: -.. -.. * push allowed -.. -.. graph-summary: -.. -.. A ø⇠◔ A' -.. |/ -.. ○ - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd client - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit A1 - created new head - $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` - $ hg log -G --hidden - @ f6082bc4ffef (draft): A1 - | - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - -Actual testing --------------- - - $ hg push - pushing to $TESTTMP/server - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files (+1 heads) - 1 new obsolescence markers - - - diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-superceed-A2.t --- a/tests/test-checkheads-superceed-A2.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,84 +0,0 @@ -==================================== -Testing head checking code: Case A-2 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category A: checking simple case invoving a branch being superceeded by another. -TestCase 2: multi-changeset branch - -.. old-state: -.. -.. * 2 changeset branch -.. -.. new-state: -.. -.. * 2 changeset branch succeeding the old one -.. -.. expected-result: -.. -.. * push allowed -.. -.. graph-summary: -.. -.. B ø⇠◔ B' -.. | | -.. A ø⇠◔ A' -.. |/ -.. ○ - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd server - $ mkcommit B0 - $ cd ../client - $ hg pull - pulling from $TESTTMP/server - 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) - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit A1 - created new head - $ mkcommit B1 - $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` - $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"` - $ hg log -G --hidden - @ 262c8c798096 (draft): B1 - | - o f6082bc4ffef (draft): A1 - | - | x d73caddc5533 (draft): B0 - | | - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - - -Actual testing --------------- - - $ hg push - pushing to $TESTTMP/server - searching for changes - adding changesets - adding manifests - adding file changes - added 2 changesets with 2 changes to 2 files (+1 heads) - 2 new obsolescence markers diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-superceed-A3.t --- a/tests/test-checkheads-superceed-A3.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -==================================== -Testing head checking code: Case A-3 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category A: checking simple case invoving a branch being superceeded by another. -TestCase 3: multi-changeset branch with reordering - -Push should be allowed -.. old-state: -.. -.. * 2 changeset branch -.. -.. new-state: -.. -.. * 2 changeset branch succeeding the old one with reordering -.. -.. expected-result: -.. -.. * push allowed -.. -.. graph-summary: -.. -.. B ø⇠⇠ -.. | ⇡ -.. A ø⇠⇠⇠○ A' -.. | ⇡/ -.. | ○ B' -.. |/ -.. ● O - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd server - $ mkcommit B0 - $ cd ../client - $ hg pull - pulling from $TESTTMP/server - 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) - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit B1 - created new head - $ mkcommit A1 - $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` - $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"` - $ hg log -G --hidden - @ c1c7524e9488 (draft): A1 - | - o 25c56d33e4c4 (draft): B1 - | - | x d73caddc5533 (draft): B0 - | | - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - - -Actual testing --------------- - - $ hg push - pushing to $TESTTMP/server - searching for changes - adding changesets - adding manifests - adding file changes - added 2 changesets with 2 changes to 2 files (+1 heads) - 2 new obsolescence markers diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-superceed-A4.t --- a/tests/test-checkheads-superceed-A4.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -==================================== -Testing head checking code: Case A-4 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category A: checking simple case invoving a branch being superceeded by another. -TestCase 4: New changeset as children of the successor - -.. old-state: -.. -.. * 1 changeset branch -.. -.. new-state: -.. -.. * 2 changeset branch, first is a successor, but head is new -.. -.. expected-result: -.. -.. * push allowed -.. -.. graph-summary: -.. -.. ◔ B -.. | -.. A ø⇠◔ A' -.. |/ -.. ○ - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd client - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit A1 - created new head - $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` - $ mkcommit B0 - $ hg log -G --hidden - @ f40ded968333 (draft): B0 - | - o f6082bc4ffef (draft): A1 - | - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - - -Actual testing --------------- - - $ hg push - pushing to $TESTTMP/server - searching for changes - adding changesets - adding manifests - adding file changes - added 2 changesets with 2 changes to 2 files (+1 heads) - 1 new obsolescence markers - - - diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-superceed-A5.t --- a/tests/test-checkheads-superceed-A5.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -==================================== -Testing head checking code: Case A-5 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category A: checking simple case invoving a branch being superceeded by another. -TestCase 5: New changeset as parent of the successor - -.. old-state: -.. -.. * 1 changeset branch -.. -.. new-state: -.. -.. * 2 changeset branch, head is a successor, but other is new -.. -.. expected-result: -.. -.. * push allowed -.. -.. graph-summary: -.. -.. A ø⇠◔ A' -.. | | -.. | ◔ B -.. |/ -.. ○ - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd client - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit B0 - created new head - $ mkcommit A1 - $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` - $ hg log -G --hidden - @ ba93660aff8d (draft): A1 - | - o 74ff5441d343 (draft): B0 - | - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - - -Actual testing --------------- - - $ hg push - pushing to $TESTTMP/server - searching for changes - adding changesets - adding manifests - adding file changes - added 2 changesets with 2 changes to 2 files (+1 heads) - 1 new obsolescence markers - - - diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-superceed-A6.t --- a/tests/test-checkheads-superceed-A6.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -==================================== -Testing head checking code: Case A-6 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category A: checking simple case invoving a branch being superceeded by another. -TestCase 6: multi-changeset branch, split on multiple other, (base on its own branch) - -.. old-state: -.. -.. * 2 branch (1 changeset, and 2 changesets) -.. -.. new-state: -.. -.. * 1 new branch superceeding the base of the old-2-changesets-branch, -.. * 1 new changesets on the old-1-changeset-branch superceeding the head of the other -.. -.. expected-result: -.. -.. * push allowed -.. -.. graph-summary: -.. -.. B'◔⇢ø B -.. | | -.. A | ø⇠◔ A' -.. | |/ -.. C ● | -.. \| -.. ● - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd server - $ mkcommit B0 - $ hg up 0 - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ mkcommit C0 - created new head - $ cd ../client - $ hg pull - pulling from $TESTTMP/server - 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) - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit A1 - created new head - $ hg up 'desc(C0)' - 1 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit B1 - $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` - $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"` - $ hg log -G --hidden - @ d70a1f75a020 (draft): B1 - | - | o f6082bc4ffef (draft): A1 - | | - o | 0f88766e02d6 (draft): C0 - |/ - | x d73caddc5533 (draft): B0 - | | - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - - -Actual testing --------------- - - $ hg push - pushing to $TESTTMP/server - searching for changes - adding changesets - adding manifests - adding file changes - added 2 changesets with 2 changes to 2 files (+1 heads) - 2 new obsolescence markers diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-superceed-A7.t --- a/tests/test-checkheads-superceed-A7.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -==================================== -Testing head checking code: Case A-7 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category A: checking simple case invoving a branch being superceeded by another. -TestCase 7: multi-changeset branch, split on multiple other, (head on its own branch) - -.. old-state: -.. -.. * 2 branch (1 changeset, and 2 changesets) -.. -.. new-state: -.. -.. * 1 new branch superceeding the head of the old-2-changesets-branch, -.. * 1 new changesets on the old-1-changeset-branch superceeding the base of the other -.. -.. expected-result: -.. -.. * push allowed -.. -.. graph-summary: -.. -.. B ø⇠◔ B' -.. | | -.. A'◔⇢ø | -.. | |/ -.. C ● | -.. \| -.. ● - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd server - $ mkcommit B0 - $ hg up 0 - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ mkcommit C0 - created new head - $ cd ../client - $ hg pull - pulling from $TESTTMP/server - 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) - $ hg up 'desc(C0)' - 1 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit A1 - $ hg up 0 - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ mkcommit B1 - created new head - $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` - $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"` - $ hg log -G --hidden - @ 25c56d33e4c4 (draft): B1 - | - | o a0802eb7fc1b (draft): A1 - | | - | o 0f88766e02d6 (draft): C0 - |/ - | x d73caddc5533 (draft): B0 - | | - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - - -Actual testing --------------- - - $ hg push - pushing to $TESTTMP/server - searching for changes - adding changesets - adding manifests - adding file changes - added 2 changesets with 2 changes to 2 files (+1 heads) - 2 new obsolescence markers diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-superceed-A8.t --- a/tests/test-checkheads-superceed-A8.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -==================================== -Testing head checking code: Case A-8 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category A: checking simple case invoving a branch being superceeded by another. -TestCase 8: single-changeset branch indirect rewrite - -.. old-state: -.. -.. * 1 changeset branch -.. -.. new-state: -.. -.. * 1 changeset branch succeeding to A, through another unpushed changesets -.. -.. expected-result: -.. -.. * push allowed -.. -.. graph-summary: -.. -.. A' -.. A ø⇠ø⇠◔ A'' -.. |/ / -.. | / -.. |/ -.. ○ - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd client - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit A1 - created new head - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit A2 - created new head - $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` - $ hg debugobsolete `getid "desc(A1)" ` `getid "desc(A2)"` - $ hg log -G --hidden - @ c1f8d089020f (draft): A2 - | - | x f6082bc4ffef (draft): A1 - |/ - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - -Actual testing --------------- - - $ hg push - pushing to $TESTTMP/server - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files (+1 heads) - 2 new obsolescence markers - - - diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-unpushed-D1.t --- a/tests/test-checkheads-unpushed-D1.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ -==================================== -Testing head checking code: Case D-1 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category D: remote head is "obs-affected" locally, but result is not part of the push. -TestCase 1: remote head is rewritten, but successors is not part of the push - -.. old-state: -.. -.. * 1 changeset branch -.. -.. new-state: -.. -.. * 1 changeset branch succeeding the old branch -.. * 1 new unrelated branch -.. -.. expected-result: -.. -.. * pushing only the unrelated branch: denied -.. -.. graph-summary: -.. -.. A ø⇠○ A' -.. |/ -.. | ◔ B -.. |/ -.. ○ - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd client - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit A1 - created new head - $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit B0 - created new head - $ hg log -G --hidden - @ 74ff5441d343 (draft): B0 - | - | o f6082bc4ffef (draft): A1 - |/ - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - -Actual testing --------------- - - $ hg push -r 'desc(B0)' - pushing to $TESTTMP/server - searching for changes - abort: push creates new remote head 74ff5441d343! - (merge or see 'hg help push' for details about pushing new heads) - [255] - - - diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-unpushed-D2.t --- a/tests/test-checkheads-unpushed-D2.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,90 +0,0 @@ -==================================== -Testing head checking code: Case D-2 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category D: remote head is "obs-affected" locally, but result is not part of the push. -TestCase 1: remote branch has 2 changes, head is pruned, second is rewritten but result is not pushed - -.. old-state: -.. -.. * 1 changeset branch -.. -.. new-state: -.. -.. * old head is pruned -.. * 1 new branch succeeding to the other changeset in the old branch -.. * 1 new unrelated branch -.. -.. expected-result: -.. -.. * push allowed -.. * pushing only the unrelated branch: denied -.. -.. graph-summary: -.. -.. B ⊗ -.. | -.. A ø⇠○ A' -.. |/ -.. | ◔ C -.. |/ -.. ○ - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd server - $ mkcommit B0 - $ cd ../client - $ hg pull - pulling from $TESTTMP/server - 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) - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit A1 - created new head - $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` - $ hg debugobsolete --record-parents `getid "desc(B0)"` - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit C0 - created new head - $ hg log -G --hidden - @ 0f88766e02d6 (draft): C0 - | - | o f6082bc4ffef (draft): A1 - |/ - | x d73caddc5533 (draft): B0 - | | - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - -Actual testing --------------- - - $ hg push --rev 'desc(C0)' - pushing to $TESTTMP/server - searching for changes - abort: push creates new remote head 0f88766e02d6! - (merge or see 'hg help push' for details about pushing new heads) - [255] - diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-unpushed-D3.t --- a/tests/test-checkheads-unpushed-D3.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,107 +0,0 @@ -==================================== -Testing head checking code: Case D-3 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category D: remote head is "obs-affected" locally, but result is not part of the push. -TestCase 3: multi-changeset branch, split on multiple new others, only one of them is pushed - -.. old-state: -.. -.. * 2 changesets branch -.. -.. new-state: -.. -.. * 2 new branches, each superseding one changeset in the old one. -.. -.. expected-result: -.. -.. * pushing only one of the resulting branch (either of them) -.. * push denied -.. -.. graph-summary: -.. -.. B'◔⇢ø B -.. | | -.. A | ø⇠◔ A' -.. | |/ -.. \| -.. ● - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd server - $ mkcommit B0 - $ hg up 0 - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ cd ../client - $ hg pull - pulling from $TESTTMP/server - 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) - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit A1 - created new head - $ hg up '0' - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit B1 - created new head - $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` - $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"` - $ hg log -G --hidden - @ 25c56d33e4c4 (draft): B1 - | - | o f6082bc4ffef (draft): A1 - |/ - | x d73caddc5533 (draft): B0 - | | - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - - -Actual testing --------------- - - $ hg push --rev 'desc(A1)' - pushing to $TESTTMP/server - searching for changes - abort: push creates new remote head f6082bc4ffef! - (merge or see 'hg help push' for details about pushing new heads) - [255] - $ hg push --rev 'desc(B1)' - pushing to $TESTTMP/server - searching for changes - abort: push creates new remote head 25c56d33e4c4! - (merge or see 'hg help push' for details about pushing new heads) - [255] - -Extra testing -------------- - -In this case, even a bare push is creating more heads - - $ hg push - pushing to $TESTTMP/server - searching for changes - abort: push creates new remote head 25c56d33e4c4! - (merge or see 'hg help push' for details about pushing new heads) - [255] diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-unpushed-D4.t --- a/tests/test-checkheads-unpushed-D4.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,102 +0,0 @@ -==================================== -Testing head checking code: Case D-4 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category D: remote head is "obs-affected" locally, but result is not part of the push. -TestCase 4: multi-changeset branch, split on multiple other, (base on its own new branch) - -.. old-state: -.. -.. * 2 branch (1 changeset, and 2 changesets) -.. -.. new-state: -.. -.. * 1 new branch superceeding the base of the old-2-changesets-branch, -.. * 1 new changesets on the old-1-changeset-branch superceeding the head of the other -.. -.. expected-result: -.. -.. * push the new branch only -> push denied -.. * push the existing branch only -> push allowed -.. -.. graph-summary: -.. -.. B'◔⇢ø B -.. | | -.. A | ø⇠◔ A' -.. | |/ -.. C ● | -.. \| -.. ● - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd server - $ mkcommit B0 - $ hg up 0 - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ mkcommit C0 - created new head - $ cd ../client - $ hg pull - pulling from $TESTTMP/server - 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) - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit A1 - created new head - $ hg up 'desc(C0)' - 1 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit B1 - $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` - $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"` - $ hg log -G --hidden - @ d70a1f75a020 (draft): B1 - | - | o f6082bc4ffef (draft): A1 - | | - o | 0f88766e02d6 (draft): C0 - |/ - | x d73caddc5533 (draft): B0 - | | - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - - -Actual testing --------------- - - $ hg push --rev 'desc(A1)' - pushing to $TESTTMP/server - searching for changes - abort: push creates new remote head f6082bc4ffef! - (merge or see 'hg help push' for details about pushing new heads) - [255] - $ hg push --rev 'desc(B1)' - pushing to $TESTTMP/server - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files - 1 new obsolescence markers diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-unpushed-D5.t --- a/tests/test-checkheads-unpushed-D5.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ -==================================== -Testing head checking code: Case D-5 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category D: remote head is "obs-affected" locally, but result is not part of the push. -TestCase 5: multi-changeset branch, split on multiple other, (head on its own new branch) - -.. old-state: -.. -.. * 2 branch (1 changeset, and 2 changesets) -.. -.. new-state: -.. -.. * 1 new branch superceeding the head of the old-2-changesets-branch, -.. * 1 new changesets on the old-1-changeset-branch superceeding the base of the other -.. -.. expected-result: -.. -.. * push the new branch only -> push denied -.. * push the existing branch only -> push allowed -.. /!\ This push create unstability/orphaning on the other hand and we should -.. probably detect/warn agains that. -.. -.. graph-summary: -.. -.. B ø⇠◔ B' -.. | | -.. A'◔⇢ø | -.. | |/ -.. C ● | -.. \| -.. ● - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd server - $ mkcommit B0 - $ hg up 0 - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ mkcommit C0 - created new head - $ cd ../client - $ hg pull - pulling from $TESTTMP/server - 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) - $ hg up 'desc(C0)' - 1 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit A1 - $ hg up 0 - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ mkcommit B1 - created new head - $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` - $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"` - $ hg log -G --hidden - @ 25c56d33e4c4 (draft): B1 - | - | o a0802eb7fc1b (draft): A1 - | | - | o 0f88766e02d6 (draft): C0 - |/ - | x d73caddc5533 (draft): B0 - | | - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - - -Actual testing --------------- - - $ hg push --rev 'desc(B1)' - pushing to $TESTTMP/server - searching for changes - abort: push creates new remote head 25c56d33e4c4! - (merge or see 'hg help push' for details about pushing new heads) - [255] - $ hg push --rev 'desc(A1)' - pushing to $TESTTMP/server - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files - 1 new obsolescence markers diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-unpushed-D6.t --- a/tests/test-checkheads-unpushed-D6.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -==================================== -Testing head checking code: Case D-6 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category D: remote head is "obs-affected" locally, but result is not part of the push. -TestCase 6: single changesets, superseeded then pruned (on a new changeset unpushed) changeset - -This is a partial push variation of B6 - -.. old-state: -.. -.. * 1 changeset branch -.. -.. new-state: -.. -.. * old branch is rewritten onto another one, -.. * the new version is then pruned. -.. -.. expected-result: -.. -.. * push denied -.. -.. graph-summary: -.. -.. A ø⇠⊗ A' -.. | | -.. C ◔ | ◔ B -.. \|/ -.. ● - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd client - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit B0 - created new head - $ mkcommit A1 - $ hg up '0' - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ mkcommit C0 - created new head - $ hg debugobsolete `getid "desc(A0)"` `getid "desc(A1)"` - $ hg debugobsolete --record-parents `getid "desc(A1)"` - $ hg log -G --hidden - @ 0f88766e02d6 (draft): C0 - | - | x ba93660aff8d (draft): A1 - | | - | o 74ff5441d343 (draft): B0 - |/ - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - -Actual testing --------------- - - $ hg push --rev 'desc(C0)' - pushing to $TESTTMP/server - searching for changes - abort: push creates new remote head 0f88766e02d6! - (merge or see 'hg help push' for details about pushing new heads) - [255] diff -r dad84c052463 -r 080b9384d741 tests/test-checkheads-unpushed-D7.t --- a/tests/test-checkheads-unpushed-D7.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,92 +0,0 @@ -==================================== -Testing head checking code: Case D-7 -==================================== - -Mercurial checks for the introduction of multiple heads on push. Evolution -comes into play to detect if existing heads on the server are being replaced by -some of the new heads we push. - -This test file is part of a series of tests checking this behavior. - -Category D: remote head is "obs-affected" locally, but result is not part of the push. -TestCase 7: single changesets, superseeded multiple time then pruned (on a new changeset unpushed) changeset - -This is a partial push variation of B6 - -.. old-state: -.. -.. * 1 changeset branch -.. -.. new-state: -.. -.. * old branch is rewritten onto another one, -.. * The rewriting it again rewritten on the root -.. * the new version is then pruned. -.. -.. expected-result: -.. -.. * push allowed -.. -.. graph-summary: -.. -.. A' -.. A ø⇠ø⇠⊗ A'' -.. | | | -.. C ◔ | ◔ | B -.. \|/ / -.. | / -.. |/ -.. | -.. ● - - $ . $TESTDIR/testlib/checkheads-util.sh - -Test setup ----------- - - $ setuprepos - creating basic server and client repo - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd client - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit B0 - created new head - $ mkcommit A1 - $ hg up '0' - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ mkcommit A2 - created new head - $ hg up '0' - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit C0 - created new head - $ hg debugobsolete `getid "desc(A0)"` `getid "desc(A1)"` - $ hg debugobsolete `getid "desc(A1)"` `getid "desc(A2)"` - $ hg debugobsolete --record-parents `getid "desc(A2)"` - $ hg log -G --hidden - @ 0f88766e02d6 (draft): C0 - | - | x c1f8d089020f (draft): A2 - |/ - | x ba93660aff8d (draft): A1 - | | - | o 74ff5441d343 (draft): B0 - |/ - | x 8aaa48160adc (draft): A0 - |/ - o 1e4be0697311 (public): root - - -Actual testing --------------- - - $ hg push --rev 'desc(C0)' - pushing to $TESTTMP/server - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files (+1 heads) - 3 new obsolescence markers diff -r dad84c052463 -r 080b9384d741 tests/test-evolve-serveronly-bundle2.t --- a/tests/test-evolve-serveronly-bundle2.t Sat Apr 01 12:45:18 2017 +0200 +++ b/tests/test-evolve-serveronly-bundle2.t Thu Apr 20 13:05:45 2017 +0200 @@ -7,6 +7,8 @@ > [web] > push_ssl = false > allow_push = * + > [ui] + > ssh=python "$RUNTESTDIR/dummyssh" > [phases] > publish = False > [experimental] @@ -41,6 +43,8 @@ $ cat ./errors.log $ echo "[extensions]" >> ./client/.hg/hgrc $ echo "evolve=" >> ./client/.hg/hgrc + $ echo "[paths]" >> ./client/.hg/hgrc + $ echo "ssh=ssh://user@dummy/server/" >> ./client/.hg/hgrc $ cp -r client other Smoke testing @@ -173,3 +177,16 @@ capabilities: _evoext_getbundle_obscommon _evoext_obshash_0 _evoext_obshash_1 _evoext_pullobsmarkers_0 _evoext_pushobsmarkers_0 batch * (glob) $ curl -s http://localhost:$HGPORT/?cmd=capabilities _evoext_getbundle_obscommon _evoext_obshash_0 _evoext_obshash_1 _evoext_pullobsmarkers_0 _evoext_pushobsmarkers_0 batch * (no-eol) (glob) + +Test obshashrange discover +=========================================== + + $ cat >> $HGRCPATH < [experimental] + > obshashrange = True + > EOF + $ cd client + $ hg pull ssh + pulling from ssh://user@dummy/server/ + searching for changes + no changes found diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-A1.t --- a/tests/test-exchange-A1.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,293 +0,0 @@ - -Initial setup - - $ . $TESTDIR/testlib/exchange-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 - - $ setuprepos A.1.1 - creating test repo for test case A.1.1 - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ mkcommit A - $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `getid 'desc(A)'` - $ hg log -G - @ f5bc6836db60 (draft): A - | - o a9bdc8b26820 (public): O - - $ hg debugobsolete - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - $ hg debugobsrelsethashtree - a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 - f5bc6836db60e308a17ba08bf050154ba9c4fad7 50656e04a95ecdfed94659dd61f663b2caa55e98 - $ hg debugobshashrange --subranges --rev 'head()' - rev node index size depth obshash - 1 f5bc6836db60 0 2 2 50656e04a95e - 0 a9bdc8b26820 0 1 1 000000000000 - 1 f5bc6836db60 1 1 2 50656e04a95e - $ cd .. - $ cd .. - -setup both variants - - $ cp -r A.1.1 A.1.1.a - $ cp -r A.1.1 A.1.1.b - - -Variant a: push -r A --------------------- - - $ dotest A.1.1.a A - ## Running testcase A.1.1.a - # testing echange of "A" (f5bc6836db60) - ## initial state - # obstore: main - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "A" from main to pushdest - pushing to pushdest - searching for changes - remote: adding changesets - remote: adding manifests - remote: adding file changes - remote: added 1 changesets with 1 changes to 1 files - remote: 1 new obsolescence markers - ## post push state - # obstore: main - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling "f5bc6836db60" from main into pulldest - pulling from main - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files - 1 new obsolescence markers - (run 'hg update' to get a working copy) - ## post pull state - # obstore: main - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - - - - -Variant b: push ---------------- - - $ dotest A.1.1.b - ## Running testcase A.1.1.b - ## initial state - # obstore: main - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing from main to pushdest - pushing to pushdest - searching for changes - remote: adding changesets - remote: adding manifests - remote: adding file changes - remote: added 1 changesets with 1 changes to 1 files - remote: 1 new obsolescence markers - ## post push state - # obstore: main - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling from main into pulldest - pulling from main - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files - 1 new obsolescence markers - (run 'hg update' to get a working copy) - ## post pull state - # obstore: main - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - - - - - - -==== 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 - - $ setuprepos A.1.2 - creating test repo for test case A.1.2 - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ 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 (Thu Jan 01 00:00:00 1970 +0000) {'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 - - -Variant a: push -r A --------------------- - - $ dotest A.1.2.a B - ## Running testcase A.1.2.a - # testing echange of "B" (f6fbb35d8ac9) - ## initial state - # obstore: main - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "B" from main to pushdest - pushing to pushdest - searching for changes - remote: adding changesets - remote: adding manifests - remote: adding file changes - remote: added 2 changesets with 2 changes to 2 files - remote: 1 new obsolescence markers - ## post push state - # obstore: main - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling "f6fbb35d8ac9" from main into pulldest - pulling from main - searching for changes - adding changesets - adding manifests - adding file changes - added 2 changesets with 2 changes to 2 files - 1 new obsolescence markers - (run 'hg update' to get a working copy) - ## post pull state - # obstore: main - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - -Variant b: push ---------------- - - $ dotest A.1.2.b - ## Running testcase A.1.2.b - ## initial state - # obstore: main - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing from main to pushdest - pushing to pushdest - searching for changes - remote: adding changesets - remote: adding manifests - remote: adding file changes - remote: added 2 changesets with 2 changes to 2 files - remote: 1 new obsolescence markers - ## post push state - # obstore: main - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling from main into pulldest - pulling from main - searching for changes - adding changesets - adding manifests - adding file changes - added 2 changesets with 2 changes to 2 files - 1 new obsolescence markers - (run 'hg update' to get a working copy) - ## post pull state - # obstore: main - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-A2.t --- a/tests/test-exchange-A2.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,121 +0,0 @@ - - -Initial setup - - $ . $TESTDIR/testlib/exchange-util.sh - -=== A.2 Two heads === - -.. {{{ -.. ⇠○ B -.. ⇠◔ | A -.. |/ -.. ● O -.. }}} -.. -.. Marker exist from: -.. -.. * A -.. * B -.. -.. -.. Command run: -.. -.. * hg push -r A -.. -.. Expected exchange: -.. -.. * chain from A -.. -.. Expected Exclude: -.. -.. * chain from B - -initial - - $ setuprepos A.2 - creating test repo for test case A.2 - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ mkcommit A - $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `getid 'desc(A)'` - $ hg up .^ - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit B - created new head - $ hg debugobsolete bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb `getid 'desc(B)'` - $ hg log -G - @ 35b183996678 (draft): B - | - | o f5bc6836db60 (draft): A - |/ - o a9bdc8b26820 (public): O - - $ hg debugobsolete - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 35b1839966785d5703a01607229eea932db42f87 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - $ hg debugobsrelsethashtree - a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 - f5bc6836db60e308a17ba08bf050154ba9c4fad7 50656e04a95ecdfed94659dd61f663b2caa55e98 - 35b1839966785d5703a01607229eea932db42f87 b9c8f20eef8938ebab939fe6a592587feacf3245 - $ hg debugobshashrange --subranges --rev 'head()' - rev node index size depth obshash - 2 35b183996678 0 2 2 b9c8f20eef89 - 1 f5bc6836db60 0 2 2 50656e04a95e - 2 35b183996678 1 1 2 b9c8f20eef89 - 0 a9bdc8b26820 0 1 1 000000000000 - 1 f5bc6836db60 1 1 2 50656e04a95e - $ cd .. - $ cd .. - - -Actual Test ---------------- - - $ dotest A.2 A - ## Running testcase A.2 - # testing echange of "A" (f5bc6836db60) - ## initial state - # obstore: main - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 35b1839966785d5703a01607229eea932db42f87 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "A" from main to pushdest - pushing to pushdest - searching for changes - remote: adding changesets - remote: adding manifests - remote: adding file changes - remote: added 1 changesets with 1 changes to 1 files - remote: 1 new obsolescence markers - ## post push state - # obstore: main - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 35b1839966785d5703a01607229eea932db42f87 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling "f5bc6836db60" from main into pulldest - pulling from main - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files - 1 new obsolescence markers - (run 'hg update' to get a working copy) - ## post pull state - # obstore: main - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 35b1839966785d5703a01607229eea932db42f87 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - - - $ cd .. diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-A3.t --- a/tests/test-exchange-A3.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,231 +0,0 @@ - -Initial setup - - $ . $TESTDIR/testlib/exchange-util.sh - -=== A.3 new branch created === - -.. {{{ -.. B' ○⇢ø B -.. | | -.. \Aø⇠◔ A' -.. \|/ -.. ● O -.. }}} -.. -.. Marker exist from: -.. -.. * `Aø⇠○ A'` -.. * `Bø⇠○ B'` -.. -.. Command run: -.. -.. * hg push -r A -.. -.. Expected exchange: -.. -.. * chain from A -.. -.. Expected Exclude: -.. -.. * chain from B -.. -.. Extra note: -.. -.. If A and B are remontly known, we should expect: -.. -.. * `hg push` will complain about the new head -.. * `hg push` should complain about unstable history creation - -initial - - $ setuprepos A.3.a - creating test repo for test case A.3.a - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ mkcommit A0 - $ mkcommit B0 - $ hg update -q 0 - $ mkcommit A1 - created new head - $ hg update -q 0 - $ mkcommit B1 - created new head - $ hg debugobsolete `getid 'desc(A0)'` `getid 'desc(A1)'` - $ hg debugobsolete `getid 'desc(B0)'` `getid 'desc(B1)'` - $ hg log -G --hidden - @ f6298a8ac3a4 (draft): B1 - | - | o e5ea8f9c7314 (draft): A1 - |/ - | x 6e72f0a95b5e (draft): B0 - | | - | x 28b51eb45704 (draft): A0 - |/ - o a9bdc8b26820 (public): O - - $ hg debugobsolete - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - $ hg debugobsrelsethashtree - a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0000000000000000000000000000000000000000 - 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 0000000000000000000000000000000000000000 - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 3bc2ee626e11a7cf8fee7a66d069271e17d5a597 - f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 91716bfd671b5a5854a47ac5d392edfdd25e431a - $ hg debugobshashrange --subranges --rev 'head()' - rev node index size depth obshash - 3 e5ea8f9c7314 0 2 2 3bc2ee626e11 - 4 f6298a8ac3a4 0 2 2 91716bfd671b - 0 a9bdc8b26820 0 1 1 000000000000 - 3 e5ea8f9c7314 1 1 2 3bc2ee626e11 - 4 f6298a8ac3a4 1 1 2 91716bfd671b - $ cd .. - $ cd .. - -Actual Test for first version (changeset unknown in remote) ------------------------------------------------------------ - - $ dotest A.3.a A1 - ## Running testcase A.3.a - # testing echange of "A1" (e5ea8f9c7314) - ## initial state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "A1" from main to pushdest - pushing to pushdest - searching for changes - remote: adding changesets - remote: adding manifests - remote: adding file changes - remote: added 1 changesets with 1 changes to 1 files - remote: 1 new obsolescence markers - ## post push state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling "e5ea8f9c7314" from main into pulldest - pulling from main - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files - 1 new obsolescence markers - (run 'hg update' to get a working copy) - ## post pull state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - - -other variant: changeset known in remote ----------------------------------------- - - $ setuprepos A.3.b - creating test repo for test case A.3.b - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ mkcommit A0 - $ mkcommit B0 - $ hg push -q ../pushdest - $ hg push -q ../pulldest - $ hg update -q 0 - $ mkcommit A1 - created new head - $ hg update -q 0 - $ mkcommit B1 - created new head - $ hg debugobsolete `getid 'desc(A0)'` `getid 'desc(A1)'` - $ hg debugobsolete `getid 'desc(B0)'` `getid 'desc(B1)'` - $ hg log -G --hidden - @ f6298a8ac3a4 (draft): B1 - | - | o e5ea8f9c7314 (draft): A1 - |/ - | x 6e72f0a95b5e (draft): B0 - | | - | x 28b51eb45704 (draft): A0 - |/ - o a9bdc8b26820 (public): O - - $ hg debugobsolete - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - $ cd .. - $ cd .. - -Actual Test for first version (changeset unknown in remote) ------------------------------------------------------------ - -check it complains about multiple heads - - $ cd A.3.b - $ hg push -R main -r e5ea8f9c7314 pushdest - pushing to pushdest - searching for changes - abort: push creates new remote head e5ea8f9c7314! - (merge or see 'hg help push' for details about pushing new heads) - [255] - $ cd .. - -test obsmarkers exchange. - - $ dotest A.3.b A1 -f - ## Running testcase A.3.b - # testing echange of "A1" (e5ea8f9c7314) - ## initial state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "A1" from main to pushdest - pushing to pushdest - searching for changes - remote: adding changesets - remote: adding manifests - remote: adding file changes - remote: added 1 changesets with 1 changes to 1 files (+1 heads) - remote: 1 new obsolescence markers - ## post push state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling "e5ea8f9c7314" from main into pulldest - pulling from main - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files (+1 heads) - 1 new obsolescence markers - (run 'hg heads' to see heads, 'hg merge' to merge) - 1 new unstable changesets - ## post pull state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-A4.t --- a/tests/test-exchange-A4.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,126 +0,0 @@ - -Initial setup - - $ . $TESTDIR/testlib/exchange-util.sh - - -=== A.4 Push in the middle of the obsolescence chain === - -.. (Where we show that we should not push the marker without the successors) -.. -.. {{{ -.. B ◔ -.. | -.. A⇠ø⇠○ A' -.. |/ -.. ● O -.. }}} -.. -.. Marker exist from: -.. -.. * `Aø⇠○ A'` -.. * chain from A -.. -.. Command run: -.. -.. * hg push -r B -.. -.. Expected exchange: -.. -.. * Chain from A -.. -.. Expected Exclude: -.. -.. * `Aø⇠○ A'` - - -initial - - $ setuprepos A.4 - creating test repo for test case A.4 - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ mkcommit A0 - $ mkcommit B - $ hg update 0 - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ mkcommit A1 - created new head - $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `getid 'desc(A0)'` - $ hg debugobsolete `getid 'desc(A0)'` `getid 'desc(A1)'` - $ hg log -G --hidden - @ e5ea8f9c7314 (draft): A1 - | - | o 06055a7959d4 (draft): B - | | - | x 28b51eb45704 (draft): A0 - |/ - o a9bdc8b26820 (public): O - - $ hg debugobsolete - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - $ hg debugobsrelsethashtree - a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 5d69322fad9eb1ba8f8f2c2312346ed347fdde76 - 06055a7959d4128e6e3bccfd01482e83a2db8a3a fd3e5712c9c2d216547d7a1b87ac815ee1fb7542 - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 cf518031fa753e9b049d727e6b0e19f645bab38f - $ hg debugobshashrange --subranges --rev 'head()' - rev node index size depth obshash - 2 06055a7959d4 0 3 3 000000000000 - 1 28b51eb45704 0 2 2 5d69322fad9e - 3 e5ea8f9c7314 0 2 2 cf518031fa75 - 2 06055a7959d4 2 1 3 000000000000 - 1 28b51eb45704 1 1 2 5d69322fad9e - 0 a9bdc8b26820 0 1 1 000000000000 - 3 e5ea8f9c7314 1 1 2 cf518031fa75 - $ cd .. - $ cd .. - -Actual Test for first version (changeset unknown in remote) ------------------------------------------------------------ - - $ dotest A.4 B -f - ## Running testcase A.4 - # testing echange of "B" (06055a7959d4) - ## initial state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "B" from main to pushdest - pushing to pushdest - searching for changes - remote: adding changesets - remote: adding manifests - remote: adding file changes - remote: added 2 changesets with 2 changes to 2 files - remote: 1 new obsolescence markers - ## post push state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling "06055a7959d4" from main into pulldest - pulling from main - searching for changes - adding changesets - adding manifests - adding file changes - added 2 changesets with 2 changes to 2 files - 1 new obsolescence markers - (run 'hg update' to get a working copy) - ## post pull state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-A5.t --- a/tests/test-exchange-A5.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,134 +0,0 @@ - - -Initial setup - - $ . $TESTDIR/testlib/exchange-util.sh - - -=== A.5 partial reordering === -.. -.. {{{ -.. B ø⇠⇠ -.. | ⇡ -.. A ø⇠⇠⇠○ A' -.. | ⇡/ -.. | ○ B' -.. |/ -.. ● O -.. }}} -.. -.. Marker exist from: -.. -.. * `Aø⇠○ A'` -.. * `Bø⇠○ B'` -.. -.. Command run: -.. -.. * hg push -r B -.. -.. Expected exchange: -.. -.. * `Bø⇠○ B'` -.. -.. Expected Exclude: -.. -.. * `Aø⇠○ A'` - - -initial - - $ setuprepos A.5 - creating test repo for test case A.5 - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ mkcommit A0 - $ mkcommit B0 - $ hg update 0 - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ mkcommit B1 - created new head - $ mkcommit A1 - $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `getid 'desc(A0)'` - $ hg debugobsolete `getid 'desc(B0)'` `getid 'desc(B1)'` - $ hg debugobsolete `getid 'desc(A0)'` `getid 'desc(A1)'` - $ hg log -G --hidden - @ 8c0a98c83722 (draft): A1 - | - o f6298a8ac3a4 (draft): B1 - | - | x 6e72f0a95b5e (draft): B0 - | | - | x 28b51eb45704 (draft): A0 - |/ - o a9bdc8b26820 (public): O - - $ hg debugobsolete - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 8c0a98c8372212c6efde4bfdcef006f27ff759d3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - $ hg debugobsrelsethashtree - a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 5d69322fad9eb1ba8f8f2c2312346ed347fdde76 - 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 fd3e5712c9c2d216547d7a1b87ac815ee1fb7542 - f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 91716bfd671b5a5854a47ac5d392edfdd25e431a - 8c0a98c8372212c6efde4bfdcef006f27ff759d3 6e8c8c71c47a2bfc27c7cf2b1f4174977ede9f21 - $ hg debugobshashrange --subranges --rev 'head()' - rev node index size depth obshash - 4 8c0a98c83722 0 3 3 70185b996296 - 3 f6298a8ac3a4 0 2 2 91716bfd671b - 4 8c0a98c83722 2 1 3 4d835a45c1e9 - 0 a9bdc8b26820 0 1 1 000000000000 - 3 f6298a8ac3a4 1 1 2 91716bfd671b - $ cd .. - $ cd .. - -Actual Test ------------ - - $ dotest A.5 B1 - ## Running testcase A.5 - # testing echange of "B1" (f6298a8ac3a4) - ## initial state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 8c0a98c8372212c6efde4bfdcef006f27ff759d3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "B1" from main to pushdest - pushing to pushdest - searching for changes - remote: adding changesets - remote: adding manifests - remote: adding file changes - remote: added 1 changesets with 1 changes to 1 files - remote: 1 new obsolescence markers - ## post push state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 8c0a98c8372212c6efde4bfdcef006f27ff759d3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling "f6298a8ac3a4" from main into pulldest - pulling from main - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files - 1 new obsolescence markers - (run 'hg update' to get a working copy) - ## post pull state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 8c0a98c8372212c6efde4bfdcef006f27ff759d3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-A6.t --- a/tests/test-exchange-A6.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,143 +0,0 @@ - - - -Initial setup - - $ . $TESTDIR/testlib/exchange-util.sh - - -=== A.6 between existing changeset === - -.. {{{ -.. A ◕⇠● B -.. |/ -.. ● O -.. }}} -.. -.. Marker exist from: -.. -.. * `A◕⇠● B` -.. -.. Command run: -.. -.. * hg push -r B -.. * hg push -.. -.. Expected exchange: -.. -.. * `A◕⇠● B` - - -initial - - $ setuprepos A.6 - creating test repo for test case A.6 - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ mkcommit A0 - $ hg update -q 0 - $ mkcommit A1 - created new head - -make both changeset known in remote - - $ hg push -qf ../pushdest - $ hg push -qf ../pulldest - -create a marker after this - - $ hg debugobsolete `getid 'desc(A0)'` `getid 'desc(A1)'` - $ hg log -G --hidden - @ e5ea8f9c7314 (draft): A1 - | - | x 28b51eb45704 (draft): A0 - |/ - o a9bdc8b26820 (public): O - - $ hg debugobsolete - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - $ hg debugobsrelsethashtree - a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0000000000000000000000000000000000000000 - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 3bc2ee626e11a7cf8fee7a66d069271e17d5a597 - $ hg debugobshashrange --subranges --rev 'head()' - rev node index size depth obshash - 2 e5ea8f9c7314 0 2 2 3bc2ee626e11 - 0 a9bdc8b26820 0 1 1 000000000000 - 2 e5ea8f9c7314 1 1 2 3bc2ee626e11 - $ cd .. - $ cd .. - - $ cp -r A.6 A.6.a - $ cp -r A.6 A.6.b - -Actual Test (explicit push version) ------------------------------------ - - $ dotest A.6.a A1 - ## Running testcase A.6.a - # testing echange of "A1" (e5ea8f9c7314) - ## initial state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "A1" from main to pushdest - pushing to pushdest - searching for changes - no changes found - remote: 1 new obsolescence markers - ## post push state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling "e5ea8f9c7314" from main into pulldest - pulling from main - no changes found - 1 new obsolescence markers - ## post pull state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - -Actual Test (bare push version) -------------------------------- - - $ dotest A.6.b - ## Running testcase A.6.b - ## initial state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing from main to pushdest - pushing to pushdest - searching for changes - no changes found - remote: 1 new obsolescence markers - ## post push state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling from main into pulldest - pulling from main - searching for changes - no changes found - 1 new obsolescence markers - ## post pull state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-A7.t --- a/tests/test-exchange-A7.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,83 +0,0 @@ - -Initial setup - - $ . $TESTDIR/testlib/exchange-util.sh - -=== A.7 Non targeted common changeset === - -.. {{{ -.. ⇠◕ A -.. | -.. ● O -.. }}} -.. -.. Marker exist from: -.. -.. * Chain from A -.. -.. Command run: -.. -.. * hg push -r O -.. -.. Expected exchange: -.. -.. * ø - - - $ setuprepos A.7 - creating test repo for test case A.7 - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ mkcommit A - $ hg push -q ../pushdest - $ hg push -q ../pulldest - $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `getid 'desc(A)'` - $ hg log -G --hidden - @ f5bc6836db60 (draft): A - | - o a9bdc8b26820 (public): O - - $ hg debugobsolete - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - $ hg debugobsrelsethashtree - a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 - f5bc6836db60e308a17ba08bf050154ba9c4fad7 50656e04a95ecdfed94659dd61f663b2caa55e98 - $ hg debugobshashrange --subranges --rev 'head()' - rev node index size depth obshash - 1 f5bc6836db60 0 2 2 50656e04a95e - 0 a9bdc8b26820 0 1 1 000000000000 - 1 f5bc6836db60 1 1 2 50656e04a95e - $ cd .. - $ cd .. - -Actual Test ------------------------------------ - - $ dotest A.7 O - ## Running testcase A.7 - # testing echange of "O" (a9bdc8b26820) - ## initial state - # obstore: main - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "O" from main to pushdest - pushing to pushdest - searching for changes - no changes found - ## post push state - # obstore: main - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pulling "a9bdc8b26820" from main into pulldest - pulling from main - no changes found - ## post pull state - # obstore: main - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-B1.t --- a/tests/test-exchange-B1.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,146 +0,0 @@ - -Initial setup - - $ . $TESTDIR/testlib/exchange-util.sh - -=== B.1 Prune on non-targeted common changeset === - -.. {{{ -.. ⊗ B -.. | -.. ◕ A -.. | -.. ● O -.. }}} -.. -.. Marker exist from: -.. -.. * B (prune) -.. -.. Command run: -.. -.. * hg push -r O -.. * hg push -.. -.. Expected exchange: -.. -.. * B (prune) - - - $ setuprepos B.1 - creating test repo for test case B.1 - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ mkcommit A - $ mkcommit B - $ hg prune -qd '0 0' . - $ hg log -G --hidden - x f6fbb35d8ac9 (draft): B - | - @ f5bc6836db60 (draft): A - | - o a9bdc8b26820 (public): O - - $ hg debugobsolete - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - $ hg debugobsrelsethashtree - a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 - f5bc6836db60e308a17ba08bf050154ba9c4fad7 926d9d84b97b3483891ae983990ad87c1f7827e9 - f6fbb35d8ac958bbe70035e4c789c18471cdc0af e041f7ff1c7bd5501c7ab602baa35f0873128021 - $ hg debugobshashrange --subranges --rev 'head()' - rev node index size depth obshash - 1 f5bc6836db60 0 2 2 926d9d84b97b - 0 a9bdc8b26820 0 1 1 000000000000 - 1 f5bc6836db60 1 1 2 926d9d84b97b - $ cd .. - $ cd .. - - - $ cp -r B.1 B.1.a - $ cp -r B.1 B.1.b - -Actual Test (explicit push version) ------------------------------------ - - $ dotest B.1.a A - ## Running testcase B.1.a - # testing echange of "A" (f5bc6836db60) - ## initial state - # obstore: main - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "A" from main to pushdest - pushing to pushdest - searching for changes - remote: adding changesets - remote: adding manifests - remote: adding file changes - remote: added 1 changesets with 1 changes to 1 files - remote: 1 new obsolescence markers - ## post push state - # obstore: main - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling "f5bc6836db60" from main into pulldest - pulling from main - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files - 1 new obsolescence markers - (run 'hg update' to get a working copy) - ## post pull state - # obstore: main - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - -Actual Test (bare push version) ------------------------------------ - - $ dotest B.1.b - ## Running testcase B.1.b - ## initial state - # obstore: main - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing from main to pushdest - pushing to pushdest - searching for changes - remote: adding changesets - remote: adding manifests - remote: adding file changes - remote: added 1 changesets with 1 changes to 1 files - remote: 1 new obsolescence markers - ## post push state - # obstore: main - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling from main into pulldest - pulling from main - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files - 1 new obsolescence markers - (run 'hg update' to get a working copy) - ## post pull state - # obstore: main - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-B2.t --- a/tests/test-exchange-B2.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,123 +0,0 @@ - -Initial setup - - $ . $TESTDIR/testlib/exchange-util.sh - -=== B.2 Pruned changeset on head: nothing pushed === - -.. {{{ -.. ⊗ A -.. | -.. ● O -.. }}} -.. -.. Marker exist from: -.. -.. * A (prune) -.. -.. Command run: -.. -.. * hg push -r O -.. * hg push -.. -.. Expected exchange: -.. -.. * prune marker for A - - - $ setuprepos B.2 - creating test repo for test case B.2 - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ mkcommit A - $ hg prune -qd '0 0' . - $ hg log -G --hidden - x f5bc6836db60 (draft): A - | - @ a9bdc8b26820 (public): O - - $ hg debugobsolete - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - $ hg debugobsrelsethashtree - a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 52a5380bc04783a9ad43bb2ab2f47a02ef02adcc - f5bc6836db60e308a17ba08bf050154ba9c4fad7 c5a567339e205e8cc4c494e4fb82944daaec449c - $ hg debugobshashrange --subranges --rev 'head()' - rev node index size depth obshash - 0 a9bdc8b26820 0 1 1 52a5380bc047 - $ cd .. - $ cd .. - - - $ cp -r B.2 B.2.a - $ cp -r B.2 B.2.b - -Actual Test (explicit push version) ------------------------------------ - - $ dotest B.2.a O - ## Running testcase B.2.a - # testing echange of "O" (a9bdc8b26820) - ## initial state - # obstore: main - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "O" from main to pushdest - pushing to pushdest - searching for changes - no changes found - remote: 1 new obsolescence markers - ## post push state - # obstore: main - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling "a9bdc8b26820" from main into pulldest - pulling from main - no changes found - 1 new obsolescence markers - ## post pull state - # obstore: main - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - -Actual Test (bare push version) ------------------------------------ - - $ dotest B.2.b - ## Running testcase B.2.b - ## initial state - # obstore: main - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing from main to pushdest - pushing to pushdest - searching for changes - no changes found - remote: 1 new obsolescence markers - ## post push state - # obstore: main - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling from main into pulldest - pulling from main - searching for changes - no changes found - 1 new obsolescence markers - ## post pull state - # obstore: main - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-B3.t --- a/tests/test-exchange-B3.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,112 +0,0 @@ - - -Initial setup - - $ . $TESTDIR/testlib/exchange-util.sh - -=== B.3 Pruned changeset on non-pushed part of the history === - -.. {{{ -.. ⊗ C -.. | -.. ○ B -.. | ◔ A -.. |/ -.. ● O -.. }}} -.. -.. Marker exist from: -.. -.. * C (prune) -.. -.. Command run: -.. -.. * hg push -r A -.. * hg push -.. -.. Expected exchange: -.. -.. * ø -.. -.. Expected Exclude: -.. -.. * chain from B - - - $ setuprepos B.3 - creating test repo for test case B.3 - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ mkcommit A - $ hg up --quiet 0 - $ mkcommit B - created new head - $ mkcommit C - $ hg prune -qd '0 0' . - $ hg log -G --hidden - x e56289ab6378 (draft): C - | - @ 35b183996678 (draft): B - | - | o f5bc6836db60 (draft): A - |/ - o a9bdc8b26820 (public): O - - $ hg debugobsolete - e56289ab6378dc752fd7965f8bf66b58bda740bd 0 {35b1839966785d5703a01607229eea932db42f87} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - $ hg debugobsrelsethashtree - a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0000000000000000000000000000000000000000 - 35b1839966785d5703a01607229eea932db42f87 631ab4cd02ffa1d144dc8f32a18be574076031e3 - e56289ab6378dc752fd7965f8bf66b58bda740bd 47c9d2d8db5d4b1eddd0266329ad260ccc84772c - $ hg debugobshashrange --subranges --rev 'head()' - rev node index size depth obshash - 2 35b183996678 0 2 2 631ab4cd02ff - 1 f5bc6836db60 0 2 2 000000000000 - 2 35b183996678 1 1 2 631ab4cd02ff - 0 a9bdc8b26820 0 1 1 000000000000 - 1 f5bc6836db60 1 1 2 000000000000 - $ cd .. - $ cd .. - - -Actual Test ------------------------------------ - - $ dotest B.3 A - ## Running testcase B.3 - # testing echange of "A" (f5bc6836db60) - ## initial state - # obstore: main - e56289ab6378dc752fd7965f8bf66b58bda740bd 0 {35b1839966785d5703a01607229eea932db42f87} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "A" from main to pushdest - pushing to pushdest - searching for changes - remote: adding changesets - remote: adding manifests - remote: adding file changes - remote: added 1 changesets with 1 changes to 1 files - ## post push state - # obstore: main - e56289ab6378dc752fd7965f8bf66b58bda740bd 0 {35b1839966785d5703a01607229eea932db42f87} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pulling "f5bc6836db60" from main into pulldest - pulling from main - 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) - ## post pull state - # obstore: main - e56289ab6378dc752fd7965f8bf66b58bda740bd 0 {35b1839966785d5703a01607229eea932db42f87} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-B4.t --- a/tests/test-exchange-B4.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,155 +0,0 @@ - -Initial setup - - $ . $TESTDIR/testlib/exchange-util.sh - -=== B.4 Pruned changeset on common part of history === - -.. {{{ -.. ⊗ C -.. | ● B -.. | | -.. | ● A -.. |/ -.. ● O -.. }}} -.. -.. Marker exist from: -.. -.. * C (prune) -.. -.. Command run: -.. -.. * hg push -r B -.. * hg push -.. -.. Expected exchange: -.. -.. * prune for C - - - $ setuprepos B.4 - creating test repo for test case B.4 - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ mkcommit A - $ mkcommit B - $ hg phase --public . - $ hg push ../pushdest - pushing to ../pushdest - searching for changes - remote: adding changesets - remote: adding manifests - remote: adding file changes - remote: added 2 changesets with 2 changes to 2 files - $ hg push ../pulldest - pushing to ../pulldest - searching for changes - remote: adding changesets - remote: adding manifests - remote: adding file changes - remote: added 2 changesets with 2 changes to 2 files - $ hg update -q 0 - $ mkcommit C - created new head - $ hg prune -qd '0 0' . - $ hg log -G --hidden - x 7f7f229b13a6 (draft): C - | - | o f6fbb35d8ac9 (public): B - | | - | o f5bc6836db60 (public): A - |/ - @ a9bdc8b26820 (public): O - - $ hg debugobsolete - 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - $ hg debugobsrelsethashtree - a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 1900882e85db10a1dc5bc7748f436a8a834356c6 - f5bc6836db60e308a17ba08bf050154ba9c4fad7 c27e764c783f451ef3aa40daf2a3795e6674cd06 - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 907beff79fdff2b82b5d3bed7989107a6d744508 - 7f7f229b13a629a5b20581c6cb723f4e2ca54bed c27e764c783f451ef3aa40daf2a3795e6674cd06 - $ hg debugobshashrange --subranges --rev 'head()' - rev node index size depth obshash - 2 f6fbb35d8ac9 0 3 3 000000000000 - 1 f5bc6836db60 0 2 2 000000000000 - 0 a9bdc8b26820 0 1 1 1900882e85db - 1 f5bc6836db60 1 1 2 000000000000 - 2 f6fbb35d8ac9 2 1 3 000000000000 - $ cd .. - $ cd .. - - - $ cp -r B.4 B.4.a - $ cp -r B.4 B.4.b - -Actual Test (explicit push version) ------------------------------------ - - $ dotest B.4.a O - ## Running testcase B.4.a - # testing echange of "O" (a9bdc8b26820) - ## initial state - # obstore: main - 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "O" from main to pushdest - pushing to pushdest - searching for changes - no changes found - remote: 1 new obsolescence markers - ## post push state - # obstore: main - 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling "a9bdc8b26820" from main into pulldest - pulling from main - no changes found - 1 new obsolescence markers - ## post pull state - # obstore: main - 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - -Actual Test (bare push version) ------------------------------------ - - $ dotest B.4.b - ## Running testcase B.4.b - ## initial state - # obstore: main - 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing from main to pushdest - pushing to pushdest - searching for changes - no changes found - remote: 1 new obsolescence markers - ## post push state - # obstore: main - 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling from main into pulldest - pulling from main - searching for changes - no changes found - 1 new obsolescence markers - ## post pull state - # obstore: main - 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-B5.t --- a/tests/test-exchange-B5.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,183 +0,0 @@ - - - -Initial setup - - $ . $TESTDIR/testlib/exchange-util.sh - - -=== B.5 Push of a children of changeset which successors is pruned === - -.. This case Mirror A.4, with pruned changeset successors. -.. -.. {{{ -.. B ◔ -.. | -.. A⇠ø⇠⊗ A' -.. |/ -.. ● O -.. }}} -.. -.. Marker exist from: -.. -.. * `Aø⇠○ A'` -.. * chain from A -.. * `A'` -.. -.. Command run: -.. -.. * hg push -r B -.. -.. Expected exchange: -.. -.. * `Aø⇠○ A'` -.. * chain from A -.. * `A'` -.. -.. Extra Note: -.. -.. I'm not totally happy about this case and I believe some more complicated -.. graph can result in behavior wuite confusing for the user (if some tool create -.. prune maker in a the middle of a valid chain) - - $ setuprepos B.5 - creating test repo for test case B.5 - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ mkcommit A0 - $ mkcommit B - $ hg up --quiet 0 - $ mkcommit A1 - created new head - $ hg debugobsolete --hidden `getid 'desc(A0)'` `getid 'desc(A1)'` - $ hg prune -qd '0 0' . - $ hg log -G --hidden - x e5ea8f9c7314 (draft): A1 - | - | o 06055a7959d4 (draft): B - | | - | x 28b51eb45704 (draft): A0 - |/ - @ a9bdc8b26820 (public): O - - $ hg debugobsolete - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - $ hg debugobsrelsethashtree - a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 554c0b12f7d9fff20cb904c26e12eee337e3309c - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 5c81c58ce0a8ad61dd9cf4c6949846b5990af30d - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 201e20697f2a6b0752335af7cd813f140e9e653e - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 ae1ac676a5e6d6f4216595c53da763d588929970 - $ hg debugobshashrange --subranges --rev 'head()' - rev node index size depth obshash - 2 06055a7959d4 0 3 3 000000000000 - 1 28b51eb45704 0 2 2 000000000000 - 2 06055a7959d4 2 1 3 000000000000 - 1 28b51eb45704 1 1 2 000000000000 - 0 a9bdc8b26820 0 1 1 554c0b12f7d9 - $ cd .. - $ cd .. - - $ cp -r B.5 B.5.a - $ cp -r B.5 B.5.b - -Actual Test (explicit push version) ------------------------------------ - - $ dotest B.5.a B -f - ## Running testcase B.5.a - # testing echange of "B" (06055a7959d4) - ## initial state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "B" from main to pushdest - pushing to pushdest - searching for changes - remote: adding changesets - remote: adding manifests - remote: adding file changes - remote: added 2 changesets with 2 changes to 2 files - remote: 2 new obsolescence markers - ## post push state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling "06055a7959d4" from main into pulldest - pulling from main - searching for changes - adding changesets - adding manifests - adding file changes - added 2 changesets with 2 changes to 2 files - 2 new obsolescence markers - (run 'hg update' to get a working copy) - 1 new unstable changesets - ## post pull state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - -Actual Test (bare push version) -------------------------------------- - - $ dotest B.5.b B -f - ## Running testcase B.5.b - # testing echange of "B" (06055a7959d4) - ## initial state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "B" from main to pushdest - pushing to pushdest - searching for changes - remote: adding changesets - remote: adding manifests - remote: adding file changes - remote: added 2 changesets with 2 changes to 2 files - remote: 2 new obsolescence markers - ## post push state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling "06055a7959d4" from main into pulldest - pulling from main - searching for changes - adding changesets - adding manifests - adding file changes - added 2 changesets with 2 changes to 2 files - 2 new obsolescence markers - (run 'hg update' to get a working copy) - 1 new unstable changesets - ## post pull state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-B6.t --- a/tests/test-exchange-B6.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,111 +0,0 @@ - - - - -Initial setup - - $ . $TESTDIR/testlib/exchange-util.sh - -== B.6 Pruned changeset with ancestors not in pushed set === - -.. {{{ -.. B ø⇠⊗ B' -.. | | -.. A ○ | -.. |/ -.. ● O -.. }}} -.. -.. Marker exist from: -.. -.. * `Bø⇠⊗ B'` -.. * B' prune -.. -.. Command run: -.. -.. * hg push -r O -.. -.. Expected exchange: -.. -.. * `Bø⇠⊗ B'` -.. * B' prune - - $ setuprepos B.6 - creating test repo for test case B.6 - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ mkcommit A - $ mkcommit B0 - $ hg up --quiet 0 - $ mkcommit B1 - created new head - $ hg debugobsolete `getid 'desc(B0)'` `getid 'desc(B1)'` - $ hg prune -qd '0 0' . - $ hg log -G --hidden - x f6298a8ac3a4 (draft): B1 - | - | x 962ecf6b1afc (draft): B0 - | | - | o f5bc6836db60 (draft): A - |/ - @ a9bdc8b26820 (public): O - - $ hg debugobsolete - 962ecf6b1afc94e15c7e48fdfb76ef8abd11372b f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - $ hg debugobsrelsethashtree - a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 86e41541149f4b6cccc5fd131d744d8e83a681e5 - f5bc6836db60e308a17ba08bf050154ba9c4fad7 f2e05412d3f1d5bc1ae647cf9efc43e0399c26ca - 962ecf6b1afc94e15c7e48fdfb76ef8abd11372b 974507d1c466d0aa86d288836194339ed3b98736 - f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 04e03a8959d8a39984e6a8f4a16fba975b364747 - $ hg debugobshashrange --subranges --rev 'head()' - rev node index size depth obshash - 1 f5bc6836db60 0 2 2 000000000000 - 0 a9bdc8b26820 0 1 1 86e41541149f - 1 f5bc6836db60 1 1 2 000000000000 - $ cd .. - $ cd .. - -Actual Test -------------------------------------- - - $ dotest B.6 O - ## Running testcase B.6 - # testing echange of "O" (a9bdc8b26820) - ## initial state - # obstore: main - 962ecf6b1afc94e15c7e48fdfb76ef8abd11372b f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "O" from main to pushdest - pushing to pushdest - searching for changes - no changes found - remote: 2 new obsolescence markers - ## post push state - # obstore: main - 962ecf6b1afc94e15c7e48fdfb76ef8abd11372b f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 962ecf6b1afc94e15c7e48fdfb76ef8abd11372b f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling "a9bdc8b26820" from main into pulldest - pulling from main - no changes found - 2 new obsolescence markers - ## post pull state - # obstore: main - 962ecf6b1afc94e15c7e48fdfb76ef8abd11372b f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 962ecf6b1afc94e15c7e48fdfb76ef8abd11372b f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - 962ecf6b1afc94e15c7e48fdfb76ef8abd11372b f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-B7.t --- a/tests/test-exchange-B7.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,92 +0,0 @@ - -Initial setup - - $ . $TESTDIR/testlib/exchange-util.sh - - -=== B.7 Prune on non-targeted common changeset === -.. -.. {{{ -.. ⊗ B -.. | -.. ◕ A -.. | -.. ● O -.. }}} -.. -.. Marker exist from: -.. -.. * B (prune) -.. -.. Command run: -.. -.. * hg push -r O -........ * hg push -.. -.. Expected exchange: -.. -.. * ø -....... * B (prune) - - $ setuprepos B.7 - creating test repo for test case B.7 - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ mkcommit A - $ hg push -q ../pushdest - $ hg push -q ../pulldest - $ mkcommit B - $ hg prune -qd '0 0' . - $ hg log -G --hidden - x f6fbb35d8ac9 (draft): B - | - @ f5bc6836db60 (draft): A - | - o a9bdc8b26820 (public): O - - $ hg debugobsolete - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - $ hg debugobsrelsethashtree - a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 - f5bc6836db60e308a17ba08bf050154ba9c4fad7 926d9d84b97b3483891ae983990ad87c1f7827e9 - f6fbb35d8ac958bbe70035e4c789c18471cdc0af e041f7ff1c7bd5501c7ab602baa35f0873128021 - $ hg debugobshashrange --subranges --rev 'head()' - rev node index size depth obshash - 1 f5bc6836db60 0 2 2 926d9d84b97b - 0 a9bdc8b26820 0 1 1 000000000000 - 1 f5bc6836db60 1 1 2 926d9d84b97b - $ cd .. - $ cd .. - -Actual Test -------------------------------------- - - $ dotest B.7 O - ## Running testcase B.7 - # testing echange of "O" (a9bdc8b26820) - ## initial state - # obstore: main - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "O" from main to pushdest - pushing to pushdest - searching for changes - no changes found - ## post push state - # obstore: main - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pulling "a9bdc8b26820" from main into pulldest - pulling from main - no changes found - ## post pull state - # obstore: main - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-C1.t --- a/tests/test-exchange-C1.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,142 +0,0 @@ - -Initial setup - - $ . $TESTDIR/testlib/exchange-util.sh - -=== C.1 Multiple pruned changeset atop each other === -.. -.. {{{ -.. ⊗ B -.. | -.. ⊗ A -.. | -.. ● O -.. }}} -.. -.. Marker exist from: -.. -.. * A (prune) -.. * B (prune) -.. -.. Command run: -.. -.. * hg push -r O -.. * hg push -.. -.. Expected exchange: -.. -.. * A (prune) -.. * B (prune) - - $ setuprepos C.1 - creating test repo for test case C.1 - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ mkcommit A - $ mkcommit B - $ hg prune -qd '0 0' .^::. - $ hg log -G --hidden - x f6fbb35d8ac9 (draft): B - | - x f5bc6836db60 (draft): A - | - @ a9bdc8b26820 (public): O - - $ hg debugobsolete - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - $ hg debugobsrelsethashtree - a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 1ce18e5a71f78d443a80c819f2f7197c4706af70 - f5bc6836db60e308a17ba08bf050154ba9c4fad7 92af733686ce7e0469d8b2b87b4612a4c2d33468 - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 3800aeba3728457abb9c508c94f6abc59e698c55 - $ hg debugobshashrange --subranges --rev 'head()' - rev node index size depth obshash - 0 a9bdc8b26820 0 1 1 1ce18e5a71f7 - $ cd .. - $ cd .. - - $ cp -r C.1 C.1.a - $ cp -r C.1 C.1.b - -Actual Test (explicit push) ---------------------------- - - $ dotest C.1.a O - ## Running testcase C.1.a - # testing echange of "O" (a9bdc8b26820) - ## initial state - # obstore: main - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "O" from main to pushdest - pushing to pushdest - searching for changes - no changes found - remote: 2 new obsolescence markers - ## post push state - # obstore: main - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling "a9bdc8b26820" from main into pulldest - pulling from main - no changes found - 2 new obsolescence markers - ## post pull state - # obstore: main - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - -Actual Test (bare push) -------------------------------------- - - $ dotest C.1.b - ## Running testcase C.1.b - ## initial state - # obstore: main - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing from main to pushdest - pushing to pushdest - searching for changes - no changes found - remote: 2 new obsolescence markers - ## post push state - # obstore: main - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling from main into pulldest - pulling from main - searching for changes - no changes found - 2 new obsolescence markers - ## post pull state - # obstore: main - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-C2.t --- a/tests/test-exchange-C2.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,167 +0,0 @@ - - -Initial setup - - $ . $TESTDIR/testlib/exchange-util.sh - -=== C.2 Pruned changeset on precursors === - -.. {{{ -.. B ⊗ -.. | -.. A ø⇠◔ A' -.. |/ -.. ● O -.. }}} -.. -.. Marker exist from: -.. -.. * A' succeed to A -.. * B (prune) -.. -.. Command run: -.. -.. * hg push -r A' -.. * hg push -.. -.. Expected exchange: -.. -.. * `A ø⇠o A'` -.. * B (prune) - - $ setuprepos C.2 - creating test repo for test case C.2 - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ mkcommit A0 - $ mkcommit B - $ hg prune -qd '0 0' . - $ hg update -q 0 - $ mkcommit A1 - created new head - $ hg debugobsolete `getid 'desc(A0)'` `getid 'desc(A1)'` - $ hg log -G --hidden - @ e5ea8f9c7314 (draft): A1 - | - | x 06055a7959d4 (draft): B - | | - | x 28b51eb45704 (draft): A0 - |/ - o a9bdc8b26820 (public): O - - $ hg debugobsolete - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - $ hg debugobsrelsethashtree - a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 72f95b7b9fa12243aeb90433d211f2c38263da31 - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 58ecf9a107b10986d88da605eb0d03b7f24ae486 - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 289cb0d058c81c763eca8bb438657dba9a7ba646 - $ hg debugobshashrange --subranges --rev 'head()' - rev node index size depth obshash - 3 e5ea8f9c7314 0 2 2 289cb0d058c8 - 0 a9bdc8b26820 0 1 1 000000000000 - 3 e5ea8f9c7314 1 1 2 289cb0d058c8 - $ cd .. - $ cd .. - - $ cp -r C.2 C.2.a - $ cp -r C.2 C.2.b - -Actual Test (explicit push) ---------------------------- - - $ dotest C.2.a A1 - ## Running testcase C.2.a - # testing echange of "A1" (e5ea8f9c7314) - ## initial state - # obstore: main - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "A1" from main to pushdest - pushing to pushdest - searching for changes - remote: adding changesets - remote: adding manifests - remote: adding file changes - remote: added 1 changesets with 1 changes to 1 files - remote: 2 new obsolescence markers - ## post push state - # obstore: main - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling "e5ea8f9c7314" from main into pulldest - pulling from main - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files - 2 new obsolescence markers - (run 'hg update' to get a working copy) - ## post pull state - # obstore: main - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - -Actual Test (bare push) -------------------------------------- - - $ dotest C.2.b - ## Running testcase C.2.b - ## initial state - # obstore: main - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing from main to pushdest - pushing to pushdest - searching for changes - remote: adding changesets - remote: adding manifests - remote: adding file changes - remote: added 1 changesets with 1 changes to 1 files - remote: 2 new obsolescence markers - ## post push state - # obstore: main - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling from main into pulldest - pulling from main - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files - 2 new obsolescence markers - (run 'hg update' to get a working copy) - ## post pull state - # obstore: main - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-C3.t --- a/tests/test-exchange-C3.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,167 +0,0 @@ - - -Initial setup - - $ . $TESTDIR/testlib/exchange-util.sh - - -=== C.3 Pruned changeset on precursors of another pruned one === - -.. {{{ -.. B ⊗ -.. | -.. A ø⇠⊗ A' -.. |/ -.. ● O -.. }}} -.. -.. Marker exist from: -.. -.. * A' succeed to A -.. * A' (prune -.. * B (prune) -.. -.. Command run: -.. -.. * hg push -r A' -.. * hg push -.. -.. Expected exchange: -.. -.. * `A ø⇠⊗ A'` -.. * A (prune) -.. * B (prune) - - $ setuprepos C.3 - creating test repo for test case C.3 - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ mkcommit A0 - $ mkcommit B - $ hg prune -qd '0 0' . - $ hg update -q 0 - $ mkcommit A1 - created new head - $ hg debugobsolete `getid 'desc(A0)'` `getid 'desc(A1)'` - $ hg prune -qd '0 0' . - $ hg log -G --hidden - x e5ea8f9c7314 (draft): A1 - | - | x 06055a7959d4 (draft): B - | | - | x 28b51eb45704 (draft): A0 - |/ - @ a9bdc8b26820 (public): O - - $ hg debugobsolete - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - $ hg debugobsrelsethashtree - a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 40be80b35671116f2c61ef25797806536a6eb5a0 - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f beac7228bbe708bc7c9181c3c27f8a17f21dbd9f - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 8b648bd67281e9e525919285ac7b3bb2836c2f02 - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 dcd2b566ad0983333be704afdc205066e1a6b742 - $ hg debugobshashrange --subranges --rev 'head()' - rev node index size depth obshash - 0 a9bdc8b26820 0 1 1 40be80b35671 - $ cd .. - $ cd .. - - $ cp -r C.3 C.3.a - $ cp -r C.3 C.3.b - -Actual Test (explicit push) ---------------------------- - - $ dotest C.3.a O - ## Running testcase C.3.a - # testing echange of "O" (a9bdc8b26820) - ## initial state - # obstore: main - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "O" from main to pushdest - pushing to pushdest - searching for changes - no changes found - remote: 3 new obsolescence markers - ## post push state - # obstore: main - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling "a9bdc8b26820" from main into pulldest - pulling from main - no changes found - 3 new obsolescence markers - ## post pull state - # obstore: main - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - -Actual Test (bare push) -------------------------------------- - - $ dotest C.3.b - ## Running testcase C.3.b - ## initial state - # obstore: main - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing from main to pushdest - pushing to pushdest - searching for changes - no changes found - remote: 3 new obsolescence markers - ## post push state - # obstore: main - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling from main into pulldest - pulling from main - searching for changes - no changes found - 3 new obsolescence markers - ## post pull state - # obstore: main - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-C4.t --- a/tests/test-exchange-C4.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,128 +0,0 @@ - - -Initial setup - - $ . $TESTDIR/testlib/exchange-util.sh - -=== C.4 multiple successors, one is pruned === - -.. Another case were prune are confusing? (A is killed without its successors being -.. pushed) -.. -.. (could split of divergence, if split see the Z section) -.. -.. {{{ -.. A -.. B ○⇢ø⇠⊗ C -.. \|/ -.. ● O -.. }}} -.. -.. Marker exist from: -.. -.. * `A ø⇠○ B` -.. * `A ø⇠○ C` -.. * C (prune) -.. -.. -.. Command run: -.. -.. * hg push -r O -.. -.. Expected exchange: -.. -.. * `A ø⇠○ C` -.. * C (prune) -.. -.. Expected exclude: -.. -.. * `A ø⇠○ B` - -Implemented as the non-split version - - $ setuprepos C.4 - creating test repo for test case C.4 - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ mkcommit A - $ hg update -q 0 - $ mkcommit B - created new head - $ hg update -q 0 - $ mkcommit C - created new head - $ hg debugobsolete --hidden `getid 'desc(A)'` `getid 'desc(B)'` - $ hg debugobsolete --hidden `getid 'desc(A)'` `getid 'desc(C)'` - $ hg prune -qd '0 0' . - $ hg log -G --hidden - x 7f7f229b13a6 (draft): C - | - | o 35b183996678 (draft): B - |/ - | x f5bc6836db60 (draft): A - |/ - @ a9bdc8b26820 (public): O - - $ hg debugobsolete - f5bc6836db60e308a17ba08bf050154ba9c4fad7 35b1839966785d5703a01607229eea932db42f87 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f5bc6836db60e308a17ba08bf050154ba9c4fad7 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - $ hg debugobsrelsethashtree - a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 a9c02d134f5b98acc74d1dc4eb28fd59f958a2bd - f5bc6836db60e308a17ba08bf050154ba9c4fad7 619b4d13bd9878f04d7208dcfcf1e89da826f6be - 35b1839966785d5703a01607229eea932db42f87 ddeb7b7a87378f59cecb36d5146df0092b6b3327 - 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 58ef2e726c5bd89bceffb6243294b38eadbf3d60 - $ hg debugobshashrange --subranges --rev 'head()' - rev node index size depth obshash - 2 35b183996678 0 2 2 2a098b4a877f - 2 35b183996678 1 1 2 916e804c50de - 0 a9bdc8b26820 0 1 1 a9c02d134f5b - $ cd .. - $ cd .. - -Actual Test -------------------------------------- - - $ dotest C.4 O - ## Running testcase C.4 - # testing echange of "O" (a9bdc8b26820) - ## initial state - # obstore: main - 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f5bc6836db60e308a17ba08bf050154ba9c4fad7 35b1839966785d5703a01607229eea932db42f87 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f5bc6836db60e308a17ba08bf050154ba9c4fad7 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "O" from main to pushdest - pushing to pushdest - searching for changes - no changes found - remote: 2 new obsolescence markers - ## post push state - # obstore: main - 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f5bc6836db60e308a17ba08bf050154ba9c4fad7 35b1839966785d5703a01607229eea932db42f87 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f5bc6836db60e308a17ba08bf050154ba9c4fad7 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f5bc6836db60e308a17ba08bf050154ba9c4fad7 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling "a9bdc8b26820" from main into pulldest - pulling from main - no changes found - 2 new obsolescence markers - ## post pull state - # obstore: main - 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f5bc6836db60e308a17ba08bf050154ba9c4fad7 35b1839966785d5703a01607229eea932db42f87 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f5bc6836db60e308a17ba08bf050154ba9c4fad7 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f5bc6836db60e308a17ba08bf050154ba9c4fad7 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - f5bc6836db60e308a17ba08bf050154ba9c4fad7 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-D1.t --- a/tests/test-exchange-D1.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,113 +0,0 @@ - -Initial setup - - $ . $TESTDIR/testlib/exchange-util.sh - -=== D.1 Pruned changeset based on missing precursor of something not present === - -.. {{{ -.. B ⊗ -.. | -.. A ◌⇠◔ A' -.. |/ -.. ● O -.. }}} -.. -.. Marker exist from: -.. -.. * A' succeed to A -.. * B (prune) -.. -.. Command run: -.. -.. * hg push -r A' -.. * hg push -.. -.. Expected exchange: -.. -.. * `A ø⇠o A'` -.. * B (prune) - - $ setuprepos D.1 - creating test repo for test case D.1 - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ mkcommit A0 - $ mkcommit B - $ hg up -q 0 - $ mkcommit A1 - created new head - $ hg debugobsolete `getid 'desc(A0)'` `getid 'desc(A1)'` - $ hg prune -d '0 0' 'desc(B)' - 1 changesets pruned - $ hg strip --hidden -q 'desc(A0)' - $ hg log -G --hidden - @ e5ea8f9c7314 (draft): A1 - | - o a9bdc8b26820 (public): O - - $ hg debugobsolete - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - $ hg debugobsrelsethashtree - a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 289cb0d058c81c763eca8bb438657dba9a7ba646 - $ hg debugobshashrange --subranges --rev 'head()' - rev node index size depth obshash - 1 e5ea8f9c7314 0 2 2 289cb0d058c8 - 0 a9bdc8b26820 0 1 1 000000000000 - 1 e5ea8f9c7314 1 1 2 289cb0d058c8 - $ cd .. - $ cd .. - -Actual Test -------------------------------------- - - $ dotest D.1 A1 - ## Running testcase D.1 - # testing echange of "A1" (e5ea8f9c7314) - ## initial state - # obstore: main - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "A1" from main to pushdest - pushing to pushdest - searching for changes - remote: adding changesets - remote: adding manifests - remote: adding file changes - remote: added 1 changesets with 1 changes to 1 files - remote: 2 new obsolescence markers - ## post push state - # obstore: main - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling "e5ea8f9c7314" from main into pulldest - pulling from main - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files - 2 new obsolescence markers - (run 'hg update' to get a working copy) - ## post pull state - # obstore: main - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-D2.t --- a/tests/test-exchange-D2.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,100 +0,0 @@ - - -Initial setup - - $ . $TESTDIR/testlib/exchange-util.sh - -=== D.2 missing prune target (prune in "pushed set") === - -{{{ -}}} - -Marker exist from: - - * A' succeed to A - * A' (prune) - -Command run: - - * hg push - -Expected exchange: - - * `A ø⇠o A'` - * A' (prune) - - - $ setuprepos D.2 - creating test repo for test case D.2 - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ mkcommit A0 - $ hg up -q 0 - $ mkcommit A1 - created new head - $ hg debugobsolete `getid 'desc(A0)'` `getid 'desc(A1)'` - $ hg prune --date '0 0' . - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - working directory now at a9bdc8b26820 - 1 changesets pruned - $ hg strip --hidden -q 'desc(A1)' - $ hg log -G --hidden - x 28b51eb45704 (draft): A0 - | - @ a9bdc8b26820 (public): O - - $ hg debugobsolete - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - $ hg debugobsrelsethashtree - a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 554c0b12f7d9fff20cb904c26e12eee337e3309c - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 5c81c58ce0a8ad61dd9cf4c6949846b5990af30d - $ hg debugobshashrange --subranges --rev 'head()' - rev node index size depth obshash - 0 a9bdc8b26820 0 1 1 554c0b12f7d9 - $ cd .. - $ cd .. - -Actual Test -------------------------------------- - - $ dotest D.2 - ## Running testcase D.2 - ## initial state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing from main to pushdest - pushing to pushdest - searching for changes - no changes found - remote: 2 new obsolescence markers - ## post push state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling from main into pulldest - pulling from main - searching for changes - no changes found - 2 new obsolescence markers - ## post pull state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-D3.t --- a/tests/test-exchange-D3.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ - - - -Initial setup - - $ . $TESTDIR/testlib/exchange-util.sh - -=== D.2 missing prune target (prune in "pushed set") === - -{{{ -}}} - -Marker exist from: - - * A' succeed to A - * A' (prune) - -Command run: - - * hg push - -Expected exchange: - - * `A ø⇠o A'` - * A' (prune) - - - $ setuprepos D.2 - creating test repo for test case D.2 - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ mkcommit A0 - $ hg up -q 0 - $ mkcommit B - created new head - $ mkcommit A1 - $ hg debugobsolete `getid 'desc(A0)'` `getid 'desc(A1)'` - $ hg prune -d '0 0' . - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - working directory now at 35b183996678 - 1 changesets pruned - $ hg strip --hidden -q 'desc(A1)' - $ hg log -G --hidden - @ 35b183996678 (draft): B - | - | x 28b51eb45704 (draft): A0 - |/ - o a9bdc8b26820 (public): O - - $ hg debugobsolete - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 6aa67a7b4baa6fb41b06aed38d5b1201436546e2 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 6aa67a7b4baa6fb41b06aed38d5b1201436546e2 0 {35b1839966785d5703a01607229eea932db42f87} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - $ hg debugobsrelsethashtree - a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0000000000000000000000000000000000000000 - 35b1839966785d5703a01607229eea932db42f87 65a9f21dff0702355e973a8f31d3b3b7e59376fb - $ hg debugobshashrange --subranges --rev 'head()' - rev node index size depth obshash - 2 35b183996678 0 2 2 65a9f21dff07 - 2 35b183996678 1 1 2 65a9f21dff07 - 0 a9bdc8b26820 0 1 1 000000000000 - $ cd .. - $ cd .. - -Actual Test -------------------------------------- - - $ dotest D.2 O - ## Running testcase D.2 - # testing echange of "O" (a9bdc8b26820) - ## initial state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 6aa67a7b4baa6fb41b06aed38d5b1201436546e2 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 6aa67a7b4baa6fb41b06aed38d5b1201436546e2 0 {35b1839966785d5703a01607229eea932db42f87} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "O" from main to pushdest - pushing to pushdest - searching for changes - no changes found - ## post push state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 6aa67a7b4baa6fb41b06aed38d5b1201436546e2 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 6aa67a7b4baa6fb41b06aed38d5b1201436546e2 0 {35b1839966785d5703a01607229eea932db42f87} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pulling "a9bdc8b26820" from main into pulldest - pulling from main - no changes found - ## post pull state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 6aa67a7b4baa6fb41b06aed38d5b1201436546e2 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 6aa67a7b4baa6fb41b06aed38d5b1201436546e2 0 {35b1839966785d5703a01607229eea932db42f87} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-D4.t --- a/tests/test-exchange-D4.t Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,138 +0,0 @@ - - -Initial setup - - $ . $TESTDIR/testlib/exchange-util.sh - -=== D.4 Unknown changeset in between known one === - -.. Mostly a clarification case -.. -.. {{{ -.. ø⇠◌⇠○ -.. | |/ -.. | ◔ -.. |/ -.. ● O -.. -.. }}} -.. -.. Should be treated as A.3 case: -.. -.. {{{ -.. -.. ø⇠○ -.. | | -.. | ◔ -.. |/ -.. ● O -.. -.. }}} - - -initial - - $ setuprepos A.3.a - creating test repo for test case A.3.a - - pulldest - - main - - pushdest - cd into `main` and proceed with env setup - $ cd main - $ mkcommit A0 - $ mkcommit B0 - $ hg update -q 0 - $ mkcommit A1 - created new head - $ mkcommit B1 - $ hg debugobsolete `getid 'desc(A0)'` aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `getid 'desc(A1)'` - $ hg debugobsolete `getid 'desc(B0)'` bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb - $ hg debugobsolete bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb `getid 'desc(B1)'` - $ hg log -G --hidden - @ 069b05c3876d (draft): B1 - | - o e5ea8f9c7314 (draft): A1 - | - | x 6e72f0a95b5e (draft): B0 - | | - | x 28b51eb45704 (draft): A0 - |/ - o a9bdc8b26820 (public): O - - $ hg debugobsolete - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 069b05c3876d56f62895e853a501ea58ea85f68d 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - $ hg debugobsrelsethashtree - a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0000000000000000000000000000000000000000 - 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 0000000000000000000000000000000000000000 - e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0aacc2f86e8fca29f2d5fd8d0790644620acd58a - 069b05c3876d56f62895e853a501ea58ea85f68d 40b98bc2b5b1152416ea8e9665ae1c6a3ce32ba0 - $ hg debugobshashrange --subranges --rev 'head()' - rev node index size depth obshash - 4 069b05c3876d 0 3 3 a2b2331da650 - 3 e5ea8f9c7314 0 2 2 0aacc2f86e8f - 4 069b05c3876d 2 1 3 901f118d4333 - 0 a9bdc8b26820 0 1 1 000000000000 - 3 e5ea8f9c7314 1 1 2 0aacc2f86e8f - $ cd .. - $ cd .. - -Actual Test for first version (changeset unknown in remote) ------------------------------------------------------------ - - $ dotest A.3.a A1 - ## Running testcase A.3.a - # testing echange of "A1" (e5ea8f9c7314) - ## initial state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 069b05c3876d56f62895e853a501ea58ea85f68d 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - # obstore: pulldest - ## pushing "A1" from main to pushdest - pushing to pushdest - searching for changes - remote: adding changesets - remote: adding manifests - remote: adding file changes - remote: added 1 changesets with 1 changes to 1 files - remote: 2 new obsolescence markers - ## post push state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 069b05c3876d56f62895e853a501ea58ea85f68d 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - ## pulling "e5ea8f9c7314" from main into pulldest - pulling from main - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files - 2 new obsolescence markers - (run 'hg update' to get a working copy) - ## post pull state - # obstore: main - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 069b05c3876d56f62895e853a501ea58ea85f68d 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pushdest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - # obstore: pulldest - 28b51eb45704506b5c603decd6bf7ac5e0f6a52f aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} - - diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-obsmarkers-case-A1.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-exchange-obsmarkers-case-A1.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,318 @@ +============================================ +Testing obsolescence markers push: Cases A.1 +============================================ + +Mercurial pushes obsolescences markers relevant to the "pushed-set", the set of +all changesets that requested to be "in sync" after the push (even if they are +already on both side). + +This test belongs to a series of tests checking such set is properly computed +and applied. This does not tests "obsmarkers" discovery capabilities. + +Category A: simple cases +TestCase 1: pushing a single head +Subcases: +# A.1.1 pushing a single head (2 variants) +# A.1.2 pushing multiple changesets into a single head (2 variants) + +Case: A.1.1 pushing a single head +================================= +.. +.. {{{ +.. ⇠◔ A +.. | +.. ● O +.. }}} +.. +.. Marker exists from: +.. +.. * A +.. +.. Commands run: +.. +.. * hg push -r A +.. * hg push +.. +.. Expected exchange: +.. +.. * chain from A + +Setup +----- + + $ . $TESTDIR/testlib/exchange-obsmarker-util.sh + +initial + + $ setuprepos A.1.1 + creating test repo for test case A.1.1 + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A + $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `getid 'desc(A)'` + $ hg log -G + @ f5bc6836db60 (draft): A + | + o a9bdc8b26820 (public): O + + $ inspect_obsmarkers + obsstore content + ================ + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 + f5bc6836db60e308a17ba08bf050154ba9c4fad7 50656e04a95ecdfed94659dd61f663b2caa55e98 + obshashrange + ============ + rev node index size depth obshash + 1 f5bc6836db60 0 2 2 50656e04a95e + 0 a9bdc8b26820 0 1 1 000000000000 + 1 f5bc6836db60 1 1 2 50656e04a95e + $ cd .. + $ cd .. + +setup both variants + + $ cp -R A.1.1 A.1.1.a + $ cp -R A.1.1 A.1.1.b + +Variant a: push -r A +-------------------- + + $ dotest A.1.1.a A + ## Running testcase A.1.1.a + # testing echange of "A" (f5bc6836db60) + ## initial state + # obstore: main + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing "A" from main to pushdest + pushing to pushdest + searching for changes + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 1 changesets with 1 changes to 1 files + remote: 1 new obsolescence markers + ## post push state + # obstore: main + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling "f5bc6836db60" from main into pulldest + pulling from main + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + 1 new obsolescence markers + (run 'hg update' to get a working copy) + ## post pull state + # obstore: main + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + +Variant b: push +--------------- + + $ dotest A.1.1.b + ## Running testcase A.1.1.b + ## initial state + # obstore: main + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing from main to pushdest + pushing to pushdest + searching for changes + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 1 changesets with 1 changes to 1 files + remote: 1 new obsolescence markers + ## post push state + # obstore: main + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling from main into pulldest + pulling from main + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + 1 new obsolescence markers + (run 'hg update' to get a working copy) + ## post pull state + # obstore: main + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + +A.1.2 pushing multiple changesets 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 + + $ setuprepos A.1.2 + creating test repo for test case A.1.2 + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A + $ mkcommit B + $ hg log -G + @ f6fbb35d8ac9 (draft): B + | + o f5bc6836db60 (draft): A + | + o a9bdc8b26820 (public): O + + $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `getid 'desc(A)'` + $ inspect_obsmarkers + obsstore content + ================ + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 + f5bc6836db60e308a17ba08bf050154ba9c4fad7 50656e04a95ecdfed94659dd61f663b2caa55e98 + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 9cfa25b36856aa720419146abddd011cf87d368c + obshashrange + ============ + rev node index size depth obshash + 2 f6fbb35d8ac9 0 3 3 000000000000 + 1 f5bc6836db60 0 2 2 50656e04a95e + 0 a9bdc8b26820 0 1 1 000000000000 + 1 f5bc6836db60 1 1 2 50656e04a95e + 2 f6fbb35d8ac9 2 1 3 000000000000 + $ cd .. + $ cd .. + +setup both variants + + $ cp -R A.1.2 A.1.2.a + $ cp -R A.1.2 A.1.2.b + +Variant a: push -r A +-------------------- + + $ dotest A.1.2.a B + ## Running testcase A.1.2.a + # testing echange of "B" (f6fbb35d8ac9) + ## initial state + # obstore: main + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing "B" from main to pushdest + pushing to pushdest + searching for changes + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 2 changesets with 2 changes to 2 files + remote: 1 new obsolescence markers + ## post push state + # obstore: main + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling "f6fbb35d8ac9" from main into pulldest + pulling from main + searching for changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 2 files + 1 new obsolescence markers + (run 'hg update' to get a working copy) + ## post pull state + # obstore: main + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + +Variant b: push +--------------- + + $ dotest A.1.2.b + ## Running testcase A.1.2.b + ## initial state + # obstore: main + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing from main to pushdest + pushing to pushdest + searching for changes + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 2 changesets with 2 changes to 2 files + remote: 1 new obsolescence markers + ## post push state + # obstore: main + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling from main into pulldest + pulling from main + searching for changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 2 files + 1 new obsolescence markers + (run 'hg update' to get a working copy) + ## post pull state + # obstore: main + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-obsmarkers-case-A2.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-exchange-obsmarkers-case-A2.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,137 @@ +============================================ +Testing obsolescence markers push: Cases A.2 +============================================ + +Mercurial pushes obsolescences markers relevant to the "pushed-set", the set of +all changesets that requested to be "in sync" after the push (even if they are +already on both side). + +This test belongs to a series of tests checking such set is properly computed +and applied. This does not tests "obsmarkers" discovery capabilities. + +Category A: simple cases +TestCase 2: Two heads, only one of them pushed + +A.2 Two heads, only on of then pushed +===================================== + +.. {{{ +.. ⇠○ B +.. ⇠◔ | A +.. |/ +.. ● O +.. }}} +.. +.. Markers exist from: +.. +.. * A +.. * B +.. +.. +.. Command runs: +.. +.. * hg push -r A +.. +.. Expected exchange: +.. +.. * chain from A +.. +.. Expected Exclude: +.. +.. * chain from B + +Setup +----- + + $ . $TESTDIR/testlib/exchange-obsmarker-util.sh + +initial + + $ setuprepos A.2 + creating test repo for test case A.2 + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A + $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `getid 'desc(A)'` + $ hg up '.~1' + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit B + created new head + $ hg debugobsolete bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb `getid 'desc(B)'` + $ hg log -G + @ 35b183996678 (draft): B + | + | o f5bc6836db60 (draft): A + |/ + o a9bdc8b26820 (public): O + + $ inspect_obsmarkers + obsstore content + ================ + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 35b1839966785d5703a01607229eea932db42f87 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 + f5bc6836db60e308a17ba08bf050154ba9c4fad7 50656e04a95ecdfed94659dd61f663b2caa55e98 + 35b1839966785d5703a01607229eea932db42f87 b9c8f20eef8938ebab939fe6a592587feacf3245 + obshashrange + ============ + rev node index size depth obshash + 2 35b183996678 0 2 2 b9c8f20eef89 + 1 f5bc6836db60 0 2 2 50656e04a95e + 2 35b183996678 1 1 2 b9c8f20eef89 + 0 a9bdc8b26820 0 1 1 000000000000 + 1 f5bc6836db60 1 1 2 50656e04a95e + $ cd .. + $ cd .. + +Actual Test +----------- + + $ dotest A.2 A + ## Running testcase A.2 + # testing echange of "A" (f5bc6836db60) + ## initial state + # obstore: main + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 35b1839966785d5703a01607229eea932db42f87 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing "A" from main to pushdest + pushing to pushdest + searching for changes + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 1 changesets with 1 changes to 1 files + remote: 1 new obsolescence markers + ## post push state + # obstore: main + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 35b1839966785d5703a01607229eea932db42f87 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling "f5bc6836db60" from main into pulldest + pulling from main + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + 1 new obsolescence markers + (run 'hg update' to get a working copy) + ## post pull state + # obstore: main + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 35b1839966785d5703a01607229eea932db42f87 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + + $ cd .. diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-obsmarkers-case-A3.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-exchange-obsmarkers-case-A3.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,269 @@ +============================================ +Testing obsolescence markers push: Cases A.3 +============================================ + +Mercurial pushes obsolescences markers relevant to the "pushed-set", the set of +all changesets that requested to be "in sync" after the push (even if they are +already on both side). + +This test belongs to a series of tests checking such set is properly computed +and applied. This does not tests "obsmarkers" discovery capabilities. + +Category A: simple cases +TestCase 3: old branch split in two, only one of the new one pushed +Variants: +# a: changesets are known on remote +# b: changesets are known on remote (push needs -f) + +A.3 new branchs created, one pushed. +==================================== + +.. {{{ +.. B' ○⇢ø B +.. | | +.. \Aø⇠◔ A' +.. \|/ +.. ● O +.. }}} +.. +.. Markers exist from: +.. +.. * `A ø⇠○ A'` +.. * `B ø⇠○ B'` +.. +.. Command runs: +.. +.. * hg push -r A +.. +.. Expected exchange: +.. +.. * chain from A +.. +.. Expected exclude: +.. +.. * chain from B +.. +.. Extra note: +.. +.. If A and B are remontly known, we should expect: +.. +.. * `hg push` will complain about the new head +.. * `hg push` should complain about unstable history creation + +Setup +----- + + $ . $TESTDIR/testlib/exchange-obsmarker-util.sh + +initial + + $ setuprepos A.3.a + creating test repo for test case A.3.a + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A0 + $ mkcommit B0 + $ hg update -q 0 + $ mkcommit A1 + created new head + $ hg update -q 0 + $ mkcommit B1 + created new head + $ hg debugobsolete `getid 'desc(A0)'` `getid 'desc(A1)'` + $ hg debugobsolete `getid 'desc(B0)'` `getid 'desc(B1)'` + $ hg log -G --hidden + @ f6298a8ac3a4 (draft): B1 + | + | o e5ea8f9c7314 (draft): A1 + |/ + | x 6e72f0a95b5e (draft): B0 + | | + | x 28b51eb45704 (draft): A0 + |/ + o a9bdc8b26820 (public): O + + $ inspect_obsmarkers + obsstore content + ================ + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0000000000000000000000000000000000000000 + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 0000000000000000000000000000000000000000 + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 3bc2ee626e11a7cf8fee7a66d069271e17d5a597 + f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 91716bfd671b5a5854a47ac5d392edfdd25e431a + obshashrange + ============ + rev node index size depth obshash + 3 e5ea8f9c7314 0 2 2 3bc2ee626e11 + 4 f6298a8ac3a4 0 2 2 91716bfd671b + 0 a9bdc8b26820 0 1 1 000000000000 + 3 e5ea8f9c7314 1 1 2 3bc2ee626e11 + 4 f6298a8ac3a4 1 1 2 91716bfd671b + $ cd .. + $ cd .. + +Actual Test for first version (changeset unknown in remote) +----------------------------------------------------------- + + $ dotest A.3.a A1 + ## Running testcase A.3.a + # testing echange of "A1" (e5ea8f9c7314) + ## initial state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing "A1" from main to pushdest + pushing to pushdest + searching for changes + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 1 changesets with 1 changes to 1 files + remote: 1 new obsolescence markers + ## post push state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling "e5ea8f9c7314" from main into pulldest + pulling from main + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + 1 new obsolescence markers + (run 'hg update' to get a working copy) + ## post pull state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + +other variant: changeset known in remote +---------------------------------------- + + $ setuprepos A.3.b + creating test repo for test case A.3.b + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A0 + $ mkcommit B0 + $ hg push -q ../pushdest + $ hg push -q ../pulldest + $ hg update -q 0 + $ mkcommit A1 + created new head + $ hg update -q 0 + $ mkcommit B1 + created new head + $ hg debugobsolete `getid 'desc(A0)'` `getid 'desc(A1)'` + $ hg debugobsolete `getid 'desc(B0)'` `getid 'desc(B1)'` + $ hg log -G --hidden + @ f6298a8ac3a4 (draft): B1 + | + | o e5ea8f9c7314 (draft): A1 + |/ + | x 6e72f0a95b5e (draft): B0 + | | + | x 28b51eb45704 (draft): A0 + |/ + o a9bdc8b26820 (public): O + + $ inspect_obsmarkers + obsstore content + ================ + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0000000000000000000000000000000000000000 + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 0000000000000000000000000000000000000000 + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 3bc2ee626e11a7cf8fee7a66d069271e17d5a597 + f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 91716bfd671b5a5854a47ac5d392edfdd25e431a + obshashrange + ============ + rev node index size depth obshash + 3 e5ea8f9c7314 0 2 2 3bc2ee626e11 + 4 f6298a8ac3a4 0 2 2 91716bfd671b + 0 a9bdc8b26820 0 1 1 000000000000 + 3 e5ea8f9c7314 1 1 2 3bc2ee626e11 + 4 f6298a8ac3a4 1 1 2 91716bfd671b + $ cd .. + $ cd .. + +Actual Test for first version (changeset known in remote) +----------------------------------------------------------- + +check it complains about multiple heads + + $ cd A.3.b + $ hg push -R main -r 'desc(A1)' pushdest + pushing to pushdest + searching for changes + abort: push creates new remote head e5ea8f9c7314! + (merge or see 'hg help push' for details about pushing new heads) + [255] + $ cd .. + +test obsmarkers exchange. + + $ dotest A.3.b A1 -f + ## Running testcase A.3.b + # testing echange of "A1" (e5ea8f9c7314) + ## initial state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing "A1" from main to pushdest + pushing to pushdest + searching for changes + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 1 changesets with 1 changes to 1 files (+1 heads) + remote: 1 new obsolescence markers + ## post push state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling "e5ea8f9c7314" from main into pulldest + pulling from main + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files (+1 heads) + 1 new obsolescence markers + (run 'hg heads' to see heads, 'hg merge' to merge) + 1 new unstable changesets + ## post pull state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-obsmarkers-case-A4.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-exchange-obsmarkers-case-A4.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,143 @@ +============================================ +Testing obsolescence markers push: Cases A.4 +============================================ + +Mercurial pushes obsolescences markers relevant to the "pushed-set", the set of +all changesets that requested to be "in sync" after the push (even if they are +already on both side). + +This test belongs to a series of tests checking such set is properly computed +and applied. this does not tests "obsmarkers" discovery capabilities. + +Category A: simple cases +Testcase 4: Push in the middle of the obsolescence chain + +A.4 Push in the middle of the obsolescence chain +================================================ + +.. (Where we show that we should not push the marker without the successors) +.. +.. {{{ +.. B ◔ +.. | +.. A⇠ø⇠○ A' +.. |/ +.. ● O +.. }}} +.. +.. Markers exist from: +.. +.. * `A ø⇠○ A'` +.. * chain from A +.. +.. Command runs: +.. +.. * hg push -r B +.. +.. Expected exchange: +.. +.. * Chain from A +.. +.. Expected Exclude: +.. +.. * `Ai ø⇠○ A'` + +Setup +----- + + $ . $TESTDIR/testlib/exchange-obsmarker-util.sh + +initial + + $ setuprepos A.4 + creating test repo for test case A.4 + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A0 + $ mkcommit B + $ hg update 0 + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ mkcommit A1 + created new head + $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `getid 'desc(A0)'` + $ hg debugobsolete `getid 'desc(A0)'` `getid 'desc(A1)'` + $ hg log -G --hidden + @ e5ea8f9c7314 (draft): A1 + | + | o 06055a7959d4 (draft): B + | | + | x 28b51eb45704 (draft): A0 + |/ + o a9bdc8b26820 (public): O + + $ inspect_obsmarkers + obsstore content + ================ + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 5d69322fad9eb1ba8f8f2c2312346ed347fdde76 + 06055a7959d4128e6e3bccfd01482e83a2db8a3a fd3e5712c9c2d216547d7a1b87ac815ee1fb7542 + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 cf518031fa753e9b049d727e6b0e19f645bab38f + obshashrange + ============ + rev node index size depth obshash + 2 06055a7959d4 0 3 3 000000000000 + 1 28b51eb45704 0 2 2 5d69322fad9e + 3 e5ea8f9c7314 0 2 2 cf518031fa75 + 2 06055a7959d4 2 1 3 000000000000 + 1 28b51eb45704 1 1 2 5d69322fad9e + 0 a9bdc8b26820 0 1 1 000000000000 + 3 e5ea8f9c7314 1 1 2 cf518031fa75 + $ cd .. + $ cd .. + +Actual Test for first version +----------------------------- + + $ dotest A.4 B -f + ## Running testcase A.4 + # testing echange of "B" (06055a7959d4) + ## initial state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing "B" from main to pushdest + pushing to pushdest + searching for changes + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 2 changesets with 2 changes to 2 files + remote: 1 new obsolescence markers + ## post push state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling "06055a7959d4" from main into pulldest + pulling from main + searching for changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 2 files + 1 new obsolescence markers + (run 'hg update' to get a working copy) + ## post pull state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-obsmarkers-case-A5.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-exchange-obsmarkers-case-A5.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,151 @@ +============================================ +Testing obsolescence markers push: Cases A.5 +============================================ + +Mercurial pushes obsolescences markers relevant to the "pushed-set", the set of +all changesets that requested to be "in sync" after the push (even if they are +already on both side). + +This test belongs to a series of tests checking such set is properly computed +and applied. This does not tests "obsmarkers" discovery capabilities. + +Category A: simple cases +TestCase 5: partial reordering + +A.5 partial reordering +====================== + +.. +.. {{{ +.. B ø⇠⇠ +.. | ⇡ +.. A ø⇠⇠⇠○ A' +.. | ⇡/ +.. | ○ B' +.. |/ +.. ● O +.. }}} +.. +.. Marker exist from: +.. +.. * `Aø⇠○ A'` +.. * `Bø⇠○ B'` +.. +.. Command run: +.. +.. * hg push -r B +.. +.. Expected exchange: +.. +.. * `Bø⇠○ B'` +.. +.. Expected Exclude: +.. +.. * `Aø⇠○ A'` + +Setup +----- + + $ . $TESTDIR/testlib/exchange-obsmarker-util.sh + +initial + + $ setuprepos A.5 + creating test repo for test case A.5 + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A0 + $ mkcommit B0 + $ hg update 0 + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ mkcommit B1 + created new head + $ mkcommit A1 + $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `getid 'desc(A0)'` + $ hg debugobsolete `getid 'desc(B0)'` `getid 'desc(B1)'` + $ hg debugobsolete `getid 'desc(A0)'` `getid 'desc(A1)'` + $ hg log -G --hidden + @ 8c0a98c83722 (draft): A1 + | + o f6298a8ac3a4 (draft): B1 + | + | x 6e72f0a95b5e (draft): B0 + | | + | x 28b51eb45704 (draft): A0 + |/ + o a9bdc8b26820 (public): O + + $ inspect_obsmarkers + obsstore content + ================ + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 8c0a98c8372212c6efde4bfdcef006f27ff759d3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 5d69322fad9eb1ba8f8f2c2312346ed347fdde76 + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 fd3e5712c9c2d216547d7a1b87ac815ee1fb7542 + f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 91716bfd671b5a5854a47ac5d392edfdd25e431a + 8c0a98c8372212c6efde4bfdcef006f27ff759d3 6e8c8c71c47a2bfc27c7cf2b1f4174977ede9f21 + obshashrange + ============ + rev node index size depth obshash + 4 8c0a98c83722 0 3 3 70185b996296 + 3 f6298a8ac3a4 0 2 2 91716bfd671b + 4 8c0a98c83722 2 1 3 4d835a45c1e9 + 0 a9bdc8b26820 0 1 1 000000000000 + 3 f6298a8ac3a4 1 1 2 91716bfd671b + $ cd .. + $ cd .. + +Actual Test +----------- + + $ dotest A.5 B1 + ## Running testcase A.5 + # testing echange of "B1" (f6298a8ac3a4) + ## initial state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 8c0a98c8372212c6efde4bfdcef006f27ff759d3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing "B1" from main to pushdest + pushing to pushdest + searching for changes + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 1 changesets with 1 changes to 1 files + remote: 1 new obsolescence markers + ## post push state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 8c0a98c8372212c6efde4bfdcef006f27ff759d3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling "f6298a8ac3a4" from main into pulldest + pulling from main + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + 1 new obsolescence markers + (run 'hg update' to get a working copy) + ## post pull state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 8c0a98c8372212c6efde4bfdcef006f27ff759d3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-obsmarkers-case-A6.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-exchange-obsmarkers-case-A6.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,161 @@ +============================================ +Testing obsolescence markers push: Cases A.6 +============================================ + +Mercurial pushes obsolescences markers relevant to the "pushed-set", the set of +all changesets that requested to be "in sync" after the push (even if they are +already on both side). + +This test belongs to a series of tests checking such set is properly computed +and applied. This does not tests "obsmarkers" discovery capabilities. + +Category A: simple cases +TestCase 6: new markers between changesets already known on both side +Variants: +# a: explicit push +# b: bare push + +A.6 new markers between changesets already known on both side +============================================================== + +.. {{{ +.. A ◕⇠● B +.. |/ +.. ● O +.. }}} +.. +.. Marker exist from: +.. +.. * `A◕⇠● B` +.. +.. Command runs: +.. +.. * hg push -r B +.. * hg push +.. +.. Expected exchange: +.. +.. * `A◕⇠● B` + +Setup +----- + + $ . $TESTDIR/testlib/exchange-obsmarker-util.sh + +initial + + $ setuprepos A.6 + creating test repo for test case A.6 + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A0 + $ hg update -q 0 + $ mkcommit A1 + created new head + +make both changeset known in remote + + $ hg push -qf ../pushdest + $ hg push -qf ../pulldest + +create a marker after this + + $ hg debugobsolete `getid 'desc(A0)'` `getid 'desc(A1)'` + $ hg log -G --hidden + @ e5ea8f9c7314 (draft): A1 + | + | x 28b51eb45704 (draft): A0 + |/ + o a9bdc8b26820 (public): O + + $ inspect_obsmarkers + obsstore content + ================ + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0000000000000000000000000000000000000000 + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 3bc2ee626e11a7cf8fee7a66d069271e17d5a597 + obshashrange + ============ + rev node index size depth obshash + 2 e5ea8f9c7314 0 2 2 3bc2ee626e11 + 0 a9bdc8b26820 0 1 1 000000000000 + 2 e5ea8f9c7314 1 1 2 3bc2ee626e11 + $ cd .. + $ cd .. + + $ cp -R A.6 A.6.a + $ cp -R A.6 A.6.b + +Actual Test (explicit push version) +----------------------------------- + + $ dotest A.6.a A1 + ## Running testcase A.6.a + # testing echange of "A1" (e5ea8f9c7314) + ## initial state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing "A1" from main to pushdest + pushing to pushdest + searching for changes + no changes found + remote: 1 new obsolescence markers + ## post push state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling "e5ea8f9c7314" from main into pulldest + pulling from main + no changes found + 1 new obsolescence markers + ## post pull state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + +Actual Test (bare push version) +------------------------------- + + $ dotest A.6.b + ## Running testcase A.6.b + ## initial state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing from main to pushdest + pushing to pushdest + searching for changes + no changes found + remote: 1 new obsolescence markers + ## post push state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling from main into pulldest + pulling from main + searching for changes + no changes found + 1 new obsolescence markers + ## post pull state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-obsmarkers-case-A7.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-exchange-obsmarkers-case-A7.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,103 @@ +============================================ +Testing obsolescence markers push: Cases A.7 +============================================ + +Mercurial pushes obsolescences markers relevant to the "pushed-set", the set of +all changesets that requested to be "in sync" after the push (even if they are +already on both side). + +This test belongs to a series of tests checking such set is properly computed +and applied. This does not tests "obsmarkers" discovery capabilities. + +Category A: simple cases +TestCase 7: markers one non targeted common changeset + +A.7 non targeted common changeset +================================= + +.. {{{ +.. ⇠◕ A +.. | +.. ● O +.. }}} +.. +.. Markers exist from: +.. +.. * Chain from A +.. +.. Command run: +.. +.. * hg push -r O +.. +.. Expected exchange: +.. +.. * ø + +Setup +----- + + $ . $TESTDIR/testlib/exchange-obsmarker-util.sh + +Initial + + $ setuprepos A.7 + creating test repo for test case A.7 + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A + $ hg push -q ../pushdest + $ hg push -q ../pulldest + $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `getid 'desc(A)'` + $ hg log -G --hidden + @ f5bc6836db60 (draft): A + | + o a9bdc8b26820 (public): O + + $ inspect_obsmarkers + obsstore content + ================ + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 + f5bc6836db60e308a17ba08bf050154ba9c4fad7 50656e04a95ecdfed94659dd61f663b2caa55e98 + obshashrange + ============ + rev node index size depth obshash + 1 f5bc6836db60 0 2 2 50656e04a95e + 0 a9bdc8b26820 0 1 1 000000000000 + 1 f5bc6836db60 1 1 2 50656e04a95e + $ cd .. + $ cd .. + +Actual Test +----------------------------------- + + $ dotest A.7 O + ## Running testcase A.7 + # testing echange of "O" (a9bdc8b26820) + ## initial state + # obstore: main + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing "O" from main to pushdest + pushing to pushdest + searching for changes + no changes found + ## post push state + # obstore: main + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pulling "a9bdc8b26820" from main into pulldest + pulling from main + no changes found + ## post pull state + # obstore: main + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-obsmarkers-case-B1.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-exchange-obsmarkers-case-B1.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,115 @@ +============================================ +Testing obsolescence markers push: Cases B.1 +============================================ + +Mercurial pushes obsolescences markers relevant to the "pushed-set", the set of +all changesets that requested to be "in sync" after the push (even if they are +already on both side). + +This test belongs to a series of tests checking such set is properly computed +and applied. This does not tests "obsmarkers" discovery capabilities. + +Category B: pruning case +TestCase 1: Prune on non-targeted common changeset + +B.1 Prune on non-targeted common changeset +========================================== + +.. {{{ +.. ⊗ B +.. | +.. ◕ A +.. | +.. ● O +.. }}} +.. +.. Marker exist from: +.. +.. * B (prune) +.. +.. Command runs: +.. +.. * hg push -r O +.. +.. Expected exclude: +.. +.. * B (prune) + +Setup +----- + + $ . $TESTDIR/testlib/exchange-obsmarker-util.sh + +Initial + + $ setuprepos B.1 + creating test repo for test case B.1 + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A + $ mkcommit B + +make both changeset known in remote + + $ hg push -qf ../pushdest + $ hg push -qf ../pulldest + +create prune marker + + $ hg prune -qd '0 0' . + $ hg log -G --hidden + x f6fbb35d8ac9 (draft): B + | + @ f5bc6836db60 (draft): A + | + o a9bdc8b26820 (public): O + + $ inspect_obsmarkers + obsstore content + ================ + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 + f5bc6836db60e308a17ba08bf050154ba9c4fad7 926d9d84b97b3483891ae983990ad87c1f7827e9 + f6fbb35d8ac958bbe70035e4c789c18471cdc0af e041f7ff1c7bd5501c7ab602baa35f0873128021 + obshashrange + ============ + rev node index size depth obshash + 1 f5bc6836db60 0 2 2 926d9d84b97b + 0 a9bdc8b26820 0 1 1 000000000000 + 1 f5bc6836db60 1 1 2 926d9d84b97b + $ cd .. + $ cd .. + +Actual Test +----------- + + $ dotest B.1 O + ## Running testcase B.1 + # testing echange of "O" (a9bdc8b26820) + ## initial state + # obstore: main + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing "O" from main to pushdest + pushing to pushdest + searching for changes + no changes found + ## post push state + # obstore: main + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pulling "a9bdc8b26820" from main into pulldest + pulling from main + no changes found + ## post pull state + # obstore: main + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-obsmarkers-case-B2.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-exchange-obsmarkers-case-B2.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,145 @@ +============================================ +Testing obsolescence markers push: Cases B.2 +============================================ + +Mercurial pushes obsolescences markers relevant to the "pushed-set", the set of +all changesets that requested to be "in sync" after the push (even if they are +already on both side). + +This test belongs to a series of tests checking such set is properly computed +and applied. This does not tests "obsmarkers" discovery capabilities. + +Category B: pruning case +TestCase 2: Prune on targeted common changeset +Variants: +# a: explicite push +# b: bare push + +B.2 Pruned changeset on head: nothing pushed +============================================ + +.. {{{ +.. ⊗ A +.. | +.. ● O +.. }}} +.. +.. Marker exist from: +.. +.. * A (prune) +.. +.. Command run: +.. +.. * hg push -r O +.. * hg push +.. +.. Expected exchange: +.. +.. * prune marker for A + +Setup +----- + + $ . $TESTDIR/testlib/exchange-obsmarker-util.sh + +Initial + + $ setuprepos B.2 + creating test repo for test case B.2 + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A + $ hg prune -qd '0 0' . + $ hg log -G --hidden + x f5bc6836db60 (draft): A + | + @ a9bdc8b26820 (public): O + + $ inspect_obsmarkers + obsstore content + ================ + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 52a5380bc04783a9ad43bb2ab2f47a02ef02adcc + f5bc6836db60e308a17ba08bf050154ba9c4fad7 c5a567339e205e8cc4c494e4fb82944daaec449c + obshashrange + ============ + rev node index size depth obshash + 0 a9bdc8b26820 0 1 1 52a5380bc047 + $ cd .. + $ cd .. + + $ cp -R B.2 B.2.a + $ cp -R B.2 B.2.b + +Actual Test (explicit push version) +----------------------------------- + + $ dotest B.2.a O + ## Running testcase B.2.a + # testing echange of "O" (a9bdc8b26820) + ## initial state + # obstore: main + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing "O" from main to pushdest + pushing to pushdest + searching for changes + no changes found + remote: 1 new obsolescence markers + ## post push state + # obstore: main + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling "a9bdc8b26820" from main into pulldest + pulling from main + no changes found + 1 new obsolescence markers + ## post pull state + # obstore: main + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + +Actual Test (bare push version) +----------------------------------- + + $ dotest B.2.b + ## Running testcase B.2.b + ## initial state + # obstore: main + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing from main to pushdest + pushing to pushdest + searching for changes + no changes found + remote: 1 new obsolescence markers + ## post push state + # obstore: main + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling from main into pulldest + pulling from main + searching for changes + no changes found + 1 new obsolescence markers + ## post pull state + # obstore: main + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-obsmarkers-case-B3.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-exchange-obsmarkers-case-B3.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,129 @@ +============================================ +Testing obsolescence markers push: Cases B.3 +============================================ + +Mercurial pushes obsolescences markers relevant to the "pushed-set", the set of +all changesets that requested to be "in sync" after the push (even if they are +already on both side). + +This test belongs to a series of tests checking such set is properly computed +and applied. This does not tests "obsmarkers" discovery capabilities. + +Category B: pruning case +TestCase 3: Pruned changeset on non-pushed part of the history + +B.3 Pruned changeset on non-pushed part of the history +====================================================== + +.. {{{ +.. ⊗ C +.. | +.. ○ B +.. | ◔ A +.. |/ +.. ● O +.. }}} +.. +.. Marker exists from: +.. +.. * C (prune) +.. +.. Commands run: +.. +.. * hg push -r A +.. +.. Expected exchange: +.. +.. * ø +.. +.. Expected exclude: +.. +.. * chain from B + +Setup +----- + + $ . $TESTDIR/testlib/exchange-obsmarker-util.sh + +initial + + $ setuprepos B.3 + creating test repo for test case B.3 + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A + $ hg up --quiet 0 + $ mkcommit B + created new head + $ mkcommit C + $ hg prune -qd '0 0' . + $ hg log -G --hidden + x e56289ab6378 (draft): C + | + @ 35b183996678 (draft): B + | + | o f5bc6836db60 (draft): A + |/ + o a9bdc8b26820 (public): O + + $ inspect_obsmarkers + obsstore content + ================ + e56289ab6378dc752fd7965f8bf66b58bda740bd 0 {35b1839966785d5703a01607229eea932db42f87} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0000000000000000000000000000000000000000 + 35b1839966785d5703a01607229eea932db42f87 631ab4cd02ffa1d144dc8f32a18be574076031e3 + e56289ab6378dc752fd7965f8bf66b58bda740bd 47c9d2d8db5d4b1eddd0266329ad260ccc84772c + obshashrange + ============ + rev node index size depth obshash + 2 35b183996678 0 2 2 631ab4cd02ff + 1 f5bc6836db60 0 2 2 000000000000 + 2 35b183996678 1 1 2 631ab4cd02ff + 0 a9bdc8b26820 0 1 1 000000000000 + 1 f5bc6836db60 1 1 2 000000000000 + $ cd .. + $ cd .. + +Actual Test +----------------------------------- + + $ dotest B.3 A + ## Running testcase B.3 + # testing echange of "A" (f5bc6836db60) + ## initial state + # obstore: main + e56289ab6378dc752fd7965f8bf66b58bda740bd 0 {35b1839966785d5703a01607229eea932db42f87} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing "A" from main to pushdest + pushing to pushdest + searching for changes + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 1 changesets with 1 changes to 1 files + ## post push state + # obstore: main + e56289ab6378dc752fd7965f8bf66b58bda740bd 0 {35b1839966785d5703a01607229eea932db42f87} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pulling "f5bc6836db60" from main into pulldest + pulling from main + 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) + ## post pull state + # obstore: main + e56289ab6378dc752fd7965f8bf66b58bda740bd 0 {35b1839966785d5703a01607229eea932db42f87} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-obsmarkers-case-B4.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-exchange-obsmarkers-case-B4.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,177 @@ +============================================ +Testing obsolescence markers push: Cases B.4 +============================================ + +Mercurial pushes obsolescences markers relevant to the "pushed-set", the set of +all changesets that requested to be "in sync" after the push (even if they are +already on both side). + +This test belongs to a series of tests checking such set is properly computed +and applied. This does not tests "obsmarkers" discovery capabilities. + +Category B: pruning case +TestCase 4: Pruned changeset on common part of the history +Variants: +# a: explicite push +# b: bare push + +B.4 Pruned changeset on common part of history +============================================= + +.. {{{ +.. ⊗ C +.. | ● B +.. | | +.. | ● A +.. |/ +.. ● O +.. }}} +.. +.. Marker exist from: +.. +.. * C (prune) +.. +.. Command run: +.. +.. * hg push -r B +.. * hg push +.. +.. Expected exchange: +.. +.. * prune for C + +Setup +----- + + $ . $TESTDIR/testlib/exchange-obsmarker-util.sh + +initial + + $ setuprepos B.4 + creating test repo for test case B.4 + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A + $ mkcommit B + $ hg phase --public . + $ hg push ../pushdest + pushing to ../pushdest + searching for changes + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 2 changesets with 2 changes to 2 files + $ hg push ../pulldest + pushing to ../pulldest + searching for changes + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 2 changesets with 2 changes to 2 files + $ hg update -q 0 + $ mkcommit C + created new head + $ hg prune -qd '0 0' . + $ hg log -G --hidden + x 7f7f229b13a6 (draft): C + | + | o f6fbb35d8ac9 (public): B + | | + | o f5bc6836db60 (public): A + |/ + @ a9bdc8b26820 (public): O + + $ inspect_obsmarkers + obsstore content + ================ + 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 1900882e85db10a1dc5bc7748f436a8a834356c6 + f5bc6836db60e308a17ba08bf050154ba9c4fad7 c27e764c783f451ef3aa40daf2a3795e6674cd06 + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 907beff79fdff2b82b5d3bed7989107a6d744508 + 7f7f229b13a629a5b20581c6cb723f4e2ca54bed c27e764c783f451ef3aa40daf2a3795e6674cd06 + obshashrange + ============ + rev node index size depth obshash + 2 f6fbb35d8ac9 0 3 3 000000000000 + 1 f5bc6836db60 0 2 2 000000000000 + 0 a9bdc8b26820 0 1 1 1900882e85db + 1 f5bc6836db60 1 1 2 000000000000 + 2 f6fbb35d8ac9 2 1 3 000000000000 + $ cd .. + $ cd .. + + $ cp -R B.4 B.4.a + $ cp -R B.4 B.4.b + +Actual Test (explicit push version) +----------------------------------- + + $ dotest B.4.a O + ## Running testcase B.4.a + # testing echange of "O" (a9bdc8b26820) + ## initial state + # obstore: main + 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing "O" from main to pushdest + pushing to pushdest + searching for changes + no changes found + remote: 1 new obsolescence markers + ## post push state + # obstore: main + 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling "a9bdc8b26820" from main into pulldest + pulling from main + no changes found + 1 new obsolescence markers + ## post pull state + # obstore: main + 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + +Actual Test (bare push version) +----------------------------------- + + $ dotest B.4.b + ## Running testcase B.4.b + ## initial state + # obstore: main + 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing from main to pushdest + pushing to pushdest + searching for changes + no changes found + remote: 1 new obsolescence markers + ## post push state + # obstore: main + 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling from main into pulldest + pulling from main + searching for changes + no changes found + 1 new obsolescence markers + ## post pull state + # obstore: main + 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-obsmarkers-case-B5.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-exchange-obsmarkers-case-B5.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,168 @@ +============================================ +Testing obsolescence markers push: Cases B.5 +============================================ + +Mercurial pushes obsolescences markers relevant to the "pushed-set", the set of +all changesets that requested to be "in sync" after the push (even if they are +already on both side). + +This test belongs to a series of tests checking such set is properly computed +and applied. This does not tests "obsmarkers" discovery capabilities. + +Category B: pruning case +TestCase 5: Push of a children of changeset which successors is pruned + +B.5 Push of a children of changeset which successors is pruned +============================================================== + +.. This case Mirror A.4, with pruned changeset successors. +.. +.. {{{ +.. C ◔ +.. | +.. B⇠ø⇠⊗ B' +.. | | +.. A ø⇠○ A' +.. |/ +.. ● +.. }}} +.. +.. Marker exist from: +.. +.. * `A ø⇠○ A'` +.. * `B ø⇠○ B'` +.. * chain from B +.. * `B' is pruned` +.. +.. Command run: +.. +.. * hg push -r C +.. +.. Expected exchange: +.. +.. * chain from B +.. +.. Expected exclude: +.. +.. * `A ø⇠○ A'` +.. * `B ø⇠○ B'` +.. * `B' prune` + +Setup +----- + + $ . $TESTDIR/testlib/exchange-obsmarker-util.sh + +initial + + $ setuprepos B.5 + creating test repo for test case B.5 + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A0 + $ mkcommit B0 + $ mkcommit C + $ hg up --quiet 0 + $ mkcommit A1 + created new head + $ mkcommit B1 + $ hg debugobsolete --hidden `getid 'desc(A0)'` `getid 'desc(A1)'` + $ hg debugobsolete --hidden aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `getid 'desc(B0)'` + $ hg debugobsolete --hidden `getid 'desc(B0)'` `getid 'desc(B1)'` + $ hg prune -qd '0 0' 'desc(B1)' + $ hg log -G --hidden + x 069b05c3876d (draft): B1 + | + @ e5ea8f9c7314 (draft): A1 + | + | o 1d0f3cd25300 (draft): C + | | + | x 6e72f0a95b5e (draft): B0 + | | + | x 28b51eb45704 (draft): A0 + |/ + o a9bdc8b26820 (public): O + + $ inspect_obsmarkers + obsstore content + ================ + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 069b05c3876d56f62895e853a501ea58ea85f68d 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 069b05c3876d56f62895e853a501ea58ea85f68d 0 {e5ea8f9c73143125d36658e90ef70c6d2027a5b7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0000000000000000000000000000000000000000 + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 13bd00d88332fcd3fe634ed42f9d35c9cfc06398 + 1d0f3cd253006f014c7687a78abbc9287db4101d 01d985a82467333a4de7a5b4e8a0de3286f8bda8 + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 d2b1159bcf3694aabc3674785b1859544c35357d + 069b05c3876d56f62895e853a501ea58ea85f68d d00e3201fcf83a1bf42e70757f07b45bdd77a220 + obshashrange + ============ + rev node index size depth obshash + 3 1d0f3cd25300 0 4 4 000000000000 + 3 1d0f3cd25300 2 2 4 000000000000 + 1 28b51eb45704 0 2 2 000000000000 + 4 e5ea8f9c7314 0 2 2 d2b1159bcf36 + 3 1d0f3cd25300 3 1 4 000000000000 + 1 28b51eb45704 1 1 2 000000000000 + 2 6e72f0a95b5e 2 1 3 13bd00d88332 + 0 a9bdc8b26820 0 1 1 000000000000 + 4 e5ea8f9c7314 1 1 2 d2b1159bcf36 + $ cd .. + $ cd .. + +Actual Test (explicit push version) +----------------------------------- + + $ dotest B.5 C -f + ## Running testcase B.5 + # testing echange of "C" (1d0f3cd25300) + ## initial state + # obstore: main + 069b05c3876d56f62895e853a501ea58ea85f68d 0 {e5ea8f9c73143125d36658e90ef70c6d2027a5b7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 069b05c3876d56f62895e853a501ea58ea85f68d 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing "C" from main to pushdest + pushing to pushdest + searching for changes + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 3 changesets with 3 changes to 3 files + remote: 1 new obsolescence markers + ## post push state + # obstore: main + 069b05c3876d56f62895e853a501ea58ea85f68d 0 {e5ea8f9c73143125d36658e90ef70c6d2027a5b7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 069b05c3876d56f62895e853a501ea58ea85f68d 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling "1d0f3cd25300" from main into pulldest + pulling from main + searching for changes + adding changesets + adding manifests + adding file changes + added 3 changesets with 3 changes to 3 files + 1 new obsolescence markers + (run 'hg update' to get a working copy) + ## post pull state + # obstore: main + 069b05c3876d56f62895e853a501ea58ea85f68d 0 {e5ea8f9c73143125d36658e90ef70c6d2027a5b7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 069b05c3876d56f62895e853a501ea58ea85f68d 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-obsmarkers-case-B6.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-exchange-obsmarkers-case-B6.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,129 @@ +============================================ +Testing obsolescence markers push: Cases B.6 +============================================ + +Mercurial pushes obsolescences markers relevant to the "pushed-set", the set of +all changesets that requested to be "in sync" after the push (even if they are +already on both side). + +This test belongs to a series of tests checking such set is properly computed +and applied. This does not tests "obsmarkers" discovery capabilities. + +Category B: pruning case +TestCase 6: Pruned changeset with precursors not in pushed set + +B.6 Pruned changeset with precursors not in pushed set +====================================================== + +.. {{{ +.. B ø⇠⊗ B' +.. | | +.. A ○ | +.. |/ +.. ● O +.. }}} +.. +.. Marker exist from: +.. +.. * `B ø⇠⊗ B'` +.. * B' prune +.. +.. Command run: +.. +.. * hg push -r O +.. +.. Expected exchange: +.. +.. * `B ø⇠⊗ B'` +.. * B' prune + +Setup +----- + + $ . $TESTDIR/testlib/exchange-obsmarker-util.sh + +Initial + + $ setuprepos B.6 + creating test repo for test case B.6 + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A + $ mkcommit B0 + $ hg up --quiet 0 + $ mkcommit B1 + created new head + $ hg debugobsolete `getid 'desc(B0)'` `getid 'desc(B1)'` + $ hg prune -qd '0 0' . + $ hg log -G --hidden + x f6298a8ac3a4 (draft): B1 + | + | x 962ecf6b1afc (draft): B0 + | | + | o f5bc6836db60 (draft): A + |/ + @ a9bdc8b26820 (public): O + + $ inspect_obsmarkers + obsstore content + ================ + 962ecf6b1afc94e15c7e48fdfb76ef8abd11372b f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 86e41541149f4b6cccc5fd131d744d8e83a681e5 + f5bc6836db60e308a17ba08bf050154ba9c4fad7 f2e05412d3f1d5bc1ae647cf9efc43e0399c26ca + 962ecf6b1afc94e15c7e48fdfb76ef8abd11372b 974507d1c466d0aa86d288836194339ed3b98736 + f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 04e03a8959d8a39984e6a8f4a16fba975b364747 + obshashrange + ============ + rev node index size depth obshash + 1 f5bc6836db60 0 2 2 000000000000 + 0 a9bdc8b26820 0 1 1 86e41541149f + 1 f5bc6836db60 1 1 2 000000000000 + $ cd .. + $ cd .. + +Actual Test +------------------------------------- + + $ dotest B.6 O + ## Running testcase B.6 + # testing echange of "O" (a9bdc8b26820) + ## initial state + # obstore: main + 962ecf6b1afc94e15c7e48fdfb76ef8abd11372b f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing "O" from main to pushdest + pushing to pushdest + searching for changes + no changes found + remote: 2 new obsolescence markers + ## post push state + # obstore: main + 962ecf6b1afc94e15c7e48fdfb76ef8abd11372b f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 962ecf6b1afc94e15c7e48fdfb76ef8abd11372b f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling "a9bdc8b26820" from main into pulldest + pulling from main + no changes found + 2 new obsolescence markers + ## post pull state + # obstore: main + 962ecf6b1afc94e15c7e48fdfb76ef8abd11372b f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 962ecf6b1afc94e15c7e48fdfb76ef8abd11372b f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + 962ecf6b1afc94e15c7e48fdfb76ef8abd11372b f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f6298a8ac3a4b78bbeae5f1d3dc5bc3c3812f0f3 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-obsmarkers-case-B7.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-exchange-obsmarkers-case-B7.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,111 @@ +============================================ +Testing obsolescence markers push: Cases B.7 +============================================ + +Mercurial pushes obsolescences markers relevant to the "pushed-set", the set of +all changesets that requested to be "in sync" after the push (even if they are +already on both side). + +This test belongs to a series of tests checking such set is properly computed +and applied. This does not tests "obsmarkers" discovery capabilities. + +Category B: pruning case +TestCase 7: Prune on non-targeted common changeset + +B.7 Prune above non-targeted common changeset +============================================= + +.. (very similar to B1, but the prune changeset is unknown on remote) +.. +.. {{{ +.. ⊗ B +.. | +.. ◕ A +.. | +.. ● O +.. }}} +.. +.. Marker exist from: +.. +.. * B (prune) +.. +.. Command runs: +.. +.. * hg push -r O +.. +.. Expected exclude: +.. +.. * B (prune) + +Setup +----- + + $ . $TESTDIR/testlib/exchange-obsmarker-util.sh + +Initial + + $ setuprepos B.7 + creating test repo for test case B.7 + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A + $ hg push -q ../pushdest + $ hg push -q ../pulldest + $ mkcommit B + $ hg prune -qd '0 0' . + $ hg log -G --hidden + x f6fbb35d8ac9 (draft): B + | + @ f5bc6836db60 (draft): A + | + o a9bdc8b26820 (public): O + + $ inspect_obsmarkers + obsstore content + ================ + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 + f5bc6836db60e308a17ba08bf050154ba9c4fad7 926d9d84b97b3483891ae983990ad87c1f7827e9 + f6fbb35d8ac958bbe70035e4c789c18471cdc0af e041f7ff1c7bd5501c7ab602baa35f0873128021 + obshashrange + ============ + rev node index size depth obshash + 1 f5bc6836db60 0 2 2 926d9d84b97b + 0 a9bdc8b26820 0 1 1 000000000000 + 1 f5bc6836db60 1 1 2 926d9d84b97b + $ cd .. + $ cd .. + +Actual Test +------------------------------------- + + $ dotest B.7 O + ## Running testcase B.7 + # testing echange of "O" (a9bdc8b26820) + ## initial state + # obstore: main + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing "O" from main to pushdest + pushing to pushdest + searching for changes + no changes found + ## post push state + # obstore: main + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pulling "a9bdc8b26820" from main into pulldest + pulling from main + no changes found + ## post pull state + # obstore: main + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-obsmarkers-case-C1.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-exchange-obsmarkers-case-C1.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,168 @@ +============================================ +Testing obsolescence markers push: Cases C.1 +============================================ + +Mercurial pushes obsolescences markers relevant to the "pushed-set", the set of +all changesets that requested to be "in sync" after the push (even if they are +already on both side). + +This test belongs to a series of tests checking such set is properly computed +and applied. This does not tests "obsmarkers" discovery capabilities. + +Category C: advanced case +TestCase 1: Multiple pruned changeset atop each other +Variants: +# a: explicite push +# b: bare push + +C.1 Multiple pruned changeset atop each other +============================================= + +.. {{{ +.. ⊗ B +.. | +.. ⊗ A +.. | +.. ● O +.. }}} +.. +.. Marker exist from: +.. +.. * A (prune) +.. * B (prune) +.. +.. Commands run: +.. +.. * hg push -r O +.. * hg push +.. +.. Expected exchange: +.. +.. * A (prune) +.. * B (prune) + +Setup +----- + + $ . $TESTDIR/testlib/exchange-obsmarker-util.sh + +Initial + + $ setuprepos C.1 + creating test repo for test case C.1 + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A + $ mkcommit B + $ hg prune -qd '0 0' '.~1' + 1 new unstable changesets + $ hg prune -qd '0 0' . + $ hg log -G --hidden + x f6fbb35d8ac9 (draft): B + | + x f5bc6836db60 (draft): A + | + @ a9bdc8b26820 (public): O + + $ inspect_obsmarkers + obsstore content + ================ + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 1ce18e5a71f78d443a80c819f2f7197c4706af70 + f5bc6836db60e308a17ba08bf050154ba9c4fad7 92af733686ce7e0469d8b2b87b4612a4c2d33468 + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 3800aeba3728457abb9c508c94f6abc59e698c55 + obshashrange + ============ + rev node index size depth obshash + 0 a9bdc8b26820 0 1 1 1ce18e5a71f7 + $ cd .. + $ cd .. + + $ cp -R C.1 C.1.a + $ cp -R C.1 C.1.b + +Actual Test (explicit push) +--------------------------- + + $ dotest C.1.a O + ## Running testcase C.1.a + # testing echange of "O" (a9bdc8b26820) + ## initial state + # obstore: main + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing "O" from main to pushdest + pushing to pushdest + searching for changes + no changes found + remote: 2 new obsolescence markers + ## post push state + # obstore: main + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling "a9bdc8b26820" from main into pulldest + pulling from main + no changes found + 2 new obsolescence markers + ## post pull state + # obstore: main + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + +Actual Test (bare push) +------------------------------------- + + $ dotest C.1.b + ## Running testcase C.1.b + ## initial state + # obstore: main + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing from main to pushdest + pushing to pushdest + searching for changes + no changes found + remote: 2 new obsolescence markers + ## post push state + # obstore: main + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling from main into pulldest + pulling from main + searching for changes + no changes found + 2 new obsolescence markers + ## post pull state + # obstore: main + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f6fbb35d8ac958bbe70035e4c789c18471cdc0af 0 {f5bc6836db60e308a17ba08bf050154ba9c4fad7} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-obsmarkers-case-C2.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-exchange-obsmarkers-case-C2.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,190 @@ +============================================ +Testing obsolescence markers push: Cases C.2 +============================================ + +Mercurial pushes obsolescences markers relevant to the "pushed-set", the set of +all changesets that requested to be "in sync" after the push (even if they are +already on both side). + +This test belongs to a series of tests checking such set is properly computed +and applied. This does not tests "obsmarkers" discovery capabilities. + +Category C: advanced case +TestCase 2: Pruned changeset on precursors +Variants: +# a: explicite push +# b: bare push + +C.2 Pruned changeset on precursors +================================== + +.. {{{ +.. B ⊗ +.. | +.. A ø⇠◔ A' +.. |/ +.. ● O +.. }}} +.. +.. Marker exist from: +.. +.. * A' succeed to A +.. * B (prune) +.. +.. Command run: +.. +.. * hg push -r A' +.. * hg push +.. +.. Expected exchange: +.. +.. * `A ø⇠o A'` +.. * B (prune) + +Setup +----- + + $ . $TESTDIR/testlib/exchange-obsmarker-util.sh + +Itinial + + $ setuprepos C.2 + creating test repo for test case C.2 + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A0 + $ mkcommit B + $ hg prune -qd '0 0' . + $ hg update -q 0 + $ mkcommit A1 + created new head + $ hg debugobsolete `getid 'desc(A0)'` `getid 'desc(A1)'` + $ hg log -G --hidden + @ e5ea8f9c7314 (draft): A1 + | + | x 06055a7959d4 (draft): B + | | + | x 28b51eb45704 (draft): A0 + |/ + o a9bdc8b26820 (public): O + + $ inspect_obsmarkers + obsstore content + ================ + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 72f95b7b9fa12243aeb90433d211f2c38263da31 + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 58ecf9a107b10986d88da605eb0d03b7f24ae486 + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 289cb0d058c81c763eca8bb438657dba9a7ba646 + obshashrange + ============ + rev node index size depth obshash + 3 e5ea8f9c7314 0 2 2 289cb0d058c8 + 0 a9bdc8b26820 0 1 1 000000000000 + 3 e5ea8f9c7314 1 1 2 289cb0d058c8 + $ cd .. + $ cd .. + + $ cp -R C.2 C.2.a + $ cp -R C.2 C.2.b + +Actual Test (explicit push) +--------------------------- + + $ dotest C.2.a A1 + ## Running testcase C.2.a + # testing echange of "A1" (e5ea8f9c7314) + ## initial state + # obstore: main + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing "A1" from main to pushdest + pushing to pushdest + searching for changes + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 1 changesets with 1 changes to 1 files + remote: 2 new obsolescence markers + ## post push state + # obstore: main + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling "e5ea8f9c7314" from main into pulldest + pulling from main + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + 2 new obsolescence markers + (run 'hg update' to get a working copy) + ## post pull state + # obstore: main + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + +Actual Test (bare push) +------------------------------------- + + $ dotest C.2.b + ## Running testcase C.2.b + ## initial state + # obstore: main + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing from main to pushdest + pushing to pushdest + searching for changes + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 1 changesets with 1 changes to 1 files + remote: 2 new obsolescence markers + ## post push state + # obstore: main + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling from main into pulldest + pulling from main + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + 2 new obsolescence markers + (run 'hg update' to get a working copy) + ## post pull state + # obstore: main + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-obsmarkers-case-C3.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-exchange-obsmarkers-case-C3.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,189 @@ +============================================ +Testing obsolescence markers push: Cases C.3 +============================================ + +Mercurial pushes obsolescences markers relevant to the "pushed-set", the set of +all changesets that requested to be "in sync" after the push (even if they are +already on both side). + +This test belongs to a series of tests checking such set is properly computed +and applied. This does not tests "obsmarkers" discovery capabilities. + +Category C: advanced case +TestCase 3: Pruned changeset on precursors of another pruned one +Variants: +# a: explicite push +# b: bare push + +C.3 Pruned changeset on precursors of another pruned one +======================================================== + +.. {{{ +.. B ⊗ +.. | +.. A ø⇠⊗ A' +.. |/ +.. ● O +.. }}} +.. +.. Marker exist from: +.. +.. * A' succeed to A +.. * A' (prune +.. * B (prune) +.. +.. Command run: +.. +.. * hg push -r A' +.. * hg push +.. +.. Expected exchange: +.. +.. * `A ø⇠⊗ A'` +.. * A (prune) +.. * B (prune) + +Setup +----- + + $ . $TESTDIR/testlib/exchange-obsmarker-util.sh + +Initial + + $ setuprepos C.3 + creating test repo for test case C.3 + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A0 + $ mkcommit B + $ hg prune -qd '0 0' . + $ hg update -q 0 + $ mkcommit A1 + created new head + $ hg debugobsolete `getid 'desc(A0)'` `getid 'desc(A1)'` + $ hg prune -qd '0 0' . + $ hg log -G --hidden + x e5ea8f9c7314 (draft): A1 + | + | x 06055a7959d4 (draft): B + | | + | x 28b51eb45704 (draft): A0 + |/ + @ a9bdc8b26820 (public): O + + $ inspect_obsmarkers + obsstore content + ================ + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 40be80b35671116f2c61ef25797806536a6eb5a0 + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f beac7228bbe708bc7c9181c3c27f8a17f21dbd9f + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 8b648bd67281e9e525919285ac7b3bb2836c2f02 + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 dcd2b566ad0983333be704afdc205066e1a6b742 + obshashrange + ============ + rev node index size depth obshash + 0 a9bdc8b26820 0 1 1 40be80b35671 + $ cd .. + $ cd .. + + $ cp -R C.3 C.3.a + $ cp -R C.3 C.3.b + +Actual Test (explicit push) +--------------------------- + + $ dotest C.3.a O + ## Running testcase C.3.a + # testing echange of "O" (a9bdc8b26820) + ## initial state + # obstore: main + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing "O" from main to pushdest + pushing to pushdest + searching for changes + no changes found + remote: 3 new obsolescence markers + ## post push state + # obstore: main + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling "a9bdc8b26820" from main into pulldest + pulling from main + no changes found + 3 new obsolescence markers + ## post pull state + # obstore: main + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + +Actual Test (bare push) +------------------------------------- + + $ dotest C.3.b + ## Running testcase C.3.b + ## initial state + # obstore: main + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing from main to pushdest + pushing to pushdest + searching for changes + no changes found + remote: 3 new obsolescence markers + ## post push state + # obstore: main + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling from main into pulldest + pulling from main + searching for changes + no changes found + 3 new obsolescence markers + ## post pull state + # obstore: main + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-obsmarkers-case-C4.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-exchange-obsmarkers-case-C4.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,141 @@ +============================================ +Testing obsolescence markers push: Cases C.4 +============================================ + +Mercurial pushes obsolescences markers relevant to the "pushed-set", the set of +all changesets that requested to be "in sync" after the push (even if they are +already on both side). + +This test belongs to a series of tests checking such set is properly computed +and applied. This does not tests "obsmarkers" discovery capabilities. + +Category C: advanced case +TestCase 4: multiple successors, one is pruned + +C.4 multiple successors, one is pruned +====================================== + +.. (A similarish situation can appends with split markers see the Z section) +.. +.. {{{ +.. A +.. B ○⇢ø⇠⊗ C +.. \|/ +.. ● O +.. }}} +.. +.. Marker exist from: +.. +.. * `A ø⇠○ B` +.. * `A ø⇠○ C` +.. * C (prune) +.. +.. Command run: +.. +.. * hg push -r O +.. +.. Expected exchange: +.. +.. * `A ø⇠○ C` +.. * C (prune) +.. +.. Expected exclude: +.. +.. * `A ø⇠○ B` + +Setup +----- + + $ . $TESTDIR/testlib/exchange-obsmarker-util.sh + +Implemented as the non-split version + + $ setuprepos C.4 + creating test repo for test case C.4 + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A + $ hg update -q 0 + $ mkcommit B + created new head + $ hg update -q 0 + $ mkcommit C + created new head + $ hg debugobsolete --hidden `getid 'desc(A)'` `getid 'desc(B)'` + $ hg debugobsolete --hidden `getid 'desc(A)'` `getid 'desc(C)'` + $ hg prune -qd '0 0' . + $ hg log -G --hidden + x 7f7f229b13a6 (draft): C + | + | o 35b183996678 (draft): B + |/ + | x f5bc6836db60 (draft): A + |/ + @ a9bdc8b26820 (public): O + + $ inspect_obsmarkers + obsstore content + ================ + f5bc6836db60e308a17ba08bf050154ba9c4fad7 35b1839966785d5703a01607229eea932db42f87 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f5bc6836db60e308a17ba08bf050154ba9c4fad7 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 a9c02d134f5b98acc74d1dc4eb28fd59f958a2bd + f5bc6836db60e308a17ba08bf050154ba9c4fad7 619b4d13bd9878f04d7208dcfcf1e89da826f6be + 35b1839966785d5703a01607229eea932db42f87 ddeb7b7a87378f59cecb36d5146df0092b6b3327 + 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 58ef2e726c5bd89bceffb6243294b38eadbf3d60 + obshashrange + ============ + rev node index size depth obshash + 2 35b183996678 0 2 2 2a098b4a877f + 2 35b183996678 1 1 2 916e804c50de + 0 a9bdc8b26820 0 1 1 a9c02d134f5b + $ cd .. + $ cd .. + +Actual Test +----------- + + $ dotest C.4 O + ## Running testcase C.4 + # testing echange of "O" (a9bdc8b26820) + ## initial state + # obstore: main + 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f5bc6836db60e308a17ba08bf050154ba9c4fad7 35b1839966785d5703a01607229eea932db42f87 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f5bc6836db60e308a17ba08bf050154ba9c4fad7 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing "O" from main to pushdest + pushing to pushdest + searching for changes + no changes found + remote: 2 new obsolescence markers + ## post push state + # obstore: main + 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f5bc6836db60e308a17ba08bf050154ba9c4fad7 35b1839966785d5703a01607229eea932db42f87 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f5bc6836db60e308a17ba08bf050154ba9c4fad7 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f5bc6836db60e308a17ba08bf050154ba9c4fad7 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling "a9bdc8b26820" from main into pulldest + pulling from main + no changes found + 2 new obsolescence markers + ## post pull state + # obstore: main + 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f5bc6836db60e308a17ba08bf050154ba9c4fad7 35b1839966785d5703a01607229eea932db42f87 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f5bc6836db60e308a17ba08bf050154ba9c4fad7 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f5bc6836db60e308a17ba08bf050154ba9c4fad7 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + f5bc6836db60e308a17ba08bf050154ba9c4fad7 7f7f229b13a629a5b20581c6cb723f4e2ca54bed 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-obsmarkers-case-D1.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-exchange-obsmarkers-case-D1.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,187 @@ +============================================ +Testing obsolescence markers push: Cases D.1 +============================================ + +Mercurial pushes obsolescences markers relevant to the "pushed-set", the set of +all changesets that requested to be "in sync" after the push (even if they are +already on both side). + +This test belongs to a series of tests checking such set is properly computed +and applied. This does not tests "obsmarkers" discovery capabilities. + +Category D: Partial Information Case +TestCase 1: Pruned changeset based on missing precursor of something not present +Variants: +# a: explicite push +# b: bare push + +D.1 Pruned changeset based on missing precursor of something not present +======================================================================== + +.. {{{ +.. B ⊗ +.. | +.. A ◌⇠◔ A' +.. |/ +.. ● O +.. }}} +.. +.. Markers exist from: +.. +.. * `A ø⇠o A'` +.. * B (prune) +.. +.. Command run: +.. +.. * hg push -r A' +.. * hg push +.. +.. Expected exchange: +.. +.. * `A ø⇠o A'` +.. * B (prune) + +Setup +----- + + $ . $TESTDIR/testlib/exchange-obsmarker-util.sh + +initial + + $ setuprepos D.1 + creating test repo for test case D.1 + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A0 + $ mkcommit B + $ hg up -q 0 + $ mkcommit A1 + created new head + $ hg debugobsolete `getid 'desc(A0)'` `getid 'desc(A1)'` + $ hg prune -d '0 0' 'desc(B)' + 1 changesets pruned + $ hg strip --hidden -q 'desc(A0)' + $ hg log -G --hidden + @ e5ea8f9c7314 (draft): A1 + | + o a9bdc8b26820 (public): O + + $ inspect_obsmarkers + obsstore content + ================ + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 289cb0d058c81c763eca8bb438657dba9a7ba646 + obshashrange + ============ + rev node index size depth obshash + 1 e5ea8f9c7314 0 2 2 289cb0d058c8 + 0 a9bdc8b26820 0 1 1 000000000000 + 1 e5ea8f9c7314 1 1 2 289cb0d058c8 + $ cd .. + $ cd .. + + $ cp -R D.1 D.1.a + $ cp -R D.1 D.1.b + +Actual Test (explicit push) +--------------------------- + + $ dotest D.1.a A1 + ## Running testcase D.1.a + # testing echange of "A1" (e5ea8f9c7314) + ## initial state + # obstore: main + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing "A1" from main to pushdest + pushing to pushdest + searching for changes + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 1 changesets with 1 changes to 1 files + remote: 2 new obsolescence markers + ## post push state + # obstore: main + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling "e5ea8f9c7314" from main into pulldest + pulling from main + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + 2 new obsolescence markers + (run 'hg update' to get a working copy) + ## post pull state + # obstore: main + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + +Actual Test (base push) +--------------------------- + + $ dotest D.1.b + ## Running testcase D.1.b + ## initial state + # obstore: main + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing from main to pushdest + pushing to pushdest + searching for changes + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 1 changesets with 1 changes to 1 files + remote: 2 new obsolescence markers + ## post push state + # obstore: main + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling from main into pulldest + pulling from main + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + 2 new obsolescence markers + (run 'hg update' to get a working copy) + ## post pull state + # obstore: main + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + 06055a7959d4128e6e3bccfd01482e83a2db8a3a 0 {28b51eb45704506b5c603decd6bf7ac5e0f6a52f} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-obsmarkers-case-D2.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-exchange-obsmarkers-case-D2.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,122 @@ +============================================ +Testing obsolescence markers push: Cases D.2 +============================================ + +Mercurial pushes obsolescences markers relevant to the "pushed-set", the set of +all changesets that requested to be "in sync" after the push (even if they are +already on both side). + +This test belongs to a series of tests checking such set is properly computed +and applied. This does not tests "obsmarkers" discovery capabilities. + +Category D: Partial Information Case +TestCase 2: missing prune target (prune in "pushed set") + +D.2 missing prune target (prune in "pushed set") +================================================ + +.. {{{ +.. A ø⇠✕ A' +.. |/ +.. ● O +.. }}} +.. +.. Marker exist from: +.. +.. * A' succeed to A +.. * A' (prune) +.. +.. Command runs: +.. +.. * hg push +.. +.. Expected exchange: +.. +.. * `A ø⇠o A'` +.. * A' (prune) + +Setup +----- + + $ . $TESTDIR/testlib/exchange-obsmarker-util.sh + +Initial + + $ setuprepos D.2 + creating test repo for test case D.2 + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A0 + $ hg up -q 0 + $ mkcommit A1 + created new head + $ hg debugobsolete `getid 'desc(A0)'` `getid 'desc(A1)'` + $ hg prune --date '0 0' . + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + working directory now at a9bdc8b26820 + 1 changesets pruned + $ hg strip --hidden -q 'desc(A1)' + $ hg log -G --hidden + x 28b51eb45704 (draft): A0 + | + @ a9bdc8b26820 (public): O + + $ inspect_obsmarkers + obsstore content + ================ + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 554c0b12f7d9fff20cb904c26e12eee337e3309c + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 5c81c58ce0a8ad61dd9cf4c6949846b5990af30d + obshashrange + ============ + rev node index size depth obshash + 0 a9bdc8b26820 0 1 1 554c0b12f7d9 + $ cd .. + $ cd .. + +Actual Test +----------- + + $ dotest D.2 + ## Running testcase D.2 + ## initial state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing from main to pushdest + pushing to pushdest + searching for changes + no changes found + remote: 2 new obsolescence markers + ## post push state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling from main into pulldest + pulling from main + searching for changes + no changes found + 2 new obsolescence markers + ## post pull state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 {a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-obsmarkers-case-D3.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-exchange-obsmarkers-case-D3.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,122 @@ +============================================ +Testing obsolescence markers push: Cases D.3 +============================================ + +Mercurial pushes obsolescences markers relevant to the "pushed-set", the set of +all changesets that requested to be "in sync" after the push (even if they are +already on both side). + +This test belongs to a series of tests checking such set is properly computed +and applied. This does not tests "obsmarkers" discovery capabilities. + +Category D: Partial Information Case +TestCase 3: missing prune target (prune not in "pushed set") + +D.3 missing prune target (prune not in "pushed set") +==================================================== + +.. {{{ +.. A ø⇠✕ A' +.. | | +.. | ○ B +.. |/ +.. ● O +.. }}} +.. +.. Marker exist from: +.. +.. * `A ø⇠o A'` +.. * A' (prune) +.. +.. Command runs: +.. +.. * hg push +.. +.. Expected exclude: +.. +.. * `A ø⇠o A'` +.. * A' (prune) + +Setup +----- + + $ . $TESTDIR/testlib/exchange-obsmarker-util.sh + +initial + + $ setuprepos D.3 + creating test repo for test case D.3 + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A0 + $ hg up -q 0 + $ mkcommit B + created new head + $ mkcommit A1 + $ hg debugobsolete `getid 'desc(A0)'` `getid 'desc(A1)'` + $ hg prune -d '0 0' . + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + working directory now at 35b183996678 + 1 changesets pruned + $ hg strip --hidden -q 'desc(A1)' + $ hg log -G --hidden + @ 35b183996678 (draft): B + | + | x 28b51eb45704 (draft): A0 + |/ + o a9bdc8b26820 (public): O + + $ inspect_obsmarkers + obsstore content + ================ + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 6aa67a7b4baa6fb41b06aed38d5b1201436546e2 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6aa67a7b4baa6fb41b06aed38d5b1201436546e2 0 {35b1839966785d5703a01607229eea932db42f87} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0000000000000000000000000000000000000000 + 35b1839966785d5703a01607229eea932db42f87 65a9f21dff0702355e973a8f31d3b3b7e59376fb + obshashrange + ============ + rev node index size depth obshash + 2 35b183996678 0 2 2 65a9f21dff07 + 2 35b183996678 1 1 2 65a9f21dff07 + 0 a9bdc8b26820 0 1 1 000000000000 + $ cd .. + $ cd .. + +Actual Test +----------- + + $ dotest D.3 O + ## Running testcase D.3 + # testing echange of "O" (a9bdc8b26820) + ## initial state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 6aa67a7b4baa6fb41b06aed38d5b1201436546e2 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6aa67a7b4baa6fb41b06aed38d5b1201436546e2 0 {35b1839966785d5703a01607229eea932db42f87} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing "O" from main to pushdest + pushing to pushdest + searching for changes + no changes found + ## post push state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 6aa67a7b4baa6fb41b06aed38d5b1201436546e2 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6aa67a7b4baa6fb41b06aed38d5b1201436546e2 0 {35b1839966785d5703a01607229eea932db42f87} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pulling "a9bdc8b26820" from main into pulldest + pulling from main + no changes found + ## post pull state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 6aa67a7b4baa6fb41b06aed38d5b1201436546e2 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6aa67a7b4baa6fb41b06aed38d5b1201436546e2 0 {35b1839966785d5703a01607229eea932db42f87} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + diff -r dad84c052463 -r 080b9384d741 tests/test-exchange-obsmarkers-case-D4.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-exchange-obsmarkers-case-D4.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,153 @@ +============================================ +Testing obsolescence markers push: Cases D.4 +============================================ + +Mercurial pushes obsolescences markers relevant to the "pushed-set", the set of +all changesets that requested to be "in sync" after the push (even if they are +already on both side). + +This test belongs to a series of tests checking such set is properly computed +and applied. This does not tests "obsmarkers" discovery capabilities. + +Category D: Partial Information Case +TestCase 4: Unknown changeset in between known changesets + +D.4 Unknown changeset in between known one +========================================== + +.. Mostly a clarification case +.. +.. {{{ +.. B ø⇠◌⇠○ B'' +.. | | +.. A ø⇠◌⇠◔ A' +.. \ / +.. ● O +.. +.. }}} +.. +.. Should be treated as A.3 case: +.. +.. {{{ +.. +.. B ø⇠○ B'' +.. | | +.. A ø⇠◔ A' +.. |/ +.. ● O +.. +.. }}} + +Setup +----- + + $ . $TESTDIR/testlib/exchange-obsmarker-util.sh + +initial + + $ setuprepos D.4 + creating test repo for test case D.4 + - pulldest + - main + - pushdest + cd into `main` and proceed with env setup + $ cd main + $ mkcommit A0 + $ mkcommit B0 + $ hg update -q 0 + $ mkcommit A1 + created new head + $ mkcommit B1 + $ hg debugobsolete `getid 'desc(A0)'` aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `getid 'desc(A1)'` + $ hg debugobsolete `getid 'desc(B0)'` bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + $ hg debugobsolete bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb `getid 'desc(B1)'` + $ hg log -G --hidden + @ 069b05c3876d (draft): B1 + | + o e5ea8f9c7314 (draft): A1 + | + | x 6e72f0a95b5e (draft): B0 + | | + | x 28b51eb45704 (draft): A0 + |/ + o a9bdc8b26820 (public): O + + $ inspect_obsmarkers + obsstore content + ================ + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 069b05c3876d56f62895e853a501ea58ea85f68d 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + obshashtree + =========== + a9bdc8b26820b1b87d585b82eb0ceb4a2ecdbc04 0000000000000000000000000000000000000000 + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f 0000000000000000000000000000000000000000 + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 0000000000000000000000000000000000000000 + e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0aacc2f86e8fca29f2d5fd8d0790644620acd58a + 069b05c3876d56f62895e853a501ea58ea85f68d 40b98bc2b5b1152416ea8e9665ae1c6a3ce32ba0 + obshashrange + ============ + rev node index size depth obshash + 4 069b05c3876d 0 3 3 a2b2331da650 + 3 e5ea8f9c7314 0 2 2 0aacc2f86e8f + 4 069b05c3876d 2 1 3 901f118d4333 + 0 a9bdc8b26820 0 1 1 000000000000 + 3 e5ea8f9c7314 1 1 2 0aacc2f86e8f + $ cd .. + $ cd .. + +Actual Test +----------- + + $ dotest D.4 A1 + ## Running testcase D.4 + # testing echange of "A1" (e5ea8f9c7314) + ## initial state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 069b05c3876d56f62895e853a501ea58ea85f68d 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + # obstore: pulldest + ## pushing "A1" from main to pushdest + pushing to pushdest + searching for changes + remote: adding changesets + remote: adding manifests + remote: adding file changes + remote: added 1 changesets with 1 changes to 1 files + remote: 2 new obsolescence markers + ## post push state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 069b05c3876d56f62895e853a501ea58ea85f68d 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + ## pulling "e5ea8f9c7314" from main into pulldest + pulling from main + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + 2 new obsolescence markers + (run 'hg update' to get a working copy) + ## post pull state + # obstore: main + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + 6e72f0a95b5e01a7504743aa941f69cb1fbef8b0 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 069b05c3876d56f62895e853a501ea58ea85f68d 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pushdest + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + # obstore: pulldest + 28b51eb45704506b5c603decd6bf7ac5e0f6a52f aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa e5ea8f9c73143125d36658e90ef70c6d2027a5b7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-partial-C1.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-partial-C1.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,79 @@ +==================================== +Testing head checking code: Case C-1 +==================================== + +Mercurial checks for the introduction of multiple heads on push. Evolution +comes into play to detect if existing heads on the server are being replaced by +some of the new heads we push. + +This test file is part of a series of tests checking this behavior. + +Category C: checking case were the branch is only partially obsoleted. +TestCase 1: 2 changeset branch, only the head is rewritten + +.. old-state: +.. +.. * 2 changeset branch +.. +.. new-state: +.. +.. * 1 new changesets branches superceeding only the head of the old one +.. * base of the old branch is still alive +.. +.. expected-result: +.. +.. * push denied +.. +.. graph-summary: +.. +.. B ø⇠◔ B' +.. | | +.. A ○ | +.. |/ +.. ○ + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd server + $ mkcommit B0 + $ cd ../client + $ hg pull + pulling from $TESTTMP/server + 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) + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit B1 + created new head + $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"` + $ hg log -G --hidden + @ 25c56d33e4c4 (draft): B1 + | + | x d73caddc5533 (draft): B0 + | | + | o 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + + +Actual testing +-------------- + + $ hg push + pushing to $TESTTMP/server + searching for changes + abort: push creates new remote head 25c56d33e4c4! + (merge or see 'hg help push' for details about pushing new heads) + [255] diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-partial-C2.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-partial-C2.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,82 @@ +==================================== +Testing head checking code: Case C-2 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category C: case were the branch is only partially obsoleted +TestCase 2: 2 changeset branch, only the base is rewritten + +.. old-state: +.. +.. * 2 changeset branch +.. +.. new-state: +.. +.. * 1 new changesets branches superceeding only the base of the old one +.. * The old branch is still alive (base is obsolete, head is alive) +.. +.. expected-result: +.. +.. * push denied +.. +.. graph-summary: +.. +.. B ○ +.. | +.. A ø⇠◔ A' +.. |/ +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir C2 + $ cd C2 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd server + $ mkcommit B0 + $ cd ../client + $ hg pull + pulling from $TESTTMP/C2/server (glob) + 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) + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit A1 + created new head + $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` + $ hg log -G --hidden + @ f6082bc4ffef (draft): A1 + | + | o d73caddc5533 (draft): B0 + | | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push --rev 'desc(A1)' + pushing to $TESTTMP/C2/server (glob) + searching for changes + abort: push creates new remote head f6082bc4ffef! + (merge or see 'hg help push' for details about pushing new heads) + [255] + + $ cd ../.. diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-partial-C3.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-partial-C3.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,82 @@ +==================================== +Testing head checking code: Case C-3 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category C: case were the branch is only partially obsoleted +TestCase 3: 2 changeset branch, only the head is pruned + +.. old-state: +.. +.. * 2 changeset branch +.. +.. new-state: +.. +.. * old head is pruned +.. * 1 new unrelated branch +.. +.. expected-result: +.. +.. * push denied +.. +.. graph-summary: +.. +.. B ⊗ +.. | +.. A ◔ ◔ C +.. |/ +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir C3 + $ cd C3 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd server + $ mkcommit B0 + $ cd ../client + $ hg pull + pulling from $TESTTMP/C3/server (glob) + 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) + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit C0 + created new head + $ hg debugobsolete --record-parents `getid "desc(B0)"` + $ hg log -G --hidden + @ 0f88766e02d6 (draft): C0 + | + | x d73caddc5533 (draft): B0 + | | + | o 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push + pushing to $TESTTMP/C3/server (glob) + searching for changes + abort: push creates new remote head 0f88766e02d6! + (merge or see 'hg help push' for details about pushing new heads) + [255] + + $ cd ../.. diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-partial-C4.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-partial-C4.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,82 @@ +==================================== +Testing head checking code: Case C-4 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category C: case were the branch is only partially obsoleted +TestCase 4: 2 changeset branch, only the base is pruned + +.. old-state: +.. +.. * 2 changeset branch +.. +.. new-state: +.. +.. * old base is pruned +.. * 1 new unrelated branch +.. +.. expected-result: +.. +.. * push denied +.. +.. graph-summary: +.. +.. B ◔ +.. | +.. A ⊗ ◔ C +.. |/ +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir C4 + $ cd C4 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd server + $ mkcommit B0 + $ cd ../client + $ hg pull + pulling from $TESTTMP/C4/server (glob) + 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) + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit C0 + created new head + $ hg debugobsolete --record-parents `getid "desc(A0)"` + $ hg log -G --hidden + @ 0f88766e02d6 (draft): C0 + | + | o d73caddc5533 (draft): B0 + | | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push --rev 'desc(C0)' + pushing to $TESTTMP/C4/server (glob) + searching for changes + abort: push creates new remote head 0f88766e02d6! + (merge or see 'hg help push' for details about pushing new heads) + [255] + + $ cd ../.. diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-pruned-B1.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-pruned-B1.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,72 @@ +==================================== +Testing head checking code: Case B-1 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category B: simple case involving pruned changesets +TestCase 1: single pruned changeset + +.. old-state: +.. +.. * 1 changeset branch +.. +.. new-state: +.. +.. * old branch is pruned +.. * 1 new unrelated branch +.. +.. expected-result: +.. +.. * push allowed +.. +.. graph-summary: +.. +.. ◔ B +.. | +.. A ⊗ | +.. |/ +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir B1 + $ cd B1 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd client + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit B0 + created new head + $ hg debugobsolete --record-parents `getid "desc(A0)"` + $ hg log -G --hidden + @ 74ff5441d343 (draft): B0 + | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push + pushing to $TESTTMP/B1/server (glob) + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files (+1 heads) + 1 new obsolescence markers + + $ cd ../.. diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-pruned-B2.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-pruned-B2.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,85 @@ +==================================== +Testing head checking code: Case B-2 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category B: simple case involving pruned changesets +TestCase 2: multi-changeset branch, head is pruned, rest is superceeded + +.. old-state: +.. +.. * 2 changeset branch +.. +.. new-state: +.. +.. * old head is pruned +.. * 1 new branch succeeding to the other changeset in the old branch +.. +.. expected-result: +.. +.. * push allowed +.. +.. graph-summary: +.. +.. B ⊗ +.. | +.. A ø⇠◔ A' +.. |/ +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir B2 + $ cd B2 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd server + $ mkcommit B0 + $ cd ../client + $ hg pull + pulling from $TESTTMP/B2/server (glob) + 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) + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit A1 + created new head + $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` + $ hg debugobsolete --record-parents `getid "desc(B0)"` + $ hg log -G --hidden + @ f6082bc4ffef (draft): A1 + | + | x d73caddc5533 (draft): B0 + | | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push + pushing to $TESTTMP/B2/server (glob) + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files (+1 heads) + 2 new obsolescence markers + + $ cd ../.. diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-pruned-B3.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-pruned-B3.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,86 @@ +==================================== +Testing head checking code: Case B-3 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category B: simple case involving pruned changesets +TestCase 3: multi-changeset branch, other is pruned, rest is superceeded + +.. old-state: +.. +.. * 2 changeset branch +.. +.. new-state: +.. +.. * old head is superceeded +.. * old other is pruned +.. +.. expected-result: +.. +.. * push allowed +.. +.. graph-summary: +.. +.. B ø⇠◔ B' +.. | | +.. A ⊗ | +.. |/ +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir B3 + $ cd B3 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd server + $ mkcommit B0 + $ cd ../client + $ hg pull + pulling from $TESTTMP/B3/server (glob) + 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) + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit B1 + created new head + $ hg debugobsolete --record-parents `getid "desc(A0)"` + $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"` + $ hg log -G --hidden + @ 25c56d33e4c4 (draft): B1 + | + | x d73caddc5533 (draft): B0 + | | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push + pushing to $TESTTMP/B3/server (glob) + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files (+1 heads) + 2 new obsolescence markers + + $ cd ../.. + diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-pruned-B4.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-pruned-B4.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,86 @@ +==================================== +Testing head checking code: Case B-4 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category B: simple case involving pruned changesets +TestCase 4: multi-changeset branch, all are pruned + +.. old-state: +.. +.. * 2 changeset branch +.. +.. new-state: +.. +.. * old branch is pruned +.. +.. expected-result: +.. +.. * push allowed +.. +.. graph-summary: +.. +.. B ⊗ +.. | +.. A ⊗ +.. | +.. | ◔ C +.. |/ +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir B4 + $ cd B4 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd server + $ mkcommit B0 + $ cd ../client + $ hg pull + pulling from $TESTTMP/B4/server (glob) + 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) + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit C0 + created new head + $ hg debugobsolete --record-parents `getid "desc(A0)"` + $ hg debugobsolete --record-parents `getid "desc(B0)"` + $ hg log -G --hidden + @ 0f88766e02d6 (draft): C0 + | + | x d73caddc5533 (draft): B0 + | | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push + pushing to $TESTTMP/B4/server (glob) + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files (+1 heads) + 2 new obsolescence markers + + $ cd ../.. diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-pruned-B5.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-pruned-B5.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,92 @@ +==================================== +Testing head checking code: Case B-5 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category B: simple case involving pruned changesets +TestCase 5: multi-changeset branch, mix of pruned and superceeded + +.. old-state: +.. +.. * 3 changeset branch +.. +.. new-state: +.. +.. * old head is pruned +.. * old mid is superceeded +.. * old root is pruned +.. +.. expected-result: +.. +.. * push allowed +.. +.. graph-summary: +.. +.. B ⊗ +.. | +.. A ø⇠◔ A' +.. | | +.. B ⊗ | +.. |/ +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir B5 + $ cd B5 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd server + $ mkcommit B0 + $ mkcommit C0 + $ cd ../client + $ hg pull + pulling from $TESTTMP/B5/server (glob) + 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) + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit B1 + created new head + $ hg debugobsolete --record-parents `getid "desc(A0)"` + $ hg debugobsolete `getid "desc(B0)"` `getid "desc(B1)"` + $ hg debugobsolete --record-parents `getid "desc(C0)"` + $ hg log -G --hidden + @ 25c56d33e4c4 (draft): B1 + | + | x 821fb21d0dd2 (draft): C0 + | | + | x d73caddc5533 (draft): B0 + | | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push + pushing to $TESTTMP/B5/server (glob) + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files (+1 heads) + 3 new obsolescence markers + + $ cd ../.. diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-pruned-B6.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-pruned-B6.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,78 @@ +==================================== +Testing head checking code: Case B-6 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category B: simple case involving pruned changesets +TestCase 6: single changesets, pruned then superseeded (on a new changeset) + +.. old-state: +.. +.. * 1 changeset branch +.. +.. new-state: +.. +.. * old branch is rewritten onto another one, +.. * the new version is then pruned. +.. +.. expected-result: +.. +.. * push allowed +.. +.. graph-summary: +.. +.. A ø⇠⊗ A' +.. | | +.. | ◔ B +.. |/ +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir B6 + $ cd B6 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd client + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit B0 + created new head + $ mkcommit A1 + $ hg up 'desc(B0)' + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ hg debugobsolete `getid "desc(A0)"` `getid "desc(A1)"` + $ hg debugobsolete --record-parents `getid "desc(A1)"` + $ hg log -G --hidden + x ba93660aff8d (draft): A1 + | + @ 74ff5441d343 (draft): B0 + | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push + pushing to $TESTTMP/B6/server (glob) + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files (+1 heads) + 2 new obsolescence markers + + $ cd ../.. diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-pruned-B7.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-pruned-B7.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,77 @@ +==================================== +Testing head checking code: Case B-7 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category B: simple case involving pruned changesets +TestCase 7: single changesets, pruned then superseeded (on an existing changeset) + +.. old-state: +.. +.. * 1 changeset branch +.. +.. new-state: +.. +.. * old branch is rewritten onto the common set, +.. * the new version is then pruned. +.. +.. expected-result: +.. +.. * push allowed +.. +.. graph-summary: +.. +.. A ø⇠⊗ A' +.. B ◔ | | +.. \|/ +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir B7 + $ cd B7 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd client + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit B0 + created new head + $ mkcommit A1 + $ hg up 'desc(B0)' + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ hg debugobsolete `getid "desc(A0)"` `getid "desc(A1)"` + $ hg debugobsolete --record-parents `getid "desc(A1)"` + $ hg log -G --hidden + x ba93660aff8d (draft): A1 + | + @ 74ff5441d343 (draft): B0 + | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push + pushing to $TESTTMP/B7/server (glob) + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files (+1 heads) + 2 new obsolescence markers + + $ cd ../.. diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-pruned-B8.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-pruned-B8.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,98 @@ +==================================== +Testing head checking code: Case B-2 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category B: simple case involving pruned changesets +TestCase 2: multi-changeset branch, head is pruned, rest is superceeded, through other + +.. old-state: +.. +.. * 2 changeset branch +.. +.. new-state: +.. +.. * old head is rewritten then pruned +.. * 1 new branch succeeding to the other changeset in the old branch (through another obsolete branch) +.. +.. expected-result: +.. +.. * push allowed +.. +.. graph-summary: +.. +.. B ø⇠⊗ B' +.. | | A' +.. A ø⇠ø⇠◔ A'' +.. |/ / +.. | / +.. |/ +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir B8 + $ cd B8 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd server + $ mkcommit B0 + $ cd ../client + $ hg pull + pulling from $TESTTMP/B8/server (glob) + 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) + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit A1 + created new head + $ mkcommit B1 + $ hg up 0 + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ mkcommit A2 + created new head + $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` + $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"` + $ hg debugobsolete --record-parents `getid "desc(B1)"` + $ hg debugobsolete `getid "desc(A1)" ` `getid "desc(A2)"` + $ hg log -G --hidden + @ c1f8d089020f (draft): A2 + | + | x 262c8c798096 (draft): B1 + | | + | x f6082bc4ffef (draft): A1 + |/ + | x d73caddc5533 (draft): B0 + | | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push + pushing to $TESTTMP/B8/server (glob) + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files (+1 heads) + 4 new obsolescence markers + + $ cd ../.. diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-superceed-A1.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-superceed-A1.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,69 @@ +==================================== +Testing head checking code: Case A-1 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category A: simple case involving a branch being superceeded by another. +TestCase 1: single-changeset branch + +.. old-state: +.. +.. * 1 changeset branch +.. +.. new-state: +.. +.. * 1 changeset branch succeeding to A +.. +.. expected-result: +.. +.. * push allowed +.. +.. graph-summary: +.. +.. A ø⇠◔ A' +.. |/ +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir A1 + $ cd A1 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd client + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit A1 + created new head + $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` + $ hg log -G --hidden + @ f6082bc4ffef (draft): A1 + | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push + pushing to $TESTTMP/A1/server (glob) + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files (+1 heads) + 1 new obsolescence markers + + $ cd ../.. diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-superceed-A2.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-superceed-A2.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,87 @@ +==================================== +Testing head checking code: Case A-2 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category A: simple case involving a branch being superceeded by another. +TestCase 2: multi-changeset branch + +.. old-state: +.. +.. * 1 branch with 2 changesets +.. +.. new-state: +.. +.. * another 2-changeset branch succeeding the old one +.. +.. expected-result: +.. +.. * push allowed +.. +.. graph-summary: +.. +.. B ø⇠◔ B' +.. | | +.. A ø⇠◔ A' +.. |/ +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir A2 + $ cd A2 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd server + $ mkcommit B0 + $ cd ../client + $ hg pull + pulling from $TESTTMP/A2/server (glob) + 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) + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit A1 + created new head + $ mkcommit B1 + $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` + $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"` + $ hg log -G --hidden + @ 262c8c798096 (draft): B1 + | + o f6082bc4ffef (draft): A1 + | + | x d73caddc5533 (draft): B0 + | | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push + pushing to $TESTTMP/A2/server (glob) + searching for changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 2 files (+1 heads) + 2 new obsolescence markers + + $ cd ../.. diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-superceed-A3.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-superceed-A3.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,90 @@ +==================================== +Testing head checking code: Case A-3 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category A: simple case involving a branch being superceeded by another. +TestCase 3: multi-changeset branch with reordering + +Push should be allowed +.. old-state: +.. +.. * 2 changeset branch +.. +.. new-state: +.. +.. * 2 changeset branch succeeding the old one with reordering +.. +.. expected-result: +.. +.. * push allowed +.. +.. graph-summary: +.. +.. B ø⇠⇠ +.. | ⇡ +.. A ø⇠⇠⇠○ A' +.. | ⇡/ +.. | ○ B' +.. |/ +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir A3 + $ cd A3 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd server + $ mkcommit B0 + $ cd ../client + $ hg pull + pulling from $TESTTMP/A3/server (glob) + 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) + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit B1 + created new head + $ mkcommit A1 + $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` + $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"` + $ hg log -G --hidden + @ c1c7524e9488 (draft): A1 + | + o 25c56d33e4c4 (draft): B1 + | + | x d73caddc5533 (draft): B0 + | | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push + pushing to $TESTTMP/A3/server (glob) + searching for changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 2 files (+1 heads) + 2 new obsolescence markers + + $ cd ../.. diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-superceed-A4.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-superceed-A4.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,74 @@ +==================================== +Testing head checking code: Case A-4 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category A: simple case involving a branch being superceeded by another. +TestCase 4: New changeset as children of the successor + +.. old-state: +.. +.. * 1-changeset branch +.. +.. new-state: +.. +.. * 2-changeset branch, first is a successor, but head is new +.. +.. expected-result: +.. +.. * push allowed +.. +.. graph-summary: +.. +.. ◔ B +.. | +.. A ø⇠◔ A' +.. |/ +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir A4 + $ cd A4 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd client + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit A1 + created new head + $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` + $ mkcommit B0 + $ hg log -G --hidden + @ f40ded968333 (draft): B0 + | + o f6082bc4ffef (draft): A1 + | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push + pushing to $TESTTMP/A4/server (glob) + searching for changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 2 files (+1 heads) + 1 new obsolescence markers + + $ cd ../../ diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-superceed-A5.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-superceed-A5.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,75 @@ +==================================== +Testing head checking code: Case A-5 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category A: simple case involving a branch being superceeded by another. +TestCase 5: New changeset as parent of the successor + +.. old-state: +.. +.. * 1-changeset branch +.. +.. new-state: +.. +.. * 2rchangeset branch, head is a successor, but other is new +.. +.. expected-result: +.. +.. * push allowed +.. +.. graph-summary: +.. +.. A ø⇠◔ A' +.. | | +.. | ◔ B +.. |/ +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir A5 + $ cd A5 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd client + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit B0 + created new head + $ mkcommit A1 + $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` + $ hg log -G --hidden + @ ba93660aff8d (draft): A1 + | + o 74ff5441d343 (draft): B0 + | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push + pushing to $TESTTMP/A5/server (glob) + searching for changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 2 files (+1 heads) + 1 new obsolescence markers + + $ cd ../.. + diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-superceed-A6.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-superceed-A6.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,98 @@ +==================================== +Testing head checking code: Case A-6 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category A: simple case involving a branch being superceeded by another. +TestCase 6: multi-changeset branch, split on multiple other, (base on its own branch), same number of head + +.. old-state: +.. +.. * 2 branch (1-changeset, and 2-changesets) +.. +.. new-state: +.. +.. * 1 new branch superceeding the base of the old-2-changesets-branch, +.. * 1 new changesets on the old-1-changeset-branch superceeding the head of the other +.. +.. expected-result: +.. +.. * push allowed +.. +.. graph-summary: +.. +.. B'◔⇢ø B +.. | | +.. A | ø⇠◔ A' +.. | |/ +.. C ● | +.. \| +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir A6 + $ cd A6 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd server + $ mkcommit B0 + $ hg up 0 + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ mkcommit C0 + created new head + $ cd ../client + $ hg pull + pulling from $TESTTMP/A6/server (glob) + 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) + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit A1 + created new head + $ hg up 'desc(C0)' + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit B1 + $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` + $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"` + $ hg log -G --hidden + @ d70a1f75a020 (draft): B1 + | + | o f6082bc4ffef (draft): A1 + | | + o | 0f88766e02d6 (draft): C0 + |/ + | x d73caddc5533 (draft): B0 + | | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push + pushing to $TESTTMP/A6/server (glob) + searching for changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 2 files (+1 heads) + 2 new obsolescence markers + + $ cd ../.. diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-superceed-A7.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-superceed-A7.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,98 @@ +==================================== +Testing head checking code: Case A-7 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category A: simple case involving a branch being superceeded by another. +TestCase 7: multi-changeset branch, split on multiple other, (head on its own branch), same number of head + +.. old-state: +.. +.. * 2 branch (1-changeset, and 2-changesets) +.. +.. new-state: +.. +.. * 1 new branch superceeding the head of the old-2-changesets-branch, +.. * 1 new changesets on the old-1-changeset-branch superceeding the base of the other +.. +.. expected-result: +.. +.. * push allowed +.. +.. graph-summary: +.. +.. B ø⇠◔ B' +.. | | +.. A'◔⇢ø | +.. | |/ +.. C ● | +.. \| +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir A7 + $ cd A7 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd server + $ mkcommit B0 + $ hg up 0 + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ mkcommit C0 + created new head + $ cd ../client + $ hg pull + pulling from $TESTTMP/A7/server (glob) + 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) + $ hg up 'desc(C0)' + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit A1 + $ hg up 0 + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ mkcommit B1 + created new head + $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` + $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"` + $ hg log -G --hidden + @ 25c56d33e4c4 (draft): B1 + | + | o a0802eb7fc1b (draft): A1 + | | + | o 0f88766e02d6 (draft): C0 + |/ + | x d73caddc5533 (draft): B0 + | | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push + pushing to $TESTTMP/A7/server (glob) + searching for changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 2 files (+1 heads) + 2 new obsolescence markers + + $ cd ../.. diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-superceed-A8.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-superceed-A8.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,79 @@ +==================================== +Testing head checking code: Case A-8 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category A: simple case involving a branch being superceeded by another. +TestCase 8: single-changeset branch indirect rewrite + +.. old-state: +.. +.. * 1-changeset branch +.. +.. new-state: +.. +.. * 1-changeset branch succeeding to A, through another unpushed changesets +.. +.. expected-result: +.. +.. * push allowed +.. +.. graph-summary: +.. +.. A' +.. A ø⇠ø⇠◔ A'' +.. |/ / +.. | / +.. |/ +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir A8 + $ cd A8 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd client + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit A1 + created new head + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit A2 + created new head + $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` + $ hg debugobsolete `getid "desc(A1)" ` `getid "desc(A2)"` + $ hg log -G --hidden + @ c1f8d089020f (draft): A2 + | + | x f6082bc4ffef (draft): A1 + |/ + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push + pushing to $TESTTMP/A8/server (glob) + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files (+1 heads) + 2 new obsolescence markers + + $ cd ../.. diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-unpushed-D1.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-unpushed-D1.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,77 @@ +==================================== +Testing head checking code: Case D-1 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category D: remote head is "obs-affected" locally, but result is not part of the push +TestCase 1: remote head is rewritten, but successors is not part of the push + +.. old-state: +.. +.. * 1 changeset branch +.. +.. new-state: +.. +.. * 1 changeset branch succeeding the old branch +.. * 1 new unrelated branch +.. +.. expected-result: +.. +.. * pushing only the unrelated branch: denied +.. +.. graph-summary: +.. +.. A ø⇠○ A' +.. |/ +.. | ◔ B +.. |/ +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir D1 + $ cd D1 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd client + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit A1 + created new head + $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit B0 + created new head + $ hg log -G --hidden + @ 74ff5441d343 (draft): B0 + | + | o f6082bc4ffef (draft): A1 + |/ + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push -r 'desc(B0)' + pushing to $TESTTMP/D1/server (glob) + searching for changes + abort: push creates new remote head 74ff5441d343! + (merge or see 'hg help push' for details about pushing new heads) + [255] + + $ cd ../.. + diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-unpushed-D2.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-unpushed-D2.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,93 @@ +==================================== +Testing head checking code: Case D-2 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category D: remote head is "obs-affected" locally, but result is not part of the push +TestCase 1: remote branch has 2 changes, head is pruned, other is rewritten but result is not pushed + +.. old-state: +.. +.. * 1 changeset branch +.. +.. new-state: +.. +.. * old head is pruned +.. * 1 new branch succeeding to the other changeset in the old branch +.. * 1 new unrelated branch +.. +.. expected-result: +.. +.. * push allowed +.. * pushing only the unrelated branch: denied +.. +.. graph-summary: +.. +.. B ⊗ +.. | +.. A ø⇠○ A' +.. |/ +.. | ◔ C +.. |/ +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir D2 + $ cd D2 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd server + $ mkcommit B0 + $ cd ../client + $ hg pull + pulling from $TESTTMP/D2/server (glob) + 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) + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit A1 + created new head + $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` + $ hg debugobsolete --record-parents `getid "desc(B0)"` + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit C0 + created new head + $ hg log -G --hidden + @ 0f88766e02d6 (draft): C0 + | + | o f6082bc4ffef (draft): A1 + |/ + | x d73caddc5533 (draft): B0 + | | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push --rev 'desc(C0)' + pushing to $TESTTMP/D2/server (glob) + searching for changes + abort: push creates new remote head 0f88766e02d6! + (merge or see 'hg help push' for details about pushing new heads) + [255] + + $ cd ../.. diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-unpushed-D3.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-unpushed-D3.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,110 @@ +==================================== +Testing head checking code: Case D-3 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category D: remote head is "obs-affected" locally, but result is not part of the push +TestCase 3: multi-changeset branch, split on multiple new others, only one of them is pushed + +.. old-state: +.. +.. * 2 changesets branch +.. +.. new-state: +.. +.. * 2 new branches, each superseding one changeset in the old one. +.. +.. expected-result: +.. +.. * pushing only one of the resulting branch (either of them) +.. * push denied +.. +.. graph-summary: +.. +.. B'◔⇢ø B +.. | | +.. A | ø⇠◔ A' +.. | |/ +.. \| +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir D3 + $ cd D3 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd server + $ mkcommit B0 + $ hg up 0 + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ cd ../client + $ hg pull + pulling from $TESTTMP/D3/server (glob) + 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) + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit A1 + created new head + $ hg up '0' + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit B1 + created new head + $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` + $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"` + $ hg log -G --hidden + @ 25c56d33e4c4 (draft): B1 + | + | o f6082bc4ffef (draft): A1 + |/ + | x d73caddc5533 (draft): B0 + | | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push --rev 'desc(A1)' + pushing to $TESTTMP/D3/server (glob) + searching for changes + abort: push creates new remote head f6082bc4ffef! + (merge or see 'hg help push' for details about pushing new heads) + [255] + $ hg push --rev 'desc(B1)' + pushing to $TESTTMP/D3/server (glob) + searching for changes + abort: push creates new remote head 25c56d33e4c4! + (merge or see 'hg help push' for details about pushing new heads) + [255] + +Extra testing +------------- + +In this case, even a bare push is creating more heads + + $ hg push + pushing to $TESTTMP/D3/server (glob) + searching for changes + abort: push creates new remote head 25c56d33e4c4! + (merge or see 'hg help push' for details about pushing new heads) + [255] + + $ cd ../.. diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-unpushed-D4.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-unpushed-D4.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,122 @@ +==================================== +Testing head checking code: Case D-4 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category D: remote head is "obs-affected" locally, but result is not part of the push +TestCase 4: multi-changeset branch, split on multiple other, (base on its own new branch) + +.. old-state: +.. +.. * 2 branch (1 changeset, and 2 changesets) +.. +.. new-state: +.. +.. * 1 new branch superceeding the base of the old-2-changesets-branch, +.. * 1 new changesets on the old-1-changeset-branch superceeding the head of the other +.. +.. expected-result: +.. +.. * push the new branch only -> push denied (variant a) +.. * push the existing branch only -> push allowed (variant b) +.. (pushing all is tested as case A-7) +.. +.. graph-summary: +.. +.. (variant a) +.. +.. B'○⇢ø B +.. | | +.. A | ø⇠◔ A' +.. | |/ +.. C ● | +.. \| +.. ● +.. +.. or (variant b) +.. +.. B'◔⇢ø B +.. | | +.. A | ø⇠○ A' +.. | |/ +.. C ● | +.. \| +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir D4 + $ cd D4 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd server + $ mkcommit B0 + $ hg up 0 + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ mkcommit C0 + created new head + $ cd ../client + $ hg pull + pulling from $TESTTMP/D4/server (glob) + 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) + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit A1 + created new head + $ hg up 'desc(C0)' + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit B1 + $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` + $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"` + $ hg log -G --hidden + @ d70a1f75a020 (draft): B1 + | + | o f6082bc4ffef (draft): A1 + | | + o | 0f88766e02d6 (draft): C0 + |/ + | x d73caddc5533 (draft): B0 + | | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing (new branch only) +-------------------------------- + + $ hg push --rev 'desc(A1)' + pushing to $TESTTMP/D4/server (glob) + searching for changes + abort: push creates new remote head f6082bc4ffef! + (merge or see 'hg help push' for details about pushing new heads) + [255] + +Actual testing (existing branch only) +------------------------------------ + + $ hg push --rev 'desc(B1)' + pushing to $TESTTMP/D4/server (glob) + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + 1 new obsolescence markers + + $ cd ../.. diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-unpushed-D5.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-unpushed-D5.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,107 @@ +==================================== +Testing head checking code: Case D-5 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category D: remote head is "obs-affected" locally, but result is not part of the push +TestCase 5: multi-changeset branch, split on multiple other, (head on its own new branch) + +.. old-state: +.. +.. * 2 branch (1 changeset, and 2 changesets) +.. +.. new-state: +.. +.. * 1 new branch superceeding the head of the old-2-changesets-branch, +.. * 1 new changesets on the old-1-changeset-branch superceeding the base of the other +.. +.. expected-result: +.. +.. * push the new branch only -> push denied +.. * push the existing branch only -> push allowed +.. /!\ This push create unstability/orphaning on the other hand and we should +.. probably detect/warn agains that. +.. +.. graph-summary: +.. +.. B ø⇠◔ B' +.. | | +.. A'◔⇢ø | +.. | |/ +.. C ● | +.. \| +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir D5 + $ cd D5 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd server + $ mkcommit B0 + $ hg up 0 + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ mkcommit C0 + created new head + $ cd ../client + $ hg pull + pulling from $TESTTMP/D5/server (glob) + 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) + $ hg up 'desc(C0)' + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit A1 + $ hg up 0 + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ mkcommit B1 + created new head + $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` + $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"` + $ hg log -G --hidden + @ 25c56d33e4c4 (draft): B1 + | + | o a0802eb7fc1b (draft): A1 + | | + | o 0f88766e02d6 (draft): C0 + |/ + | x d73caddc5533 (draft): B0 + | | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push --rev 'desc(B1)' + pushing to $TESTTMP/D5/server (glob) + searching for changes + abort: push creates new remote head 25c56d33e4c4! + (merge or see 'hg help push' for details about pushing new heads) + [255] + $ hg push --rev 'desc(A1)' + pushing to $TESTTMP/D5/server (glob) + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + 1 new obsolescence markers + + $ cd ../.. diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-unpushed-D6.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-unpushed-D6.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,82 @@ +==================================== +Testing head checking code: Case D-6 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category D: remote head is "obs-affected" locally, but result is not part of the push +TestCase 6: single changeset, superseeded then pruned (on a new changeset unpushed) changeset + +This is a partial push variation of case B-6 + +.. old-state: +.. +.. * 1 changeset branch +.. +.. new-state: +.. +.. * old branch is rewritten onto another one, +.. * the new version is then pruned. +.. +.. expected-result: +.. +.. * push denied +.. +.. graph-summary: +.. +.. A ø⇠⊗ A' +.. | | +.. C ◔ | ○ B +.. \|/ +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir D6 + $ cd D6 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd client + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit B0 + created new head + $ mkcommit A1 + $ hg up '0' + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ mkcommit C0 + created new head + $ hg debugobsolete `getid "desc(A0)"` `getid "desc(A1)"` + $ hg debugobsolete --record-parents `getid "desc(A1)"` + $ hg log -G --hidden + @ 0f88766e02d6 (draft): C0 + | + | x ba93660aff8d (draft): A1 + | | + | o 74ff5441d343 (draft): B0 + |/ + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push --rev 'desc(C0)' + pushing to $TESTTMP/D6/server (glob) + searching for changes + abort: push creates new remote head 0f88766e02d6! + (merge or see 'hg help push' for details about pushing new heads) + [255] + + $ cd ../.. diff -r dad84c052463 -r 080b9384d741 tests/test-push-checkheads-unpushed-D7.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-push-checkheads-unpushed-D7.t Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,96 @@ +==================================== +Testing head checking code: Case D-7 +==================================== + +Mercurial checks for the introduction of new heads on push. Evolution comes +into play to detect if existing branches on the server are being replaced by +some of the new one we push. + +This case is part of a series of tests checking this behavior. + +Category D: remote head is "obs-affected" locally, but result is not part of the push +TestCase 7: single changesets, superseeded multiple time then pruned (on a new changeset unpushed) changeset + +This is a partial push variation of B6 + +.. old-state: +.. +.. * 1 changeset branch +.. +.. new-state: +.. +.. * old branch is rewritten onto another one, +.. * The rewriting it again rewritten on the root +.. * the new version is then pruned. +.. +.. expected-result: +.. +.. * push allowed +.. +.. graph-summary: +.. +.. A' +.. A ø⇠ø⇠⊗ A'' +.. | | | +.. C ◔ | ◔ | B +.. \|/ / +.. | / +.. |/ +.. | +.. ● + + $ . $TESTDIR/testlib/push-checkheads-util.sh + +Test setup +---------- + + $ mkdir D7 + $ cd D7 + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd client + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit B0 + created new head + $ mkcommit A1 + $ hg up '0' + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ mkcommit A2 + created new head + $ hg up '0' + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit C0 + created new head + $ hg debugobsolete `getid "desc(A0)"` `getid "desc(A1)"` + $ hg debugobsolete `getid "desc(A1)"` `getid "desc(A2)"` + $ hg debugobsolete --record-parents `getid "desc(A2)"` + $ hg log -G --hidden + @ 0f88766e02d6 (draft): C0 + | + | x c1f8d089020f (draft): A2 + |/ + | x ba93660aff8d (draft): A1 + | | + | o 74ff5441d343 (draft): B0 + |/ + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push --rev 'desc(C0)' + pushing to $TESTTMP/D7/server (glob) + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files (+1 heads) + 3 new obsolescence markers + + $ cd ../.. diff -r dad84c052463 -r 080b9384d741 tests/testlib/checkheads-util.sh --- a/tests/testlib/checkheads-util.sh Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -# common setup for head checking code - -. $TESTDIR/testlib/common.sh - -cat >> $HGRCPATH <> $HGRCPATH <> $HGRCPATH + +mkcommit() { + echo "$1" > "$1" + hg add "$1" + hg ci -m "$1" +} +getid() { + hg log --hidden --template '{node}\n' --rev "$1" +} + +setuprepos() { + echo creating test repo for test case $1 + mkdir $1 + cd $1 + echo - pulldest + hg init pushdest + cd pushdest + mkcommit O + hg phase --public . + cd .. + echo - main + hg clone -q pushdest main + echo - pushdest + hg clone -q main pulldest + echo 'cd into `main` and proceed with env setup' +} + +inspect_obsmarkers (){ + # This exist as its own function to help the evolve extension reuse the tests as is. + # The evolve extensions version will includes more advances query (eg: + # related to obsmarkers discovery) to this. + echo 'obsstore content' + echo '================' + hg debugobsolete + echo 'obshashtree' + echo '===========' + hg debugobsrelsethashtree + echo 'obshashrange' + echo '============' + hg debugobshashrange --subranges --rev 'head()' +} + +dotest() { + # dotest TESTNAME [TARGETNODE] [PUSHFLAGS+] + # + # test exchange for the given test case. + # + # This function performs push and pull in all directions through all + # protocols and display the resulting obsolescence markers on all sides. + + testcase=$1 + shift + target="$1" + if [ $# -gt 0 ]; then + shift + fi + targetnode="" + desccall="" + cd $testcase + echo "## Running testcase $testcase" + if [ -n "$target" ]; then + desccall="desc("\'"$target"\'")" + targetnode="`hg -R main id -qr \"$desccall\"`" + echo "# testing echange of \"$target\" ($targetnode)" + fi + echo "## initial state" + echo "# obstore: main" + hg -R main debugobsolete | sort + echo "# obstore: pushdest" + hg -R pushdest debugobsolete | sort + echo "# obstore: pulldest" + hg -R pulldest debugobsolete | sort + + if [ -n "$target" ]; then + echo "## pushing \"$target\"" from main to pushdest + hg -R main push -r "$desccall" $@ pushdest + else + echo "## pushing from main to pushdest" + hg -R main push pushdest $@ + fi + echo "## post push state" + echo "# obstore: main" + hg -R main debugobsolete | sort + echo "# obstore: pushdest" + hg -R pushdest debugobsolete | sort + echo "# obstore: pulldest" + hg -R pulldest debugobsolete | sort + if [ -n "$target" ]; then + echo "## pulling \"$targetnode\"" from main into pulldest + hg -R pulldest pull -r $targetnode $@ main + else + echo "## pulling from main into pulldest" + hg -R pulldest pull main $@ + fi + echo "## post pull state" + echo "# obstore: main" + hg -R main debugobsolete | sort + echo "# obstore: pushdest" + hg -R pushdest debugobsolete | sort + echo "# obstore: pulldest" + hg -R pulldest debugobsolete | sort + + cd .. + +} diff -r dad84c052463 -r 080b9384d741 tests/testlib/exchange-util.sh --- a/tests/testlib/exchange-util.sh Sat Apr 01 12:45:18 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,110 +0,0 @@ -#!/bin/sh - -cat >> $HGRCPATH <> $HGRCPATH - -mkcommit() { - echo "$1" > "$1" - hg add "$1" - hg ci -m "$1" -} -getid() { - hg log --hidden --template '{node}\n' --rev "$1" -} - -setuprepos() { - echo creating test repo for test case $1 - mkdir $1 - cd $1 - echo - pulldest - hg init pushdest - cd pushdest - mkcommit O - hg phase --public . - cd .. - echo - main - hg clone -q pushdest main - echo - pushdest - hg clone -q main pulldest - echo 'cd into `main` and proceed with env setup' -} - -dotest() { -# dotest TESTNAME [TARGETNODE] - - testcase=$1 - shift - target="$1" - if [ $# -gt 0 ]; then - shift - fi - targetnode="" - desccall="" - cd $testcase - echo "## Running testcase $testcase" - if [ -n "$target" ]; then - desccall="desc("\'"$target"\'")" - targetnode="`hg -R main id -qr \"$desccall\"`" - echo "# testing echange of \"$target\" ($targetnode)" - fi - echo "## initial state" - echo "# obstore: main" - hg -R main debugobsolete | sort - echo "# obstore: pushdest" - hg -R pushdest debugobsolete | sort - echo "# obstore: pulldest" - hg -R pulldest debugobsolete | sort - - if [ -n "$target" ]; then - echo "## pushing \"$target\"" from main to pushdest - hg -R main push -r "$desccall" $@ pushdest - else - echo "## pushing from main to pushdest" - hg -R main push pushdest $@ - fi - echo "## post push state" - echo "# obstore: main" - hg -R main debugobsolete | sort - echo "# obstore: pushdest" - hg -R pushdest debugobsolete | sort - echo "# obstore: pulldest" - hg -R pulldest debugobsolete | sort - if [ -n "$target" ]; then - echo "## pulling \"$targetnode\"" from main into pulldest - hg -R pulldest pull -r $targetnode $@ main - else - echo "## pulling from main into pulldest" - hg -R pulldest pull main $@ - fi - echo "## post pull state" - echo "# obstore: main" - hg -R main debugobsolete | sort - echo "# obstore: pushdest" - hg -R pushdest debugobsolete | sort - echo "# obstore: pulldest" - hg -R pulldest debugobsolete | sort - - cd .. - -} diff -r dad84c052463 -r 080b9384d741 tests/testlib/push-checkheads-util.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/testlib/push-checkheads-util.sh Thu Apr 20 13:05:45 2017 +0200 @@ -0,0 +1,29 @@ +# setup config and various utility to test new heads checks on push + +. $TESTDIR/testlib/common.sh + +cat >> $HGRCPATH <