comparison tests/test-treemanifest.t @ 27953:88609cfa3745 stable

changegroup: fix pulling to treemanifest repo from flat repo (issue5066) In c0f11347b107 (changegroup: don't support versions 01 and 02 with treemanifests, 2016-01-19), I stopped supporting use of cg1 and cg2 with treemanifest repos. What I had not considered was that it's perfectly safe to pull *to* a treemanifest repo using any changegroup version. As reported in issue5066, I therefore broke pull from old repos into a treemanifest repo. It was not covered by the test case, because that pulled from a local repo while enabling treemanifests, which enabled treemanifests on the source repo as well. After switching to pulling via HTTP, it breaks. Fix by splitting up changegroup.supportedversions() into supportedincomingversions() and supportedoutgoingversions().
author Martin von Zweigbergk <martinvonz@google.com>
date Wed, 27 Jan 2016 09:07:28 -0800
parents c5ffbd4c033b
children ed94b24a3bb2
comparison
equal deleted inserted replaced
27952:c5ffbd4c033b 27953:88609cfa3745
1 $ cat << EOF >> $HGRCPATH 1 $ cat << EOF >> $HGRCPATH
2 > [format] 2 > [format]
3 > usegeneraldelta=yes 3 > usegeneraldelta=yes
4 > [ui]
5 > ssh=python "$TESTDIR/dummyssh"
4 > EOF 6 > EOF
5 7
6 Set up repo 8 Set up repo
7 9
8 $ hg --config experimental.treemanifest=True init repo 10 $ hg --config experimental.treemanifest=True init repo
201 $ hg merge 1 203 $ hg merge 1
202 3 files updated, 0 files merged, 0 files removed, 0 files unresolved 204 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
203 (branch merge, don't forget to commit) 205 (branch merge, don't forget to commit)
204 $ hg ci -m 'merge of flat manifests to new flat manifest' 206 $ hg ci -m 'merge of flat manifests to new flat manifest'
205 207
208 $ hg serve -p $HGPORT -d --pid-file=hg.pid --errorlog=errors.log
209 $ cat hg.pid >> $DAEMON_PIDS
210
206 Create clone with tree manifests enabled 211 Create clone with tree manifests enabled
207 212
208 $ cd .. 213 $ cd ..
209 $ hg clone --pull --config experimental.treemanifest=1 repo-flat repo-mixed 214 $ hg clone --config experimental.treemanifest=1 \
210 requesting all changes 215 > http://localhost:$HGPORT repo-mixed -r 1
211 adding changesets 216 adding changesets
212 adding manifests 217 adding manifests
213 adding file changes 218 adding file changes
214 added 4 changesets with 17 changes to 11 files 219 added 2 changesets with 14 changes to 11 files
215 updating to branch default 220 updating to branch default
216 11 files updated, 0 files merged, 0 files removed, 0 files unresolved 221 11 files updated, 0 files merged, 0 files removed, 0 files unresolved
217 $ cd repo-mixed 222 $ cd repo-mixed
218 $ test -d .hg/store/meta 223 $ test -d .hg/store/meta
219 [1] 224 [1]
220 $ grep treemanifest .hg/requires 225 $ grep treemanifest .hg/requires
221 treemanifest 226 treemanifest
222 227
228 Should be possible to push updates from flat to tree manifest repo
229
230 $ hg -R ../repo-flat push ssh://user@dummy/repo-mixed
231 pushing to ssh://user@dummy/repo-mixed
232 searching for changes
233 remote: adding changesets
234 remote: adding manifests
235 remote: adding file changes
236 remote: added 2 changesets with 3 changes to 3 files
237
223 Commit should store revlog per directory 238 Commit should store revlog per directory
224 239
225 $ hg co 1 240 $ hg co 1
226 3 files updated, 0 files merged, 0 files removed, 0 files unresolved 241 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
227 $ echo 3 > a 242 $ echo 3 > a
228 $ echo 3 > dir1/a 243 $ echo 3 > dir1/a
229 $ echo 3 > dir1/dir1/a 244 $ echo 3 > dir1/dir1/a
230 $ hg ci -m 'first tree' 245 $ hg ci -m 'first tree'
231 created new head 246 created new head
454 $ hg ci -m narf 469 $ hg ci -m narf
455 $ echo troz >> b/bar/orange/fly/gnat.py 470 $ echo troz >> b/bar/orange/fly/gnat.py
456 $ hg ci -m troz 471 $ hg ci -m troz
457 472
458 Test cloning a treemanifest repo over http. 473 Test cloning a treemanifest repo over http.
459 $ hg serve -p $HGPORT -d --pid-file=hg.pid --errorlog=errors.log 474 $ hg serve -p $HGPORT2 -d --pid-file=hg.pid --errorlog=errors.log
460 $ cat hg.pid >> $DAEMON_PIDS 475 $ cat hg.pid >> $DAEMON_PIDS
461 $ cd .. 476 $ cd ..
462 We can clone even with the knob turned off and we'll get a treemanifest repo. 477 We can clone even with the knob turned off and we'll get a treemanifest repo.
463 $ hg clone --config experimental.treemanifest=False \ 478 $ hg clone --config experimental.treemanifest=False \
464 > --config experimental.changegroup3=True \ 479 > --config experimental.changegroup3=True \
465 > http://localhost:$HGPORT deepclone 480 > http://localhost:$HGPORT2 deepclone
466 requesting all changes 481 requesting all changes
467 adding changesets 482 adding changesets
468 adding manifests 483 adding manifests
469 adding file changes 484 adding file changes
470 added 3 changesets with 10 changes to 8 files 485 added 3 changesets with 10 changes to 8 files