hgext/mq.py
changeset 3708 1debe70db9d7
parent 3707 67f44b825784
child 3763 955475d237fc
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])