equal
deleted
inserted
replaced
57 } |
57 } |
58 |
58 |
59 # hgweb uses this list to communicate its preferred type |
59 # hgweb uses this list to communicate its preferred type |
60 bundlepriority = ['HG10GZ', 'HG10BZ', 'HG10UN'] |
60 bundlepriority = ['HG10GZ', 'HG10BZ', 'HG10UN'] |
61 |
61 |
62 def writebundle(cg, filename, bundletype): |
62 def writebundle(cg, filename, bundletype, vfs=None): |
63 """Write a bundle file and return its filename. |
63 """Write a bundle file and return its filename. |
64 |
64 |
65 Existing files will not be overwritten. |
65 Existing files will not be overwritten. |
66 If no filename is specified, a temporary file is created. |
66 If no filename is specified, a temporary file is created. |
67 bz2 compression can be turned off. |
67 bz2 compression can be turned off. |
70 |
70 |
71 fh = None |
71 fh = None |
72 cleanup = None |
72 cleanup = None |
73 try: |
73 try: |
74 if filename: |
74 if filename: |
75 fh = open(filename, "wb") |
75 if vfs: |
|
76 fh = vfs.open(filename, "wb") |
|
77 else: |
|
78 fh = open(filename, "wb") |
76 else: |
79 else: |
77 fd, filename = tempfile.mkstemp(prefix="hg-bundle-", suffix=".hg") |
80 fd, filename = tempfile.mkstemp(prefix="hg-bundle-", suffix=".hg") |
78 fh = os.fdopen(fd, "wb") |
81 fh = os.fdopen(fd, "wb") |
79 cleanup = filename |
82 cleanup = filename |
80 |
83 |
110 return filename |
113 return filename |
111 finally: |
114 finally: |
112 if fh is not None: |
115 if fh is not None: |
113 fh.close() |
116 fh.close() |
114 if cleanup is not None: |
117 if cleanup is not None: |
115 os.unlink(cleanup) |
118 if filename and vfs: |
|
119 vfs.unlink(cleanup) |
|
120 else: |
|
121 os.unlink(cleanup) |
116 |
122 |
117 def decompressor(fh, alg): |
123 def decompressor(fh, alg): |
118 if alg == 'UN': |
124 if alg == 'UN': |
119 return fh |
125 return fh |
120 elif alg == 'GZ': |
126 elif alg == 'GZ': |