hgext/convert/hg.py
changeset 5014 914054ca532e
parent 5013 6c1029aacc9a
child 5016 4ebc8693ce72
equal deleted inserted replaced
5013:6c1029aacc9a 5014:914054ca532e
     6 # thus have different hashes for changesets that are otherwise
     6 # thus have different hashes for changesets that are otherwise
     7 # identical.
     7 # identical.
     8 
     8 
     9 
     9 
    10 import os, time
    10 import os, time
       
    11 from mercurial.i18n import _
    11 from mercurial.node import *
    12 from mercurial.node import *
    12 from mercurial import hg, revlog, util
    13 from mercurial import hg, lock, revlog, util
    13 
    14 
    14 from common import NoRepo, commit, converter_source, converter_sink
    15 from common import NoRepo, commit, converter_source, converter_sink
    15 
    16 
    16 class mercurial_sink(converter_sink):
    17 class mercurial_sink(converter_sink):
    17     def __init__(self, ui, path):
    18     def __init__(self, ui, path):
    19         self.ui = ui
    20         self.ui = ui
    20         try:
    21         try:
    21             self.repo = hg.repository(self.ui, path)
    22             self.repo = hg.repository(self.ui, path)
    22         except:
    23         except:
    23             raise NoRepo("could not open hg repo %s as sink" % path)
    24             raise NoRepo("could not open hg repo %s as sink" % path)
       
    25         self.lock = None
       
    26         self.wlock = None
       
    27 
       
    28     def before(self):
       
    29         self.lock = self.repo.lock()
       
    30         self.wlock = self.repo.wlock()
       
    31 
       
    32     def after(self):
       
    33         self.lock = None
       
    34         self.wlock = None
    24 
    35 
    25     def revmapfile(self):
    36     def revmapfile(self):
    26         return os.path.join(self.path, ".hg", "shamap")
    37         return os.path.join(self.path, ".hg", "shamap")
    27 
    38 
    28     def authorfile(self):
    39     def authorfile(self):
    70         while parents:
    81         while parents:
    71             p1 = p2
    82             p1 = p2
    72             p2 = parents.pop(0)
    83             p2 = parents.pop(0)
    73             a = self.repo.rawcommit(files, text, commit.author, commit.date,
    84             a = self.repo.rawcommit(files, text, commit.author, commit.date,
    74                                     hg.bin(p1), hg.bin(p2), extra=extra)
    85                                     hg.bin(p1), hg.bin(p2), extra=extra)
       
    86             self.repo.dirstate.invalidate()
    75             text = "(octopus merge fixup)\n"
    87             text = "(octopus merge fixup)\n"
    76             p2 = hg.hex(self.repo.changelog.tip())
    88             p2 = hg.hex(self.repo.changelog.tip())
    77 
    89 
    78         return p2
    90         return p2
    79 
    91