tests: test changegroup generation for filtered changesets (issue4982) stable
authorGregory Szorc <gregory.szorc@gmail.com>
Wed, 02 Dec 2015 14:20:13 -0800
branchstable
changeset 27227 f20533623833
parent 27226 f5e8cb813a4d
child 27228 10695f8f3323
tests: test changegroup generation for filtered changesets (issue4982) The test demonstrates the buggy behavior from issue4982 where the changegroup contains changesets it shouldn't.
tests/test-obsolete-changeset-exchange.t
--- a/tests/test-obsolete-changeset-exchange.t	Wed Dec 02 23:04:58 2015 +0900
+++ b/tests/test-obsolete-changeset-exchange.t	Wed Dec 02 14:20:13 2015 -0800
@@ -83,3 +83,76 @@
   adding file changes
   added 1 changesets with 0 changes to 1 files (+1 heads)
   (run 'hg heads' to see heads)
+  $ cd ..
+
+pull does not fetch excessive changesets when common node is hidden (issue4982)
+-------------------------------------------------------------------------------
+
+initial repo with server and client matching
+
+  $ hg init pull-hidden-common
+  $ cd pull-hidden-common
+  $ touch foo
+  $ hg -q commit -A -m initial
+  $ echo 1 > foo
+  $ hg commit -m 1
+  $ echo 2a > foo
+  $ hg commit -m 2a
+  $ cd ..
+  $ hg clone --pull pull-hidden-common pull-hidden-common-client
+  requesting all changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 3 changesets with 3 changes to 1 files
+  updating to branch default
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
+server obsoletes the old head
+
+  $ cd pull-hidden-common
+  $ hg -q up -r 1
+  $ echo 2b > foo
+  $ hg -q commit -m 2b
+  $ hg debugobsolete 6a29ed9c68defff1a139e5c6fa9696fb1a75783d bec0734cd68e84477ba7fc1d13e6cff53ab70129
+  $ cd ..
+
+client only pulls down 1 changeset
+("all local heads known remotely" may change if the wire protocol discovery
+commands ever stop saying they have hidden changesets)
+
+  $ cd pull-hidden-common-client
+  $ hg pull --debug
+  pulling from $TESTTMP/pull-hidden-common (glob)
+  query 1; heads
+  searching for changes
+  all local heads known remotely
+  3 changesets found
+  list of changesets:
+  96ee1d7354c4ad7372047672c36a1f561e3a6a4c
+  a33779fdfc23063680fc31e9ff637dff6876d3d2
+  bec0734cd68e84477ba7fc1d13e6cff53ab70129
+  listing keys for "phase"
+  listing keys for "bookmarks"
+  bundle2-output-bundle: "HG20", 3 parts total
+  bundle2-output-part: "changegroup" (params: 1 mandatory 1 advisory) streamed payload
+  bundle2-output-part: "listkeys" (params: 1 mandatory) empty payload
+  bundle2-output-part: "listkeys" (params: 1 mandatory) empty payload
+  bundle2-input-bundle: with-transaction
+  bundle2-input-part: "changegroup" (params: 1 mandatory 1 advisory) supported
+  adding changesets
+  add changeset 96ee1d7354c4
+  add changeset a33779fdfc23
+  add changeset bec0734cd68e
+  adding manifests
+  adding file changes
+  adding foo revisions
+  added 1 changesets with 1 changes to 1 files (+1 heads)
+  bundle2-input-part: total payload size 1378
+  bundle2-input-part: "listkeys" (params: 1 mandatory) supported
+  bundle2-input-part: "listkeys" (params: 1 mandatory) supported
+  bundle2-input-bundle: 2 parts total
+  checking for updated bookmarks
+  listing keys for "phases"
+  updating the branch cache
+  (run 'hg heads' to see heads, 'hg merge' to merge)