Show More
@@ -1697,8 +1697,15 b' def addpartbundlestream2(bundler, repo, ' | |||
|
1697 | 1697 | if (includepats or excludepats) and not narrowstream: |
|
1698 | 1698 | raise error.Abort(_('server does not support narrow stream clones')) |
|
1699 | 1699 | |
|
1700 | includeobsmarkers = False | |
|
1701 | if repo.obsstore: | |
|
1702 | remoteversions = obsmarkersversion(bundler.capabilities) | |
|
1703 | if repo.obsstore._version in remoteversions: | |
|
1704 | includeobsmarkers = True | |
|
1705 | ||
|
1700 | 1706 | filecount, bytecount, it = streamclone.generatev2(repo, includepats, |
|
1701 |
excludepats |
|
|
1707 | excludepats, | |
|
1708 | includeobsmarkers) | |
|
1702 | 1709 | requirements = _formatrequirementsspec(repo.requirements) |
|
1703 | 1710 | part = bundler.newpart('stream2', data=it) |
|
1704 | 1711 | part.addparam('bytecount', '%d' % bytecount, mandatory=True) |
@@ -532,7 +532,7 b' def _emit2(repo, entries, totalfilesize)' | |||
|
532 | 532 | finally: |
|
533 | 533 | fp.close() |
|
534 | 534 | |
|
535 | def generatev2(repo, includes, excludes): | |
|
535 | def generatev2(repo, includes, excludes, includeobsmarkers): | |
|
536 | 536 | """Emit content for version 2 of a streaming clone. |
|
537 | 537 | |
|
538 | 538 | the data stream consists the following entries: |
@@ -567,6 +567,9 b' def generatev2(repo, includes, excludes)' | |||
|
567 | 567 | if repo.svfs.exists(name): |
|
568 | 568 | totalfilesize += repo.svfs.lstat(name).st_size |
|
569 | 569 | entries.append((_srcstore, name, _filefull, None)) |
|
570 | if includeobsmarkers and repo.svfs.exists('obsstore'): | |
|
571 | totalfilesize += repo.svfs.lstat('obsstore').st_size | |
|
572 | entries.append((_srcstore, 'obsstore', _filefull, None)) | |
|
570 | 573 | for name in cacheutil.cachetocopy(repo): |
|
571 | 574 | if repo.cachevfs.exists(name): |
|
572 | 575 | totalfilesize += repo.cachevfs.lstat(name).st_size |
@@ -514,3 +514,48 b' stream v1 unsuitable for non-publishing ' | |||
|
514 | 514 | #endif |
|
515 | 515 | |
|
516 | 516 | $ killdaemons.py |
|
517 | ||
|
518 | #if stream-legacy | |
|
519 | ||
|
520 | With v1 of the stream protocol, changeset are always cloned as public. There's | |
|
521 | no obsolescence markers exchange in stream v1. | |
|
522 | ||
|
523 | #endif | |
|
524 | #if stream-bundle2 | |
|
525 | ||
|
526 | Stream repository with obsolescence | |
|
527 | ----------------------------------- | |
|
528 | ||
|
529 | Clone non-publishing with obsolescence | |
|
530 | ||
|
531 | $ cat >> $HGRCPATH << EOF | |
|
532 | > [experimental] | |
|
533 | > evolution=all | |
|
534 | > EOF | |
|
535 | ||
|
536 | $ cd server | |
|
537 | $ echo foo > foo | |
|
538 | $ hg -q commit -m 'about to be pruned' | |
|
539 | $ hg debugobsolete `hg log -r . -T '{node}'` -d '0 0' -u test --record-parents | |
|
540 | obsoleted 1 changesets | |
|
541 | $ hg up null -q | |
|
542 | $ hg log -T '{rev}: {phase}\n' | |
|
543 | 1: draft | |
|
544 | 0: draft | |
|
545 | $ hg serve -p $HGPORT -d --pid-file=hg.pid | |
|
546 | $ cat hg.pid > $DAEMON_PIDS | |
|
547 | $ cd .. | |
|
548 | ||
|
549 | $ hg clone -U --stream http://localhost:$HGPORT with-obsolescence | |
|
550 | streaming all changes | |
|
551 | 1035 files to transfer, 97.1 KB of data | |
|
552 | transferred 97.1 KB in * seconds (* */sec) (glob) | |
|
553 | $ hg -R with-obsolescence log -T '{rev}: {phase}\n' | |
|
554 | 1: draft | |
|
555 | 0: draft | |
|
556 | $ hg debugobsolete -R with-obsolescence | |
|
557 | 50382b884f66690b7045cac93a540cba4d4c906f 0 {c17445101a72edac06facd130d14808dfbd5c7c2} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} | |
|
558 | ||
|
559 | $ killdaemons.py | |
|
560 | ||
|
561 | #endif |
General Comments 0
You need to be logged in to leave comments.
Login now