コード例 #1
0
ファイル: repo.py プロジェクト: mtmiller/git-cinnabar
def unbundle_fh(fh, path):
    header = readexactly(fh, 4)
    magic, version = header[0:2], header[2:4]
    if magic != b'HG':
        raise Exception('%s: not a Mercurial bundle' % fsdecode(path))
    if version == b'10':
        alg = readexactly(fh, 2)
        return cg1unpacker(fh, alg)
    elif unbundle20 and version.startswith(b'2'):
        return unbundle20(get_ui(), fh)
    else:
        raise Exception('%s: unsupported bundle version %s' %
                        (fsdecode(path), version.decode('ascii')))
コード例 #2
0
ファイル: repo.py プロジェクト: glandium/git-cinnabar
def unbundle_fh(fh, path):
    header = readexactly(fh, 4)
    magic, version = header[0:2], header[2:4]
    if magic != 'HG':
        raise Exception('%s: not a Mercurial bundle' % path)
    if version == '10':
        alg = readexactly(fh, 2)
        return cg1unpacker(fh, alg)
    elif unbundle20 and version.startswith('2'):
        return unbundle20(get_ui(), fh)
    else:
        raise Exception('%s: unsupported bundle version %s' % (path,
                        version))
コード例 #3
0
    def getbundle(self, name, heads, common, *args, **kwargs):
        data = HgRepoHelper.getbundle((hexlify(h) for h in heads),
                                      (hexlify(c) for c in common),
                                      ','.join(kwargs.get('bundlecaps', ())))
        header = readexactly(data, 4)
        if header == 'HG20':
            return unbundle20(self.ui, data)

        class Reader(object):
            def __init__(self, header, data):
                self.header = header
                self.data = data

            def read(self, length):
                result = self.header[:length]
                self.header = self.header[length:]
                if length > len(result):
                    result += self.data.read(length - len(result))
                return result

        return Reader(header, data)
コード例 #4
0
ファイル: __init__.py プロジェクト: jhlin/git-cinnabar
    def getbundle(self, name, heads, common, *args, **kwargs):
        data = HgRepoHelper.getbundle((hexlify(h) for h in heads),
                                      (hexlify(c) for c in common),
                                      ','.join(kwargs.get('bundlecaps', ())))
        header = readexactly(data, 4)
        if header == 'HG20':
            return unbundle20(get_ui(), data)

        class Reader(object):
            def __init__(self, header, data):
                self.header = header
                self.data = data

            def read(self, length):
                result = self.header[:length]
                self.header = self.header[length:]
                if length > len(result):
                    result += self.data.read(length - len(result))
                return result

        return Reader(header, data)
コード例 #5
0
 def unbundle(self, cg, heads, *args, **kwargs):
     data = HgRepoHelper.unbundle(cg, (hexlify(h) if h != 'force' else h
                                       for h in heads))
     if isinstance(data, str) and data.startswith('HG20'):
         data = unbundle20(self.ui, StringIO(data[4:]))
     return data
コード例 #6
0
ファイル: __init__.py プロジェクト: jhlin/git-cinnabar
 def unbundle(self, cg, heads, *args, **kwargs):
     data = HgRepoHelper.unbundle(cg, (hexlify(h) if h != 'force' else h
                                       for h in heads))
     if isinstance(data, str) and data.startswith('HG20'):
         data = unbundle20(get_ui(), StringIO(data[4:]))
     return data