diff mercurial/debugcommands.py @ 30502:6da030496667

debugcommands: move debug{create,apply}streambundleclone to the new module
author Gregory Szorc <gregory.szorc@gmail.com>
date Wed, 17 Aug 2016 20:37:54 -0700
parents a87e469201f9
children 6bfb333a6f2f
line wrap: on
line diff
--- a/mercurial/debugcommands.py	Wed Aug 17 21:07:22 2016 -0700
+++ b/mercurial/debugcommands.py	Wed Aug 17 20:37:54 2016 -0700
@@ -27,6 +27,7 @@
     revlog,
     scmutil,
     simplemerge,
+    streamclone,
 )
 
 release = lockmod.release
@@ -273,3 +274,22 @@
             version = part.params.get('version', '01')
             cg = changegroup.getunbundler(version, part, 'UN')
             _debugchangegroup(ui, cg, all=all, indent=4, **opts)
+
+@command('debugcreatestreamclonebundle', [], 'FILE')
+def debugcreatestreamclonebundle(ui, repo, fname):
+    """create a stream clone bundle file
+
+    Stream bundles are special bundles that are essentially archives of
+    revlog files. They are commonly used for cloning very quickly.
+    """
+    requirements, gen = streamclone.generatebundlev1(repo)
+    changegroup.writechunks(ui, gen, fname)
+
+    ui.write(_('bundle requirements: %s\n') % ', '.join(sorted(requirements)))
+
+@command('debugapplystreamclonebundle', [], 'FILE')
+def debugapplystreamclonebundle(ui, repo, fname):
+    """apply a stream clone bundle file"""
+    f = hg.openpath(ui, fname)
+    gen = exchange.readbundle(ui, f, fname)
+    gen.apply(repo)