Mercurial > hg > mercurial-crew-with-dirclash
comparison hgext/mq.py @ 3708:1debe70db9d7
Make mq use changegroup.writebundle for writing strip backups.
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Wed, 22 Nov 2006 23:07:15 +0100 |
parents | 67f44b825784 |
children | 955475d237fc |
comparison
equal
deleted
inserted
replaced
3707:67f44b825784 | 3708:1debe70db9d7 |
---|---|
31 | 31 |
32 from mercurial.demandload import * | 32 from mercurial.demandload import * |
33 from mercurial.i18n import gettext as _ | 33 from mercurial.i18n import gettext as _ |
34 from mercurial import commands | 34 from mercurial import commands |
35 demandload(globals(), "os sys re struct traceback errno bz2") | 35 demandload(globals(), "os sys re struct traceback errno bz2") |
36 demandload(globals(), "mercurial:cmdutil,hg,patch,revlog,util") | 36 demandload(globals(), "mercurial:cmdutil,hg,patch,revlog,util,changegroup") |
37 | 37 |
38 commands.norepo += " qclone qversion" | 38 commands.norepo += " qclone qversion" |
39 | 39 |
40 class statusentry: | 40 class statusentry: |
41 def __init__(self, rev, name=None): | 41 def __init__(self, rev, name=None): |
610 if not os.path.isdir(backupdir): | 610 if not os.path.isdir(backupdir): |
611 os.mkdir(backupdir) | 611 os.mkdir(backupdir) |
612 name = os.path.join(backupdir, "%s" % revlog.short(rev)) | 612 name = os.path.join(backupdir, "%s" % revlog.short(rev)) |
613 name = savename(name) | 613 name = savename(name) |
614 self.ui.warn("saving bundle to %s\n" % name) | 614 self.ui.warn("saving bundle to %s\n" % name) |
615 # TODO, exclusive open | 615 return changegroup.writebundle(cg, name, "HG10BZ") |
616 f = open(name, "wb") | |
617 try: | |
618 f.write("HG10") | |
619 z = bz2.BZ2Compressor(9) | |
620 while 1: | |
621 chunk = cg.read(4096) | |
622 if not chunk: | |
623 break | |
624 f.write(z.compress(chunk)) | |
625 f.write(z.flush()) | |
626 except: | |
627 os.unlink(name) | |
628 raise | |
629 f.close() | |
630 return name | |
631 | 616 |
632 def stripall(rev, revnum): | 617 def stripall(rev, revnum): |
633 cl = repo.changelog | 618 cl = repo.changelog |
634 c = cl.read(rev) | 619 c = cl.read(rev) |
635 mm = repo.manifest.read(c[0]) | 620 mm = repo.manifest.read(c[0]) |