Mercurial > hg > mercurial-crew
comparison mercurial/changegroup.py @ 3669:f4dc02d7fb71
unduplicate bundle writing code from httprepo
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Wed, 15 Nov 2006 23:37:45 -0600 |
parents | 8500a13ec44b |
children | 9c1737a3e254 |
comparison
equal
deleted
inserted
replaced
3668:e99ba8726bda | 3669:f4dc02d7fb71 |
---|---|
6 This software may be used and distributed according to the terms | 6 This software may be used and distributed according to the terms |
7 of the GNU General Public License, incorporated herein by reference. | 7 of the GNU General Public License, incorporated herein by reference. |
8 """ | 8 """ |
9 from i18n import gettext as _ | 9 from i18n import gettext as _ |
10 from demandload import * | 10 from demandload import * |
11 demandload(globals(), "struct os bz2 util tempfile") | 11 demandload(globals(), "struct os bz2 zlib util tempfile") |
12 | 12 |
13 def getchunk(source): | 13 def getchunk(source): |
14 """get a chunk from a changegroup""" | 14 """get a chunk from a changegroup""" |
15 d = source.read(4) | 15 d = source.read(4) |
16 if not d: | 16 if not d: |
45 def compress(self, x): | 45 def compress(self, x): |
46 return x | 46 return x |
47 def flush(self): | 47 def flush(self): |
48 return "" | 48 return "" |
49 | 49 |
50 def writebundle(cg, filename, compress): | 50 bundletypes = { |
51 "": nocompress, | |
52 "HG10UN": nocompress, | |
53 "HG10": lambda: bz2.BZ2Compressor(9), | |
54 "HG10GZ": zlib.compressobj, | |
55 } | |
56 | |
57 def writebundle(cg, filename, type): | |
51 """Write a bundle file and return its filename. | 58 """Write a bundle file and return its filename. |
52 | 59 |
53 Existing files will not be overwritten. | 60 Existing files will not be overwritten. |
54 If no filename is specified, a temporary file is created. | 61 If no filename is specified, a temporary file is created. |
55 bz2 compression can be turned off. | 62 bz2 compression can be turned off. |
66 else: | 73 else: |
67 fd, filename = tempfile.mkstemp(prefix="hg-bundle-", suffix=".hg") | 74 fd, filename = tempfile.mkstemp(prefix="hg-bundle-", suffix=".hg") |
68 fh = os.fdopen(fd, "wb") | 75 fh = os.fdopen(fd, "wb") |
69 cleanup = filename | 76 cleanup = filename |
70 | 77 |
71 if compress: | 78 fh.write(type) |
72 fh.write("HG10") | 79 z = bundletypes[type]() |
73 z = bz2.BZ2Compressor(9) | 80 |
74 else: | |
75 fh.write("HG10UN") | |
76 z = nocompress() | |
77 # parse the changegroup data, otherwise we will block | 81 # parse the changegroup data, otherwise we will block |
78 # in case of sshrepo because we don't know the end of the stream | 82 # in case of sshrepo because we don't know the end of the stream |
79 | 83 |
80 # an empty chunkiter is the end of the changegroup | 84 # an empty chunkiter is the end of the changegroup |
81 empty = False | 85 empty = False |