##// END OF EJS Templates
errors: catch urllib errors specifically instead of using safehasattr()...
errors: catch urllib errors specifically instead of using safehasattr() Before this patch, we would catch `IOError` and `OSError` and check if the instance had a `.code` member (indicates `HTTPError`) or a `.reason` member (indicates the more generic `URLError`). It seems to me that can simply catch those exception specifically instead, so that's what this code does. The existing code is from fbe8834923c5 (commands: report http exceptions nicely, 2005-06-17), so I suspect it's just that there was no `urllib2` (where `URLError` lives) back then. The old code mentioned `SSLError` in a comment. The new code does *not* try to catch that. The documentation for `ssl.SSLError` says that it has a `.reason` property, but `python -c 'import ssl; print(dir(ssl.SSLError("foo", Exception("bar"))))` doesn't mention that property on either Python 2 or Python 3 on my system. It also seems that `sslutil` is pretty careful about converting `ssl.SSLError` to `error.Abort`. It also is carefult to not assume that instances of the exception have a `.reason`. So I at least don't want to catch `ssl.SSLError` and handle it the same way as `URLError` because that would likely result in a crash. I also wonder if we don't need to handle it at all (because `sslutil` might handle all the cases). It's now early in the release cycle, so perhaps we can just see how it goes? Differential Revision: https://phab.mercurial-scm.org/D9318

File last commit:

r46350:ed84a4d4 default
r46442:ae00e170 default
Show More
test-bundle2-exchange.t
1152 lines | 42.4 KiB | text/troff | Tads3Lexer
/ tests / test-bundle2-exchange.t
Gregory Szorc
tests: test using both versions of SSH protocol...
r36235 #testcases sshv1 sshv2
#if sshv2
$ cat >> $HGRCPATH << EOF
> [experimental]
> sshpeer.advertise-v2 = true
> sshserver.support-v2 = true
> EOF
#endif
Pierre-Yves David
bundle2: split test in two...
r22660 Test exchange of common information using bundle2
$ getmainid() {
> hg -R main log --template '{node}\n' --rev "$1"
> }
enable obsolescence
Durham Goode
bundle2: allow lazily acquiring the lock...
r26566 $ cp $HGRCPATH $TESTTMP/hgrc.orig
Martin von Zweigbergk
test-bundle2-exchange: create temp script in $TESTTMP, not $TESTDIR...
r23759 $ cat > $TESTTMP/bundle2-pushkey-hook.sh << EOF
Matt Harbison
tests: make a multi-statement hook in bundle2-exchange Windows compatible...
r23672 > echo pushkey: lock state after \"\$HG_NAMESPACE\"
> hg debuglock
> EOF
Pierre-Yves David
bundle2: split test in two...
r22660 $ cat >> $HGRCPATH << EOF
> [experimental]
Boris Feld
config: use 'experimental.evolution.create-markers'...
r34867 > evolution.createmarkers=True
Boris Feld
config: use 'experimental.evolution.exchange'...
r34869 > evolution.exchange=True
Pierre-Yves David
bundle2: disable ouput capture unless we use http (issue4613 issue4615)...
r24878 > bundle2-output-capture=True
Pierre-Yves David
bundle2: split test in two...
r22660 > [ui]
Matt Harbison
tests: quote $PYTHON for Windows...
r33335 > ssh="$PYTHON" "$TESTDIR/dummyssh"
Martin von Zweigbergk
config: add a new [command-templates] section for templates defined by hg...
r46350 > [command-templates]
> log={rev}:{node|short} {phase} {author} {bookmarks} {desc|firstline}
Pierre-Yves David
bundle2: split test in two...
r22660 > [web]
> push_ssl = false
> allow_push = *
> [phases]
> publish=False
Pierre-Yves David
test-bundle2: test that we got appropriate hook called with appropriate data...
r22938 > [hooks]
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 > pretxnclose.tip = hg log -r tip -T "pre-close-tip:{node|short} {phase} {bookmarks}\n"
> txnclose.tip = hg log -r tip -T "postclose-tip:{node|short} {phase} {bookmarks}\n"
Matt Mackall
tests: simplify printenv calls...
r25478 > txnclose.env = sh -c "HG_LOCAL= printenv.py txnclose"
Martin von Zweigbergk
test-bundle2-exchange: create temp script in $TESTTMP, not $TESTDIR...
r23759 > pushkey= sh "$TESTTMP/bundle2-pushkey-hook.sh"
Pierre-Yves David
bundle2: split test in two...
r22660 > EOF
The extension requires a repo (currently unused)
$ hg init main
$ cd main
$ touch a
$ hg add a
$ hg commit -m 'a'
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 pre-close-tip:3903775176ed draft
postclose-tip:3903775176ed draft
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_PHASES_MOVED=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=commit
Pierre-Yves David
bundle2: split test in two...
r22660
$ hg unbundle $TESTDIR/bundles/rebase.hg
adding changesets
adding manifests
adding file changes
changegroup: move message about added changes to transaction summary...
r43167 pre-close-tip:02de42196ebe draft
Pierre-Yves David
bundle2: split test in two...
r22660 added 8 changesets with 7 changes to 7 files (+3 heads)
Boris Feld
phase: report number of non-public changeset alongside the new range...
r39516 new changesets cd010b8cd998:02de42196ebe (8 drafts)
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 postclose-tip:02de42196ebe draft
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NODE=cd010b8cd998f3981a5a8115f94f8da4ab506089 HG_NODE_LAST=02de42196ebee42ef284b6780a87cdc96e8eaab6 HG_PHASES_MOVED=1 HG_SOURCE=unbundle HG_TXNID=TXN:$ID$ HG_TXNNAME=unbundle
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 bundle:*/tests/bundles/rebase.hg HG_URL=bundle:*/tests/bundles/rebase.hg (glob)
Pierre-Yves David
bundle2: split test in two...
r22660 (run 'hg heads' to see heads, 'hg merge' to merge)
$ cd ..
Real world exchange
=====================
Add more obsolescence information
$ hg -R main debugobsolete -d '0 0' 1111111111111111111111111111111111111111 `getmainid 9520eea781bc`
transaction: issue "new obsmarkers" message at the end of the transaction...
r43164 pre-close-tip:02de42196ebe draft
debugobsolete: also issue the "new obsmarkers" messsage...
r43163 1 new obsolescence markers
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 postclose-tip:02de42196ebe draft
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=debugobsolete
Pierre-Yves David
bundle2: split test in two...
r22660 $ hg -R main debugobsolete -d '0 0' 2222222222222222222222222222222222222222 `getmainid 24b6387c8c8c`
transaction: issue "new obsmarkers" message at the end of the transaction...
r43164 pre-close-tip:02de42196ebe draft
debugobsolete: also issue the "new obsmarkers" messsage...
r43163 1 new obsolescence markers
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 postclose-tip:02de42196ebe draft
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=debugobsolete
Pierre-Yves David
bundle2: split test in two...
r22660
clone --pull
$ hg -R main phase --public cd010b8cd998
Pierre-Yves David
changelog: fix readpending if no pending data exist (issue4609)...
r24822 pre-close-tip:02de42196ebe draft
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 postclose-tip:02de42196ebe draft
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_PHASES_MOVED=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=phase
Pierre-Yves David
bundle2: split test in two...
r22660 $ hg clone main other --pull --rev 9520eea781bc
adding changesets
adding manifests
adding file changes
changegroup: move message about added changes to transaction summary...
r43167 pre-close-tip:9520eea781bc draft
Pierre-Yves David
bundle2: split test in two...
r22660 added 2 changesets with 2 changes to 2 files
1 new obsolescence markers
Boris Feld
phase: report number of non-public changeset alongside the new range...
r39516 new changesets cd010b8cd998:9520eea781bc (1 drafts)
Pierre-Yves David
test-bundle2: check visible data in pre/post-transaction hooks...
r23359 postclose-tip:9520eea781bc draft
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=cd010b8cd998f3981a5a8115f94f8da4ab506089 HG_NODE_LAST=9520eea781bcca16c1e15acc0ba14335a0e8e5ba HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 file:/*/$TESTTMP/main HG_URL=file:$TESTTMP/main (glob)
Pierre-Yves David
bundle2: split test in two...
r22660 updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg -R other log -G
@ 1:9520eea781bc draft Nicolas Dumazet <nicdumz.commits@gmail.com> E
|
o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A
$ hg -R other debugobsolete
1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
pull
$ hg -R main phase --public 9520eea781bc
Pierre-Yves David
changelog: fix readpending if no pending data exist (issue4609)...
r24822 pre-close-tip:02de42196ebe draft
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 postclose-tip:02de42196ebe draft
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_PHASES_MOVED=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=phase
Pierre-Yves David
bundle2: split test in two...
r22660 $ hg -R other pull -r 24b6387c8c8c
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 pulling from $TESTTMP/main
Pierre-Yves David
bundle2: split test in two...
r22660 searching for changes
adding changesets
adding manifests
adding file changes
changegroup: move message about added changes to transaction summary...
r43167 pre-close-tip:24b6387c8c8c draft
Pierre-Yves David
bundle2: split test in two...
r22660 added 1 changesets with 1 changes to 1 files (+1 heads)
1 new obsolescence markers
Boris Feld
phase: report number of non-public changeset alongside the new range...
r39516 new changesets 24b6387c8c8c (1 drafts)
Pierre-Yves David
test-bundle2: check visible data in pre/post-transaction hooks...
r23359 postclose-tip:24b6387c8c8c draft
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=24b6387c8c8cae37178880f3fa95ded3cb1cf785 HG_NODE_LAST=24b6387c8c8cae37178880f3fa95ded3cb1cf785 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 file:/*/$TESTTMP/main HG_URL=file:$TESTTMP/main (glob)
Pierre-Yves David
bundle2: split test in two...
r22660 (run 'hg heads' to see heads, 'hg merge' to merge)
$ hg -R other log -G
o 2:24b6387c8c8c draft Nicolas Dumazet <nicdumz.commits@gmail.com> F
|
| @ 1:9520eea781bc draft Nicolas Dumazet <nicdumz.commits@gmail.com> E
|/
o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A
$ hg -R other debugobsolete
1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
pull empty (with phase movement)
$ hg -R main phase --public 24b6387c8c8c
Pierre-Yves David
changelog: fix readpending if no pending data exist (issue4609)...
r24822 pre-close-tip:02de42196ebe draft
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 postclose-tip:02de42196ebe draft
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_PHASES_MOVED=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=phase
Pierre-Yves David
bundle2: split test in two...
r22660 $ hg -R other pull -r 24b6387c8c8c
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 pulling from $TESTTMP/main
Pierre-Yves David
bundle2: split test in two...
r22660 no changes found
Pierre-Yves David
changelog: fix readpending if no pending data exist (issue4609)...
r24822 pre-close-tip:24b6387c8c8c public
Boris Feld
phases: use "published" in the phase movement message...
r38268 1 local changesets published
Pierre-Yves David
test-bundle2: check visible data in pre/post-transaction hooks...
r23359 postclose-tip:24b6387c8c8c public
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=0 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 file:/*/$TESTTMP/main HG_URL=file:$TESTTMP/main (glob)
Pierre-Yves David
bundle2: split test in two...
r22660 $ hg -R other log -G
o 2:24b6387c8c8c public Nicolas Dumazet <nicdumz.commits@gmail.com> F
|
| @ 1:9520eea781bc draft Nicolas Dumazet <nicdumz.commits@gmail.com> E
|/
o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A
$ hg -R other debugobsolete
1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
pull empty
$ hg -R other pull -r 24b6387c8c8c
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 pulling from $TESTTMP/main
Pierre-Yves David
bundle2: split test in two...
r22660 no changes found
Pierre-Yves David
test-bundle2: check visible data in pre/post-transaction hooks...
r23359 pre-close-tip:24b6387c8c8c public
postclose-tip:24b6387c8c8c public
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=0 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 file:/*/$TESTTMP/main HG_URL=file:$TESTTMP/main (glob)
Pierre-Yves David
bundle2: split test in two...
r22660 $ hg -R other log -G
o 2:24b6387c8c8c public Nicolas Dumazet <nicdumz.commits@gmail.com> F
|
| @ 1:9520eea781bc draft Nicolas Dumazet <nicdumz.commits@gmail.com> E
|/
o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A
$ hg -R other debugobsolete
1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
add extra data to test their exchange during push
$ hg -R main bookmark --rev eea13746799a book_eea1
Pierre-Yves David
bookmarks: change bookmark within a transaction...
r25744 pre-close-tip:02de42196ebe draft
postclose-tip:02de42196ebe draft
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
Pierre-Yves David
bundle2: split test in two...
r22660 $ hg -R main debugobsolete -d '0 0' 3333333333333333333333333333333333333333 `getmainid eea13746799a`
transaction: issue "new obsmarkers" message at the end of the transaction...
r43164 pre-close-tip:02de42196ebe draft
debugobsolete: also issue the "new obsmarkers" messsage...
r43163 1 new obsolescence markers
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 postclose-tip:02de42196ebe draft
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=debugobsolete
Pierre-Yves David
bundle2: split test in two...
r22660 $ hg -R main bookmark --rev 02de42196ebe book_02de
Pierre-Yves David
bookmarks: change bookmark within a transaction...
r25744 pre-close-tip:02de42196ebe draft book_02de
postclose-tip:02de42196ebe draft book_02de
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
Pierre-Yves David
bundle2: split test in two...
r22660 $ hg -R main debugobsolete -d '0 0' 4444444444444444444444444444444444444444 `getmainid 02de42196ebe`
transaction: issue "new obsmarkers" message at the end of the transaction...
r43164 pre-close-tip:02de42196ebe draft book_02de
debugobsolete: also issue the "new obsmarkers" messsage...
r43163 1 new obsolescence markers
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 postclose-tip:02de42196ebe draft book_02de
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=debugobsolete
Pierre-Yves David
bundle2: split test in two...
r22660 $ hg -R main bookmark --rev 42ccdea3bb16 book_42cc
Pierre-Yves David
bookmarks: change bookmark within a transaction...
r25744 pre-close-tip:02de42196ebe draft book_02de
postclose-tip:02de42196ebe draft book_02de
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
Pierre-Yves David
bundle2: split test in two...
r22660 $ hg -R main debugobsolete -d '0 0' 5555555555555555555555555555555555555555 `getmainid 42ccdea3bb16`
transaction: issue "new obsmarkers" message at the end of the transaction...
r43164 pre-close-tip:02de42196ebe draft book_02de
debugobsolete: also issue the "new obsmarkers" messsage...
r43163 1 new obsolescence markers
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 postclose-tip:02de42196ebe draft book_02de
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=debugobsolete
Pierre-Yves David
bundle2: split test in two...
r22660 $ hg -R main bookmark --rev 5fddd98957c8 book_5fdd
Pierre-Yves David
bookmarks: change bookmark within a transaction...
r25744 pre-close-tip:02de42196ebe draft book_02de
postclose-tip:02de42196ebe draft book_02de
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
Pierre-Yves David
bundle2: split test in two...
r22660 $ hg -R main debugobsolete -d '0 0' 6666666666666666666666666666666666666666 `getmainid 5fddd98957c8`
transaction: issue "new obsmarkers" message at the end of the transaction...
r43164 pre-close-tip:02de42196ebe draft book_02de
debugobsolete: also issue the "new obsmarkers" messsage...
r43163 1 new obsolescence markers
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 postclose-tip:02de42196ebe draft book_02de
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=debugobsolete
Pierre-Yves David
bundle2: split test in two...
r22660 $ hg -R main bookmark --rev 32af7686d403 book_32af
Pierre-Yves David
bookmarks: change bookmark within a transaction...
r25744 pre-close-tip:02de42196ebe draft book_02de
postclose-tip:02de42196ebe draft book_02de
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
Pierre-Yves David
bundle2: split test in two...
r22660 $ hg -R main debugobsolete -d '0 0' 7777777777777777777777777777777777777777 `getmainid 32af7686d403`
transaction: issue "new obsmarkers" message at the end of the transaction...
r43164 pre-close-tip:02de42196ebe draft book_02de
debugobsolete: also issue the "new obsmarkers" messsage...
r43163 1 new obsolescence markers
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 postclose-tip:02de42196ebe draft book_02de
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=debugobsolete
Pierre-Yves David
bundle2: split test in two...
r22660
$ hg -R other bookmark --rev cd010b8cd998 book_eea1
Pierre-Yves David
bookmarks: change bookmark within a transaction...
r25744 pre-close-tip:24b6387c8c8c public
postclose-tip:24b6387c8c8c public
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
Pierre-Yves David
bundle2: split test in two...
r22660 $ hg -R other bookmark --rev cd010b8cd998 book_02de
Pierre-Yves David
bookmarks: change bookmark within a transaction...
r25744 pre-close-tip:24b6387c8c8c public
postclose-tip:24b6387c8c8c public
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
Pierre-Yves David
bundle2: split test in two...
r22660 $ hg -R other bookmark --rev cd010b8cd998 book_42cc
Pierre-Yves David
bookmarks: change bookmark within a transaction...
r25744 pre-close-tip:24b6387c8c8c public
postclose-tip:24b6387c8c8c public
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
Pierre-Yves David
bundle2: split test in two...
r22660 $ hg -R other bookmark --rev cd010b8cd998 book_5fdd
Pierre-Yves David
bookmarks: change bookmark within a transaction...
r25744 pre-close-tip:24b6387c8c8c public
postclose-tip:24b6387c8c8c public
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
Pierre-Yves David
bundle2: split test in two...
r22660 $ hg -R other bookmark --rev cd010b8cd998 book_32af
Pierre-Yves David
bookmarks: change bookmark within a transaction...
r25744 pre-close-tip:24b6387c8c8c public
postclose-tip:24b6387c8c8c public
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
Pierre-Yves David
bundle2: split test in two...
r22660
$ hg -R main phase --public eea13746799a
Pierre-Yves David
changelog: fix readpending if no pending data exist (issue4609)...
r24822 pre-close-tip:02de42196ebe draft book_02de
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 postclose-tip:02de42196ebe draft book_02de
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_PHASES_MOVED=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=phase
Pierre-Yves David
bundle2: split test in two...
r22660
push
$ hg -R main push other --rev eea13746799a --bookmark book_eea1
pushing to other
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
changegroup: move message about added changes to transaction summary...
r43167 remote: pre-close-tip:eea13746799a public book_eea1
Pierre-Yves David
bundle2: split test in two...
r22660 remote: added 1 changesets with 0 changes to 0 files (-1 heads)
remote: 1 new obsolescence markers
Boris Feld
bookmarks: fix pushkey compatibility mode (issue5777)...
r35829 remote: pushkey: lock state after "bookmarks"
Boris Feld
bookmark: run 'pushkey' hooks after bookmark move, not 'prepushkey'...
r35673 remote: lock: free
remote: wlock: free
Pierre-Yves David
bundle2: capture output issue during transaction close...
r24850 remote: postclose-tip:eea13746799a public book_eea1
Pierre-Yves David
hook: add hook name information to external hook...
r31747 remote: txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=eea13746799a9e0bfd88f29d3c2e9dc9389f524f HG_NODE_LAST=eea13746799a9e0bfd88f29d3c2e9dc9389f524f HG_PHASES_MOVED=1 HG_SOURCE=push HG_TXNID=TXN:$ID$ HG_TXNNAME=push HG_URL=file:$TESTTMP/other
Pierre-Yves David
bundle2: split test in two...
r22660 updating bookmark book_eea1
Eric Sumner
push: elevate phase transaction to cover entire operation...
r23437 pre-close-tip:02de42196ebe draft book_02de
postclose-tip:02de42196ebe draft book_02de
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_SOURCE=push-response HG_TXNID=TXN:$ID$ HG_TXNNAME=push-response
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 file:/*/$TESTTMP/other HG_URL=file:$TESTTMP/other (glob)
Pierre-Yves David
bundle2: split test in two...
r22660 $ hg -R other log -G
o 3:eea13746799a public Nicolas Dumazet <nicdumz.commits@gmail.com> book_eea1 G
|\
| o 2:24b6387c8c8c public Nicolas Dumazet <nicdumz.commits@gmail.com> F
| |
@ | 1:9520eea781bc public Nicolas Dumazet <nicdumz.commits@gmail.com> E
|/
o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> book_02de book_32af book_42cc book_5fdd A
$ hg -R other debugobsolete
1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
3333333333333333333333333333333333333333 eea13746799a9e0bfd88f29d3c2e9dc9389f524f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
pull over ssh
$ hg -R other pull ssh://user@dummy/main -r 02de42196ebe --bookmark book_02de
pulling from ssh://user@dummy/main
searching for changes
adding changesets
adding manifests
adding file changes
updating bookmark book_02de
Pierre-Yves David
phases: read pending data when appropriate...
r23361 pre-close-tip:02de42196ebe draft book_02de
changegroup: move message about added changes to transaction summary...
r43167 added 1 changesets with 1 changes to 1 files (+1 heads)
transaction: issue "new obsmarkers" message at the end of the transaction...
r43164 1 new obsolescence markers
Boris Feld
phase: report number of non-public changeset alongside the new range...
r39516 new changesets 02de42196ebe (1 drafts)
Pierre-Yves David
test-bundle2: check visible data in pre/post-transaction hooks...
r23359 postclose-tip:02de42196ebe draft book_02de
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=02de42196ebee42ef284b6780a87cdc96e8eaab6 HG_NODE_LAST=02de42196ebee42ef284b6780a87cdc96e8eaab6 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 ssh://user@dummy/main HG_URL=ssh://user@dummy/main
Pierre-Yves David
bundle2: split test in two...
r22660 (run 'hg heads' to see heads, 'hg merge' to merge)
$ hg -R other debugobsolete
1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
3333333333333333333333333333333333333333 eea13746799a9e0bfd88f29d3c2e9dc9389f524f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
4444444444444444444444444444444444444444 02de42196ebee42ef284b6780a87cdc96e8eaab6 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
pull over http
Jun Wu
tests: reorder hg serve commands...
r28549 $ hg serve -R main -p $HGPORT -d --pid-file=main.pid -E main-error.log
Pierre-Yves David
bundle2: split test in two...
r22660 $ cat main.pid >> $DAEMON_PIDS
$ hg -R other pull http://localhost:$HGPORT/ -r 42ccdea3bb16 --bookmark book_42cc
pulling from http://localhost:$HGPORT/
searching for changes
adding changesets
adding manifests
adding file changes
updating bookmark book_42cc
Pierre-Yves David
phases: read pending data when appropriate...
r23361 pre-close-tip:42ccdea3bb16 draft book_42cc
changegroup: move message about added changes to transaction summary...
r43167 added 1 changesets with 1 changes to 1 files (+1 heads)
transaction: issue "new obsmarkers" message at the end of the transaction...
r43164 1 new obsolescence markers
Boris Feld
phase: report number of non-public changeset alongside the new range...
r39516 new changesets 42ccdea3bb16 (1 drafts)
Pierre-Yves David
test-bundle2: check visible data in pre/post-transaction hooks...
r23359 postclose-tip:42ccdea3bb16 draft book_42cc
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 HG_NODE_LAST=42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 http://localhost:$HGPORT/ HG_URL=http://localhost:$HGPORT/
Pierre-Yves David
bundle2: split test in two...
r22660 (run 'hg heads .' to see heads, 'hg merge' to merge)
$ cat main-error.log
$ hg -R other debugobsolete
1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
3333333333333333333333333333333333333333 eea13746799a9e0bfd88f29d3c2e9dc9389f524f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
4444444444444444444444444444444444444444 02de42196ebee42ef284b6780a87cdc96e8eaab6 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
5555555555555555555555555555555555555555 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
push over ssh
$ hg -R main push ssh://user@dummy/other -r 5fddd98957c8 --bookmark book_5fdd
pushing to ssh://user@dummy/other
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
changegroup: move message about added changes to transaction summary...
r43167 remote: pre-close-tip:5fddd98957c8 draft book_5fdd
Pierre-Yves David
bundle2: split test in two...
r22660 remote: added 1 changesets with 1 changes to 1 files
remote: 1 new obsolescence markers
Boris Feld
bookmarks: fix pushkey compatibility mode (issue5777)...
r35829 remote: pushkey: lock state after "bookmarks"
Boris Feld
bookmark: run 'pushkey' hooks after bookmark move, not 'prepushkey'...
r35673 remote: lock: free
remote: wlock: free
Pierre-Yves David
test-bundle2: check visible data in pre/post-transaction hooks...
r23359 remote: postclose-tip:5fddd98957c8 draft book_5fdd
Pierre-Yves David
hook: add hook name information to external hook...
r31747 remote: txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=5fddd98957c8a54a4d436dfe1da9d87f21a1b97b HG_NODE_LAST=5fddd98957c8a54a4d436dfe1da9d87f21a1b97b HG_SOURCE=serve HG_TXNID=TXN:$ID$ HG_TXNNAME=serve HG_URL=remote:ssh:$LOCALIP
Pierre-Yves David
bundle2: capture output issue during transaction close...
r24850 updating bookmark book_5fdd
Eric Sumner
push: elevate phase transaction to cover entire operation...
r23437 pre-close-tip:02de42196ebe draft book_02de
postclose-tip:02de42196ebe draft book_02de
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_SOURCE=push-response HG_TXNID=TXN:$ID$ HG_TXNNAME=push-response
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 ssh://user@dummy/other HG_URL=ssh://user@dummy/other
Pierre-Yves David
bundle2: split test in two...
r22660 $ hg -R other log -G
o 6:5fddd98957c8 draft Nicolas Dumazet <nicdumz.commits@gmail.com> book_5fdd C
|
o 5:42ccdea3bb16 draft Nicolas Dumazet <nicdumz.commits@gmail.com> book_42cc B
|
| o 4:02de42196ebe draft Nicolas Dumazet <nicdumz.commits@gmail.com> book_02de H
| |
| | o 3:eea13746799a public Nicolas Dumazet <nicdumz.commits@gmail.com> book_eea1 G
| |/|
| o | 2:24b6387c8c8c public Nicolas Dumazet <nicdumz.commits@gmail.com> F
|/ /
| @ 1:9520eea781bc public Nicolas Dumazet <nicdumz.commits@gmail.com> E
|/
o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> book_32af A
$ hg -R other debugobsolete
1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
3333333333333333333333333333333333333333 eea13746799a9e0bfd88f29d3c2e9dc9389f524f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
4444444444444444444444444444444444444444 02de42196ebee42ef284b6780a87cdc96e8eaab6 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
5555555555555555555555555555555555555555 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
6666666666666666666666666666666666666666 5fddd98957c8a54a4d436dfe1da9d87f21a1b97b 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
push over http
Jun Wu
tests: reorder hg serve commands...
r28549 $ hg serve -R other -p $HGPORT2 -d --pid-file=other.pid -E other-error.log
Pierre-Yves David
bundle2: split test in two...
r22660 $ cat other.pid >> $DAEMON_PIDS
$ hg -R main phase --public 32af7686d403
Pierre-Yves David
changelog: fix readpending if no pending data exist (issue4609)...
r24822 pre-close-tip:02de42196ebe draft book_02de
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 postclose-tip:02de42196ebe draft book_02de
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_PHASES_MOVED=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=phase
Pierre-Yves David
bundle2: split test in two...
r22660 $ hg -R main push http://localhost:$HGPORT2/ -r 32af7686d403 --bookmark book_32af
pushing to http://localhost:$HGPORT2/
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
changegroup: move message about added changes to transaction summary...
r43167 remote: pre-close-tip:32af7686d403 public book_32af
Pierre-Yves David
bundle2: split test in two...
r22660 remote: added 1 changesets with 1 changes to 1 files
remote: 1 new obsolescence markers
Boris Feld
bookmarks: fix pushkey compatibility mode (issue5777)...
r35829 remote: pushkey: lock state after "bookmarks"
Boris Feld
bookmark: run 'pushkey' hooks after bookmark move, not 'prepushkey'...
r35673 remote: lock: free
remote: wlock: free
Pierre-Yves David
bundle2: capture output issue during transaction close...
r24850 remote: postclose-tip:32af7686d403 public book_32af
Augie Fackler
tests: fix missing (glob) annotations in test-bundle2-exchange.t
r31812 remote: txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=32af7686d403cf45b5d95f2d70cebea587ac806a HG_NODE_LAST=32af7686d403cf45b5d95f2d70cebea587ac806a HG_PHASES_MOVED=1 HG_SOURCE=serve HG_TXNID=TXN:$ID$ HG_TXNNAME=serve HG_URL=remote:http:$LOCALIP: (glob)
Pierre-Yves David
bundle2: split test in two...
r22660 updating bookmark book_32af
Eric Sumner
push: elevate phase transaction to cover entire operation...
r23437 pre-close-tip:02de42196ebe draft book_02de
postclose-tip:02de42196ebe draft book_02de
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_SOURCE=push-response HG_TXNID=TXN:$ID$ HG_TXNNAME=push-response
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 http://localhost:$HGPORT2/ HG_URL=http://localhost:$HGPORT2/
Pierre-Yves David
bundle2: split test in two...
r22660 $ cat other-error.log
Check final content.
$ hg -R other log -G
o 7:32af7686d403 public Nicolas Dumazet <nicdumz.commits@gmail.com> book_32af D
|
o 6:5fddd98957c8 public Nicolas Dumazet <nicdumz.commits@gmail.com> book_5fdd C
|
o 5:42ccdea3bb16 public Nicolas Dumazet <nicdumz.commits@gmail.com> book_42cc B
|
| o 4:02de42196ebe draft Nicolas Dumazet <nicdumz.commits@gmail.com> book_02de H
| |
| | o 3:eea13746799a public Nicolas Dumazet <nicdumz.commits@gmail.com> book_eea1 G
| |/|
| o | 2:24b6387c8c8c public Nicolas Dumazet <nicdumz.commits@gmail.com> F
|/ /
| @ 1:9520eea781bc public Nicolas Dumazet <nicdumz.commits@gmail.com> E
|/
o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A
$ hg -R other debugobsolete
1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
3333333333333333333333333333333333333333 eea13746799a9e0bfd88f29d3c2e9dc9389f524f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
4444444444444444444444444444444444444444 02de42196ebee42ef284b6780a87cdc96e8eaab6 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
5555555555555555555555555555555555555555 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
6666666666666666666666666666666666666666 5fddd98957c8a54a4d436dfe1da9d87f21a1b97b 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
7777777777777777777777777777777777777777 32af7686d403cf45b5d95f2d70cebea587ac806a 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
Pierre-Yves David
transaction: write pending generated files...
r23358 (check that no 'pending' files remain)
$ ls -1 other/.hg/bookmarks*
other/.hg/bookmarks
$ ls -1 other/.hg/store/phaseroots*
other/.hg/store/phaseroots
$ ls -1 other/.hg/store/00changelog.i*
other/.hg/store/00changelog.i
Pierre-Yves David
bundle2: split test in two...
r22660 Error Handling
==============
Check that errors are properly returned to the client during push.
Setting up
$ cat > failpush.py << EOF
> """A small extension that makes push fails when using bundle2
>
> used to test error handling in bundle2
> """
>
Pierre-Yves David
error: get Abort from 'error' instead of 'util'...
r26587 > from mercurial import error
Pierre-Yves David
bundle2: split test in two...
r22660 > from mercurial import bundle2
> from mercurial import exchange
> from mercurial import extensions
Boris Feld
configitems: register the test 'failpush.reason' config
r34764 > from mercurial import registrar
> cmdtable = {}
> command = registrar.command(cmdtable)
>
> configtable = {}
> configitem = registrar.configitem(configtable)
Augie Fackler
tests: update inline extensions in test-bundle2-exchange.t to py3...
r37766 > configitem(b'failpush', b'reason',
Boris Feld
configitems: register the test 'failpush.reason' config
r34764 > default=None,
> )
Pierre-Yves David
bundle2: split test in two...
r22660 >
> def _pushbundle2failpart(pushop, bundler):
Augie Fackler
tests: update inline extensions in test-bundle2-exchange.t to py3...
r37766 > reason = pushop.ui.config(b'failpush', b'reason')
Pierre-Yves David
bundle2: split test in two...
r22660 > part = None
Augie Fackler
tests: update inline extensions in test-bundle2-exchange.t to py3...
r37766 > if reason == b'abort':
> bundler.newpart(b'test:abort')
> if reason == b'unknown':
> bundler.newpart(b'test:unknown')
> if reason == b'race':
Pierre-Yves David
bundle2: split test in two...
r22660 > # 20 Bytes of crap
Augie Fackler
tests: update inline extensions in test-bundle2-exchange.t to py3...
r37766 > bundler.newpart(b'check:heads', data=b'01234567890123456789')
Pierre-Yves David
bundle2: split test in two...
r22660 >
Augie Fackler
tests: update inline extensions in test-bundle2-exchange.t to py3...
r37766 > @bundle2.parthandler(b"test:abort")
Pierre-Yves David
bundle2: split test in two...
r22660 > def handleabort(op, part):
Augie Fackler
tests: update inline extensions in test-bundle2-exchange.t to py3...
r37766 > raise error.Abort(b'Abandon ship!', hint=b"don't panic")
Pierre-Yves David
bundle2: split test in two...
r22660 >
> def uisetup(ui):
Augie Fackler
tests: update inline extensions in test-bundle2-exchange.t to py3...
r37766 > exchange.b2partsgenmapping[b'failpart'] = _pushbundle2failpart
> exchange.b2partsgenorder.insert(0, b'failpart')
Pierre-Yves David
bundle2: split test in two...
r22660 >
> EOF
$ cd main
$ hg up tip
3 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo 'I' > I
$ hg add I
$ hg ci -m 'I'
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 pre-close-tip:e7ec4e813ba6 draft
postclose-tip:e7ec4e813ba6 draft
Pierre-Yves David
hook: add hook name information to external hook...
r31747 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=commit
Pierre-Yves David
bundle2: split test in two...
r22660 $ hg id
e7ec4e813ba6 tip
$ cd ..
$ cat << EOF >> $HGRCPATH
> [extensions]
> failpush=$TESTTMP/failpush.py
> EOF
Matt Mackall
tests: drop DAEMON_PIDS from killdaemons calls
r25474 $ killdaemons.py
Jun Wu
tests: reorder hg serve commands...
r28549 $ hg serve -R other -p $HGPORT2 -d --pid-file=other.pid -E other-error.log
Pierre-Yves David
bundle2: split test in two...
r22660 $ cat other.pid >> $DAEMON_PIDS
Doing the actual push: Abort error
$ cat << EOF >> $HGRCPATH
> [failpush]
> reason = abort
> EOF
$ hg -R main push other -r e7ec4e813ba6
pushing to other
searching for changes
abort: Abandon ship!
(don't panic)
[255]
$ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
pushing to ssh://user@dummy/other
searching for changes
Gregory Szorc
bundle2: attribute remote failures to remote (issue4788)...
r26829 remote: Abandon ship!
Pierre-Yves David
bundle2: keep hint close to the primary message when remote abort...
r30908 remote: (don't panic)
Gregory Szorc
bundle2: attribute remote failures to remote (issue4788)...
r26829 abort: push failed on remote
Pierre-Yves David
bundle2: split test in two...
r22660 [255]
$ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
pushing to http://localhost:$HGPORT2/
searching for changes
Gregory Szorc
bundle2: attribute remote failures to remote (issue4788)...
r26829 remote: Abandon ship!
Pierre-Yves David
bundle2: keep hint close to the primary message when remote abort...
r30908 remote: (don't panic)
Gregory Szorc
bundle2: attribute remote failures to remote (issue4788)...
r26829 abort: push failed on remote
Pierre-Yves David
bundle2: split test in two...
r22660 [255]
Doing the actual push: unknown mandatory parts
$ cat << EOF >> $HGRCPATH
> [failpush]
> reason = unknown
> EOF
$ hg -R main push other -r e7ec4e813ba6
pushing to other
searching for changes
abort: missing support for test:unknown
[255]
$ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
pushing to ssh://user@dummy/other
searching for changes
abort: missing support for test:unknown
[255]
$ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
pushing to http://localhost:$HGPORT2/
searching for changes
abort: missing support for test:unknown
[255]
Doing the actual push: race
$ cat << EOF >> $HGRCPATH
> [failpush]
> reason = race
> EOF
$ hg -R main push other -r e7ec4e813ba6
pushing to other
searching for changes
abort: push failed:
Taapas Agrawal
push: add "remote" to 'repository changed while pushing' messages (issue5971)...
r40182 'remote repository changed while pushing - please try again'
Pierre-Yves David
bundle2: split test in two...
r22660 [255]
$ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
pushing to ssh://user@dummy/other
searching for changes
abort: push failed:
Taapas Agrawal
push: add "remote" to 'repository changed while pushing' messages (issue5971)...
r40182 'remote repository changed while pushing - please try again'
Pierre-Yves David
bundle2: split test in two...
r22660 [255]
$ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
pushing to http://localhost:$HGPORT2/
searching for changes
abort: push failed:
Taapas Agrawal
push: add "remote" to 'repository changed while pushing' messages (issue5971)...
r40182 'remote repository changed while pushing - please try again'
Pierre-Yves David
bundle2: split test in two...
r22660 [255]
Doing the actual push: hook abort
$ cat << EOF >> $HGRCPATH
> [failpush]
> reason =
> [hooks]
Matt Harbison
test-bundle2-exchange: make hooks compatible with Windows...
r24860 > pretxnclose.failpush = sh -c "echo 'You shall not pass!'; false"
> txnabort.failpush = sh -c "echo 'Cleaning up the mess...'"
Pierre-Yves David
bundle2: split test in two...
r22660 > EOF
Matt Mackall
tests: drop DAEMON_PIDS from killdaemons calls
r25474 $ killdaemons.py
Jun Wu
tests: reorder hg serve commands...
r28549 $ hg serve -R other -p $HGPORT2 -d --pid-file=other.pid -E other-error.log
Pierre-Yves David
bundle2: split test in two...
r22660 $ cat other.pid >> $DAEMON_PIDS
$ hg -R main push other -r e7ec4e813ba6
pushing to other
searching for changes
Pierre-Yves David
bundle2-localpeer: properly propagate the server output on error (issue4594)...
r24799 remote: adding changesets
remote: adding manifests
remote: adding file changes
Pierre-Yves David
bundle2: capture output issue during transaction close...
r24850 remote: pre-close-tip:e7ec4e813ba6 draft
remote: You shall not pass!
Pierre-Yves David
bundle2: capture transaction rollback message output (issue4614)...
r24847 remote: transaction abort!
Pierre-Yves David
bundle2: also capture hook output during processing...
r24849 remote: Cleaning up the mess...
Pierre-Yves David
bundle2: capture transaction rollback message output (issue4614)...
r24847 remote: rollback completed
Pierre-Yves David
bundle2: test hooking using the new transaction-level hook...
r24285 abort: pretxnclose.failpush hook exited with status 1
Pierre-Yves David
bundle2: split test in two...
r22660 [255]
$ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
pushing to ssh://user@dummy/other
searching for changes
Pierre-Yves David
bundle2-wireproto: properly propagate the server output on error (issue4594)...
r24797 remote: adding changesets
remote: adding manifests
remote: adding file changes
Pierre-Yves David
bundle2: capture output issue during transaction close...
r24850 remote: pre-close-tip:e7ec4e813ba6 draft
remote: You shall not pass!
Pierre-Yves David
bundle2: capture transaction rollback message output (issue4614)...
r24847 remote: transaction abort!
Pierre-Yves David
bundle2: also capture hook output during processing...
r24849 remote: Cleaning up the mess...
Pierre-Yves David
bundle2: capture transaction rollback message output (issue4614)...
r24847 remote: rollback completed
Gregory Szorc
bundle2: attribute remote failures to remote (issue4788)...
r26829 remote: pretxnclose.failpush hook exited with status 1
abort: push failed on remote
Pierre-Yves David
bundle2: split test in two...
r22660 [255]
$ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
pushing to http://localhost:$HGPORT2/
searching for changes
Pierre-Yves David
bundle2-wireproto: properly propagate the server output on error (issue4594)...
r24797 remote: adding changesets
remote: adding manifests
remote: adding file changes
Pierre-Yves David
bundle2: capture output issue during transaction close...
r24850 remote: pre-close-tip:e7ec4e813ba6 draft
remote: You shall not pass!
Pierre-Yves David
bundle2: capture transaction rollback message output (issue4614)...
r24847 remote: transaction abort!
Pierre-Yves David
bundle2: also capture hook output during processing...
r24849 remote: Cleaning up the mess...
Pierre-Yves David
bundle2: capture transaction rollback message output (issue4614)...
r24847 remote: rollback completed
Gregory Szorc
bundle2: attribute remote failures to remote (issue4788)...
r26829 remote: pretxnclose.failpush hook exited with status 1
abort: push failed on remote
Pierre-Yves David
bundle2: split test in two...
r22660 [255]
Pierre-Yves David
transaction: write pending generated files...
r23358 (check that no 'pending' files remain)
Pierre-Yves David
bundle2: split test in two...
r22660
Pierre-Yves David
transaction: write pending generated files...
r23358 $ ls -1 other/.hg/bookmarks*
other/.hg/bookmarks
$ ls -1 other/.hg/store/phaseroots*
other/.hg/store/phaseroots
$ ls -1 other/.hg/store/00changelog.i*
other/.hg/store/00changelog.i
Pierre-Yves David
bundle2: also save output when error happens during part processing...
r24851 Check error from hook during the unbundling process itself
$ cat << EOF >> $HGRCPATH
Matt Harbison
test-bundle2-exchange: make hooks compatible with Windows...
r24860 > pretxnchangegroup = sh -c "echo 'Fail early!'; false"
Pierre-Yves David
bundle2: also save output when error happens during part processing...
r24851 > EOF
Matt Mackall
tests: drop DAEMON_PIDS from killdaemons calls
r25474 $ killdaemons.py # reload http config
Jun Wu
tests: reorder hg serve commands...
r28549 $ hg serve -R other -p $HGPORT2 -d --pid-file=other.pid -E other-error.log
Pierre-Yves David
bundle2: also save output when error happens during part processing...
r24851 $ cat other.pid >> $DAEMON_PIDS
$ hg -R main push other -r e7ec4e813ba6
pushing to other
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: Fail early!
remote: transaction abort!
remote: Cleaning up the mess...
remote: rollback completed
abort: pretxnchangegroup hook exited with status 1
[255]
$ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
pushing to ssh://user@dummy/other
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: Fail early!
remote: transaction abort!
remote: Cleaning up the mess...
remote: rollback completed
Gregory Szorc
bundle2: attribute remote failures to remote (issue4788)...
r26829 remote: pretxnchangegroup hook exited with status 1
abort: push failed on remote
Pierre-Yves David
bundle2: also save output when error happens during part processing...
r24851 [255]
$ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
pushing to http://localhost:$HGPORT2/
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: Fail early!
remote: transaction abort!
remote: Cleaning up the mess...
remote: rollback completed
Gregory Szorc
bundle2: attribute remote failures to remote (issue4788)...
r26829 remote: pretxnchangegroup hook exited with status 1
abort: push failed on remote
Pierre-Yves David
bundle2: also save output when error happens during part processing...
r24851 [255]
Pierre-Yves David
bundle2: disable ouput capture unless we use http (issue4613 issue4615)...
r24878
Check output capture control.
(should be still forced for http, disabled for local and ssh)
$ cat >> $HGRCPATH << EOF
> [experimental]
> bundle2-output-capture=False
> EOF
$ hg -R main push other -r e7ec4e813ba6
pushing to other
searching for changes
adding changesets
adding manifests
adding file changes
Fail early!
transaction abort!
Cleaning up the mess...
rollback completed
abort: pretxnchangegroup hook exited with status 1
[255]
$ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
pushing to ssh://user@dummy/other
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: Fail early!
remote: transaction abort!
remote: Cleaning up the mess...
remote: rollback completed
Gregory Szorc
bundle2: attribute remote failures to remote (issue4788)...
r26829 remote: pretxnchangegroup hook exited with status 1
abort: push failed on remote
Pierre-Yves David
bundle2: disable ouput capture unless we use http (issue4613 issue4615)...
r24878 [255]
$ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
pushing to http://localhost:$HGPORT2/
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: Fail early!
remote: transaction abort!
remote: Cleaning up the mess...
remote: rollback completed
Gregory Szorc
bundle2: attribute remote failures to remote (issue4788)...
r26829 remote: pretxnchangegroup hook exited with status 1
abort: push failed on remote
Pierre-Yves David
bundle2: disable ouput capture unless we use http (issue4613 issue4615)...
r24878 [255]
Pierre-Yves David
bundle2: abort when a mandatory pushkey part fails...
r25481
Check abort from mandatory pushkey
$ cat > mandatorypart.py << EOF
> from mercurial import exchange
> from mercurial import pushkey
> from mercurial import node
Pierre-Yves David
push: catch and process PushkeyFailed error...
r25485 > from mercurial import error
Augie Fackler
tests: update inline extensions in test-bundle2-exchange.t to py3...
r37766 > @exchange.b2partsgenerator(b'failingpuskey')
Pierre-Yves David
bundle2: abort when a mandatory pushkey part fails...
r25481 > def addfailingpushey(pushop, bundler):
> enc = pushkey.encode
Augie Fackler
tests: update inline extensions in test-bundle2-exchange.t to py3...
r37766 > part = bundler.newpart(b'pushkey')
> part.addparam(b'namespace', enc(b'phases'))
> part.addparam(b'key', enc(b'cd010b8cd998f3981a5a8115f94f8da4ab506089'))
> part.addparam(b'old', enc(b'0')) # successful update
> part.addparam(b'new', enc(b'0'))
Pierre-Yves David
push: catch and process PushkeyFailed error...
r25485 > def fail(pushop, exc):
Augie Fackler
tests: update inline extensions in test-bundle2-exchange.t to py3...
r37766 > raise error.Abort(b'Correct phase push failed (because hooks)')
Pierre-Yves David
push: catch and process PushkeyFailed error...
r25485 > pushop.pkfailcb[part.id] = fail
Pierre-Yves David
bundle2: abort when a mandatory pushkey part fails...
r25481 > EOF
$ cat >> $HGRCPATH << EOF
> [hooks]
> pretxnchangegroup=
> pretxnclose.failpush=
> prepushkey.failpush = sh -c "echo 'do not push the key !'; false"
> [extensions]
> mandatorypart=$TESTTMP/mandatorypart.py
> EOF
$ "$TESTDIR/killdaemons.py" $DAEMON_PIDS # reload http config
Jun Wu
tests: reorder hg serve commands...
r28549 $ hg serve -R other -p $HGPORT2 -d --pid-file=other.pid -E other-error.log
Pierre-Yves David
bundle2: abort when a mandatory pushkey part fails...
r25481 $ cat other.pid >> $DAEMON_PIDS
(Failure from a hook)
$ hg -R main push other -r e7ec4e813ba6
pushing to other
searching for changes
adding changesets
adding manifests
adding file changes
do not push the key !
pushkey-abort: prepushkey.failpush hook exited with status 1
transaction abort!
Cleaning up the mess...
rollback completed
Pierre-Yves David
push: catch and process PushkeyFailed error...
r25485 abort: Correct phase push failed (because hooks)
Pierre-Yves David
bundle2: abort when a mandatory pushkey part fails...
r25481 [255]
$ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
pushing to ssh://user@dummy/other
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: do not push the key !
remote: pushkey-abort: prepushkey.failpush hook exited with status 1
remote: transaction abort!
remote: Cleaning up the mess...
remote: rollback completed
Pierre-Yves David
bundle2: convey PushkeyFailed error over the wire...
r25493 abort: Correct phase push failed (because hooks)
Pierre-Yves David
bundle2: abort when a mandatory pushkey part fails...
r25481 [255]
$ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
pushing to http://localhost:$HGPORT2/
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: do not push the key !
remote: pushkey-abort: prepushkey.failpush hook exited with status 1
remote: transaction abort!
remote: Cleaning up the mess...
remote: rollback completed
Pierre-Yves David
bundle2: convey PushkeyFailed error over the wire...
r25493 abort: Correct phase push failed (because hooks)
Pierre-Yves David
bundle2: abort when a mandatory pushkey part fails...
r25481 [255]
(Failure from a the pushkey)
$ cat > mandatorypart.py << EOF
> from mercurial import exchange
> from mercurial import pushkey
> from mercurial import node
Pierre-Yves David
push: catch and process PushkeyFailed error...
r25485 > from mercurial import error
Augie Fackler
tests: update inline extensions in test-bundle2-exchange.t to py3...
r37766 > @exchange.b2partsgenerator(b'failingpuskey')
Pierre-Yves David
bundle2: abort when a mandatory pushkey part fails...
r25481 > def addfailingpushey(pushop, bundler):
> enc = pushkey.encode
Augie Fackler
tests: update inline extensions in test-bundle2-exchange.t to py3...
r37766 > part = bundler.newpart(b'pushkey')
> part.addparam(b'namespace', enc(b'phases'))
> part.addparam(b'key', enc(b'cd010b8cd998f3981a5a8115f94f8da4ab506089'))
> part.addparam(b'old', enc(b'4')) # will fail
> part.addparam(b'new', enc(b'3'))
Pierre-Yves David
push: catch and process PushkeyFailed error...
r25485 > def fail(pushop, exc):
Augie Fackler
tests: update inline extensions in test-bundle2-exchange.t to py3...
r37766 > raise error.Abort(b'Clown phase push failed')
Pierre-Yves David
push: catch and process PushkeyFailed error...
r25485 > pushop.pkfailcb[part.id] = fail
Pierre-Yves David
bundle2: abort when a mandatory pushkey part fails...
r25481 > EOF
$ cat >> $HGRCPATH << EOF
> [hooks]
> prepushkey.failpush =
> EOF
$ "$TESTDIR/killdaemons.py" $DAEMON_PIDS # reload http config
Jun Wu
tests: reorder hg serve commands...
r28549 $ hg serve -R other -p $HGPORT2 -d --pid-file=other.pid -E other-error.log
Pierre-Yves David
bundle2: abort when a mandatory pushkey part fails...
r25481 $ cat other.pid >> $DAEMON_PIDS
$ hg -R main push other -r e7ec4e813ba6
pushing to other
searching for changes
adding changesets
adding manifests
adding file changes
transaction abort!
Cleaning up the mess...
rollback completed
pushkey: lock state after "phases"
lock: free
wlock: free
Pierre-Yves David
push: catch and process PushkeyFailed error...
r25485 abort: Clown phase push failed
Pierre-Yves David
bundle2: abort when a mandatory pushkey part fails...
r25481 [255]
$ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
pushing to ssh://user@dummy/other
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: transaction abort!
remote: Cleaning up the mess...
remote: rollback completed
remote: pushkey: lock state after "phases"
remote: lock: free
remote: wlock: free
Pierre-Yves David
bundle2: convey PushkeyFailed error over the wire...
r25493 abort: Clown phase push failed
Pierre-Yves David
bundle2: abort when a mandatory pushkey part fails...
r25481 [255]
$ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
pushing to http://localhost:$HGPORT2/
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: transaction abort!
remote: Cleaning up the mess...
remote: rollback completed
remote: pushkey: lock state after "phases"
remote: lock: free
remote: wlock: free
Pierre-Yves David
bundle2: convey PushkeyFailed error over the wire...
r25493 abort: Clown phase push failed
Pierre-Yves David
bundle2: abort when a mandatory pushkey part fails...
r25481 [255]
Durham Goode
bundle2: allow lazily acquiring the lock...
r26566 Test lazily acquiring the lock during unbundle
$ cp $TESTTMP/hgrc.orig $HGRCPATH
$ cat >> $HGRCPATH <<EOF
> [ui]
Matt Harbison
tests: quote $PYTHON for Windows...
r33335 > ssh="$PYTHON" "$TESTDIR/dummyssh"
Durham Goode
bundle2: allow lazily acquiring the lock...
r26566 > EOF
$ cat >> $TESTTMP/locktester.py <<EOF
> import os
Matt Harbison
py3: fix module imports in tests, as flagged by test-check-module-imports.t...
r40405 > from mercurial import bundle2, error, extensions
Durham Goode
bundle2: allow lazily acquiring the lock...
r26566 > def checklock(orig, repo, *args, **kwargs):
Yuya Nishihara
py3: byte-stringify literals in extension in test-bundle2-exchange.t...
r38622 > if repo.svfs.lexists(b"lock"):
> raise error.Abort(b"Lock should not be taken")
Durham Goode
bundle2: allow lazily acquiring the lock...
r26566 > return orig(repo, *args, **kwargs)
> def extsetup(ui):
Yuya Nishihara
py3: byte-stringify literals in extension in test-bundle2-exchange.t...
r38622 > extensions.wrapfunction(bundle2, b'processbundle', checklock)
Durham Goode
bundle2: allow lazily acquiring the lock...
r26566 > EOF
$ hg init lazylock
$ cat >> lazylock/.hg/hgrc <<EOF
> [extensions]
> locktester=$TESTTMP/locktester.py
> EOF
$ hg clone -q ssh://user@dummy/lazylock lazylockclient
$ cd lazylockclient
$ touch a && hg ci -Aqm a
$ hg push
pushing to ssh://user@dummy/lazylock
searching for changes
Gregory Szorc
bundle2: attribute remote failures to remote (issue4788)...
r26829 remote: Lock should not be taken
abort: push failed on remote
Durham Goode
bundle2: allow lazily acquiring the lock...
r26566 [255]
$ cat >> ../lazylock/.hg/hgrc <<EOF
> [experimental]
> bundle2lazylocking=True
> EOF
$ hg push
pushing to ssh://user@dummy/lazylock
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: added 1 changesets with 1 changes to 1 files
Gregory Szorc
wireproto: config options to disable bundle1...
r27246
$ cd ..
Servers can disable bundle1 for clone/pull operations
$ killdaemons.py
$ hg init bundle2onlyserver
$ cd bundle2onlyserver
$ cat > .hg/hgrc << EOF
> [server]
> bundle1.pull = false
> EOF
$ touch foo
$ hg -q commit -A -m initial
$ hg serve -p $HGPORT -d --pid-file=hg.pid
$ cat hg.pid >> $DAEMON_PIDS
Pierre-Yves David
tests: use 'legacy.exchange' option in 'test-bundle2-exchange.t'...
r29685 $ hg --config devel.legacy.exchange=bundle1 clone http://localhost:$HGPORT/ not-bundle2
Gregory Szorc
wireproto: config options to disable bundle1...
r27246 requesting all changes
abort: remote error:
incompatible Mercurial client; bundle2 required
(see https://www.mercurial-scm.org/wiki/IncompatibleClient)
[255]
$ killdaemons.py
Gregory Szorc
wireproto: support disabling bundle1 only if repo is generaldelta...
r27633 $ cd ..
bundle1 can still pull non-generaldelta repos when generaldelta bundle1 disabled
$ hg --config format.usegeneraldelta=false init notgdserver
$ cd notgdserver
$ cat > .hg/hgrc << EOF
> [server]
> bundle1gd.pull = false
> EOF
$ touch foo
$ hg -q commit -A -m initial
$ hg serve -p $HGPORT -d --pid-file=hg.pid
$ cat hg.pid >> $DAEMON_PIDS
Pierre-Yves David
tests: use 'legacy.exchange' option in 'test-bundle2-exchange.t'...
r29685 $ hg --config devel.legacy.exchange=bundle1 clone http://localhost:$HGPORT/ not-bundle2-1
Gregory Szorc
wireproto: support disabling bundle1 only if repo is generaldelta...
r27633 requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets 96ee1d7354c4
Gregory Szorc
wireproto: support disabling bundle1 only if repo is generaldelta...
r27633 updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ killdaemons.py
$ cd ../bundle2onlyserver
bundle1 pull can be disabled for generaldelta repos only
$ cat > .hg/hgrc << EOF
> [server]
> bundle1gd.pull = false
> EOF
$ hg serve -p $HGPORT -d --pid-file=hg.pid
$ cat hg.pid >> $DAEMON_PIDS
Pierre-Yves David
tests: use 'legacy.exchange' option in 'test-bundle2-exchange.t'...
r29685 $ hg --config devel.legacy.exchange=bundle1 clone http://localhost:$HGPORT/ not-bundle2
Gregory Szorc
wireproto: support disabling bundle1 only if repo is generaldelta...
r27633 requesting all changes
abort: remote error:
incompatible Mercurial client; bundle2 required
(see https://www.mercurial-scm.org/wiki/IncompatibleClient)
[255]
$ killdaemons.py
Gregory Szorc
wireproto: config options to disable bundle1...
r27246
Verify the global server.bundle1 option works
Pierre-Yves David
bundle-tests: operate from outside a repository...
r30911 $ cd ..
$ cat > bundle2onlyserver/.hg/hgrc << EOF
Gregory Szorc
wireproto: config options to disable bundle1...
r27246 > [server]
> bundle1 = false
> EOF
Saurabh Singh
serve: make tests compatible with chg...
r34484 $ hg serve -R bundle2onlyserver -p $HGPORT -d --pid-file=hg.pid
Gregory Szorc
wireproto: config options to disable bundle1...
r27246 $ cat hg.pid >> $DAEMON_PIDS
Pierre-Yves David
tests: use 'legacy.exchange' option in 'test-bundle2-exchange.t'...
r29685 $ hg --config devel.legacy.exchange=bundle1 clone http://localhost:$HGPORT not-bundle2
Gregory Szorc
wireproto: config options to disable bundle1...
r27246 requesting all changes
abort: remote error:
incompatible Mercurial client; bundle2 required
(see https://www.mercurial-scm.org/wiki/IncompatibleClient)
[255]
$ killdaemons.py
Pierre-Yves David
bundle1: fix bundle1-denied reporting for pull over ssh...
r30912 $ hg --config devel.legacy.exchange=bundle1 clone ssh://user@dummy/bundle2onlyserver not-bundle2-ssh
requesting all changes
adding changesets
remote: abort: incompatible Mercurial client; bundle2 required
remote: (see https://www.mercurial-scm.org/wiki/IncompatibleClient)
transaction abort!
rollback completed
abort: stream ended unexpectedly (got 0 bytes, expected 4)
[255]
Pierre-Yves David
bundle-tests: operate from outside a repository...
r30911 $ cat > bundle2onlyserver/.hg/hgrc << EOF
Gregory Szorc
wireproto: support disabling bundle1 only if repo is generaldelta...
r27633 > [server]
> bundle1gd = false
> EOF
Saurabh Singh
serve: make tests compatible with chg...
r34484 $ hg serve -R bundle2onlyserver -p $HGPORT -d --pid-file=hg.pid
Gregory Szorc
wireproto: support disabling bundle1 only if repo is generaldelta...
r27633 $ cat hg.pid >> $DAEMON_PIDS
Pierre-Yves David
tests: use 'legacy.exchange' option in 'test-bundle2-exchange.t'...
r29685 $ hg --config devel.legacy.exchange=bundle1 clone http://localhost:$HGPORT/ not-bundle2
Gregory Szorc
wireproto: support disabling bundle1 only if repo is generaldelta...
r27633 requesting all changes
abort: remote error:
incompatible Mercurial client; bundle2 required
(see https://www.mercurial-scm.org/wiki/IncompatibleClient)
[255]
$ killdaemons.py
Pierre-Yves David
bundle-tests: operate from outside a repository...
r30911 $ cd notgdserver
Gregory Szorc
wireproto: support disabling bundle1 only if repo is generaldelta...
r27633 $ cat > .hg/hgrc << EOF
> [server]
> bundle1gd = false
> EOF
$ hg serve -p $HGPORT -d --pid-file=hg.pid
$ cat hg.pid >> $DAEMON_PIDS
Pierre-Yves David
tests: use 'legacy.exchange' option in 'test-bundle2-exchange.t'...
r29685 $ hg --config devel.legacy.exchange=bundle1 clone http://localhost:$HGPORT/ not-bundle2-2
Gregory Szorc
wireproto: support disabling bundle1 only if repo is generaldelta...
r27633 requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets 96ee1d7354c4
Gregory Szorc
wireproto: support disabling bundle1 only if repo is generaldelta...
r27633 updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ killdaemons.py
$ cd ../bundle2onlyserver
Gregory Szorc
wireproto: config options to disable bundle1...
r27246 Verify bundle1 pushes can be disabled
$ cat > .hg/hgrc << EOF
> [server]
> bundle1.push = false
> [web]
> allow_push = *
> push_ssl = false
> EOF
$ hg serve -p $HGPORT -d --pid-file=hg.pid -E error.log
$ cat hg.pid >> $DAEMON_PIDS
$ cd ..
$ hg clone http://localhost:$HGPORT bundle2-only
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets 96ee1d7354c4
Gregory Szorc
wireproto: config options to disable bundle1...
r27246 updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd bundle2-only
$ echo commit > foo
$ hg commit -m commit
Pierre-Yves David
tests: use 'legacy.exchange' option in 'test-bundle2-exchange.t'...
r29685 $ hg --config devel.legacy.exchange=bundle1 push
Gregory Szorc
wireproto: config options to disable bundle1...
r27246 pushing to http://localhost:$HGPORT/
searching for changes
abort: remote error:
incompatible Mercurial client; bundle2 required
(see https://www.mercurial-scm.org/wiki/IncompatibleClient)
[255]
Pierre-Yves David
bundle1: fix bundle1-denied reporting for push over ssh...
r30909 (also check with ssh)
$ hg --config devel.legacy.exchange=bundle1 push ssh://user@dummy/bundle2onlyserver
pushing to ssh://user@dummy/bundle2onlyserver
searching for changes
remote: abort: incompatible Mercurial client; bundle2 required
Pierre-Yves David
bundle1: display server abort hint during unbundle...
r30910 remote: (see https://www.mercurial-scm.org/wiki/IncompatibleClient)
Pierre-Yves David
bundle1: fix bundle1-denied reporting for push over ssh...
r30909 [1]
Gregory Szorc
wireproto: config options to disable bundle1...
r27246 $ hg push
pushing to http://localhost:$HGPORT/
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: added 1 changesets with 1 changes to 1 files