Comments
Patch
@@ -1687,7 +1687,12 @@ def addpartbundlestream2(bundler, repo,
# to avoid compression to consumers of the bundle.
bundler.prefercompressed = False
- filecount, bytecount, it = streamclone.generatev2(repo)
+ includeobsmarkers = False
+ if repo.obsstore:
+ remoteversions = obsmarkersversion(bundler.capabilities)
+ if repo.obsstore._version in remoteversions:
+ includeobsmarkers = True
+ filecount, bytecount, it = streamclone.generatev2(repo, includeobsmarkers)
requirements = _formatrequirementsspec(repo.requirements)
part = bundler.newpart('stream2', data=it)
part.addparam('bytecount', '%d' % bytecount, mandatory=True)
@@ -531,7 +531,7 @@ def _emit2(repo, entries, totalfilesize)
finally:
fp.close()
-def generatev2(repo):
+def generatev2(repo, includeobsmarkers):
"""Emit content for version 2 of a streaming clone.
the data stream consists the following entries:
@@ -558,6 +558,9 @@ def generatev2(repo):
if repo.svfs.exists(name):
totalfilesize += repo.svfs.lstat(name).st_size
entries.append((_srcstore, name, _filefull, None))
+ if includeobsmarkers and repo.svfs.exists('obsstore'):
+ totalfilesize += repo.svfs.lstat('obsstore').st_size
+ entries.append((_srcstore, 'obsstore', _filefull, None))
for name in cacheutil.cachetocopy(repo):
if repo.cachevfs.exists(name):
totalfilesize += repo.cachevfs.lstat(name).st_size
@@ -514,3 +514,48 @@ stream v1 unsuitable for non-publishing
#endif
$ killdaemons.py
+
+#if stream-legacy
+
+With v1 of the stream protocol, changeset are always cloned as public. There's
+no obsolescence markers exchange in stream v1.
+
+#endif
+#if stream-bundle2
+
+Stream repository with obsolescence
+-----------------------------------
+
+Clone non-publishing with obsolescence
+
+ $ cat >> $HGRCPATH << EOF
+ > [experimental]
+ > evolution=all
+ > EOF
+
+ $ cd server
+ $ echo foo > foo
+ $ hg -q commit -m 'about to be pruned'
+ $ hg debugobsolete `hg log -r . -T '{node}'` -d '0 0' -u test --record-parents
+ obsoleted 1 changesets
+ $ hg up null -q
+ $ hg log -T '{rev}: {phase}\n'
+ 1: draft
+ 0: draft
+ $ hg serve -p $HGPORT -d --pid-file=hg.pid
+ $ cat hg.pid > $DAEMON_PIDS
+ $ cd ..
+
+ $ hg clone -U --stream http://localhost:$HGPORT with-obsolescence
+ streaming all changes
+ 1035 files to transfer, 97.1 KB of data
+ transferred 97.1 KB in * seconds (* */sec) (glob)
+ $ hg -R with-obsolescence log -T '{rev}: {phase}\n'
+ 1: draft
+ 0: draft
+ $ hg debugobsolete -R with-obsolescence
+ 50382b884f66690b7045cac93a540cba4d4c906f 0 {c17445101a72edac06facd130d14808dfbd5c7c2} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
+
+ $ killdaemons.py
+
+#endif