summaryrefslogtreecommitdiff
path: root/sys/lib/python/mercurial/streamclone.py
diff options
context:
space:
mode:
authorOri Bernstein <ori@eigenstate.org>2021-06-14 00:00:37 +0000
committerOri Bernstein <ori@eigenstate.org>2021-06-14 00:00:37 +0000
commita73a964e51247ed169d322c725a3a18859f109a3 (patch)
tree3f752d117274d444bda44e85609aeac1acf313f3 /sys/lib/python/mercurial/streamclone.py
parente64efe273fcb921a61bf27d33b230c4e64fcd425 (diff)
python, hg: tow outside the environment.
they've served us well, and can ride off into the sunset.
Diffstat (limited to 'sys/lib/python/mercurial/streamclone.py')
-rw-r--r--sys/lib/python/mercurial/streamclone.py67
1 files changed, 0 insertions, 67 deletions
diff --git a/sys/lib/python/mercurial/streamclone.py b/sys/lib/python/mercurial/streamclone.py
deleted file mode 100644
index 82cd2f730..000000000
--- a/sys/lib/python/mercurial/streamclone.py
+++ /dev/null
@@ -1,67 +0,0 @@
-# streamclone.py - streaming clone server support for mercurial
-#
-# Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
-#
-# This software may be used and distributed according to the terms of the
-# GNU General Public License version 2, incorporated herein by reference.
-
-import util, error
-from i18n import _
-
-from mercurial import store
-
-class StreamException(Exception):
- def __init__(self, code):
- Exception.__init__(self)
- self.code = code
- def __str__(self):
- return '%i\n' % self.code
-
-# if server supports streaming clone, it advertises "stream"
-# capability with value that is version+flags of repo it is serving.
-# client only streams if it can read that repo format.
-
-# stream file format is simple.
-#
-# server writes out line that says how many files, how many total
-# bytes. separator is ascii space, byte counts are strings.
-#
-# then for each file:
-#
-# server writes out line that says filename, how many bytes in
-# file. separator is ascii nul, byte count is string.
-#
-# server writes out raw file data.
-
-def stream_out(repo, untrusted=False):
- '''stream out all metadata files in repository.
- writes to file-like object, must support write() and optional flush().'''
-
- if not repo.ui.configbool('server', 'uncompressed', untrusted=untrusted):
- raise StreamException(1)
-
- entries = []
- total_bytes = 0
- try:
- # get consistent snapshot of repo, lock during scan
- lock = repo.lock()
- try:
- repo.ui.debug(_('scanning\n'))
- for name, ename, size in repo.store.walk():
- # for backwards compat, name was partially encoded
- entries.append((store.encodedir(name), size))
- total_bytes += size
- finally:
- lock.release()
- except error.LockError:
- raise StreamException(2)
-
- yield '0\n'
- repo.ui.debug(_('%d files, %d bytes to transfer\n') %
- (len(entries), total_bytes))
- yield '%d %d\n' % (len(entries), total_bytes)
- for name, size in entries:
- repo.ui.debug(_('sending %s (%d bytes)\n') % (name, size))
- yield '%s\0%d\n' % (name, size)
- for chunk in util.filechunkiter(repo.sopener(name), limit=size):
- yield chunk