##// END OF EJS Templates
merge with crew.
merge with crew.

File last commit:

r1997:802e8a02 default
r2433:d09da6fc merge default
Show More
changegroup.py
44 lines | 1.1 KiB | text/x-python | PythonLexer
Thomas Arendsen Hein
make incoming work via ssh (issue139); move chunk code into separate module....
r1981 """
changegroup.py - Mercurial changegroup manipulation functions
Copyright 2006 Matt Mackall <mpm@selenic.com>
This software may be used and distributed according to the terms
of the GNU General Public License, incorporated herein by reference.
"""
import struct
Thomas Arendsen Hein
Added missing gettext import to changegroup.py.
r1997 from i18n import gettext as _
Thomas Arendsen Hein
make incoming work via ssh (issue139); move chunk code into separate module....
r1981 from demandload import *
demandload(globals(), "util")
def getchunk(source):
"""get a chunk from a changegroup"""
d = source.read(4)
if not d:
return ""
l = struct.unpack(">l", d)[0]
if l <= 4:
return ""
d = source.read(l - 4)
if len(d) < l - 4:
raise util.Abort(_("premature EOF reading chunk"
" (got %d bytes, expected %d)")
% (len(d), l - 4))
return d
def chunkiter(source):
"""iterate through the chunks in source"""
while 1:
c = getchunk(source)
if not c:
break
yield c
def genchunk(data):
"""build a changegroup chunk"""
header = struct.pack(">l", len(data)+ 4)
return "%s%s" % (header, data)
def closechunk():
return struct.pack(">l", 0)