diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -297,8 +297,10 @@ def write_bundle(cg, filename, compress= fh.write(z.compress(chunk)) fh.write(z.flush()) except: + fh.close() os.unlink(filename) raise + fh.close() def dodiff(fp, ui, repo, node1, node2, files=None, match=util.always, changes=None, text=False, opts={}): @@ -1790,7 +1792,6 @@ def incoming(ui, repo, source="default", cg = other.changegroup(incoming, "incoming") write_bundle(cg, fname, compress=other.local(), fh=f) - f.close() if not other.local(): # use a bundlerepo other = bundlerepo.bundlerepository(ui, repo.root, fname)