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])