comparison hgext/convert/hg.py @ 6217:fe8dbbe9520d

Avoid importing mercurial.node/mercurial.repo stuff from mercurial.hg
author Joel Rosdahl <joel@rosdahl.net>
date Thu, 06 Mar 2008 22:51:16 +0100
parents e75aab656f46
children c9b8d2565b92
comparison
equal deleted inserted replaced
6216:a88259018f79 6217:fe8dbbe9520d
13 # following option: "--config convert.hg.saverev=false" 13 # following option: "--config convert.hg.saverev=false"
14 14
15 15
16 import os, time 16 import os, time
17 from mercurial.i18n import _ 17 from mercurial.i18n import _
18 from mercurial.repo import RepoError
18 from mercurial.node import bin, hex, nullid 19 from mercurial.node import bin, hex, nullid
19 from mercurial import hg, revlog, util 20 from mercurial import hg, revlog, util
20 21
21 from common import NoRepo, commit, converter_source, converter_sink 22 from common import NoRepo, commit, converter_source, converter_sink
22 23
30 if os.path.isdir(path) and len(os.listdir(path)) > 0: 31 if os.path.isdir(path) and len(os.listdir(path)) > 0:
31 try: 32 try:
32 self.repo = hg.repository(self.ui, path) 33 self.repo = hg.repository(self.ui, path)
33 if not self.repo.local(): 34 if not self.repo.local():
34 raise NoRepo(_('%s is not a local Mercurial repo') % path) 35 raise NoRepo(_('%s is not a local Mercurial repo') % path)
35 except hg.RepoError, err: 36 except RepoError, err:
36 ui.print_exc() 37 ui.print_exc()
37 raise NoRepo(err.args[0]) 38 raise NoRepo(err.args[0])
38 else: 39 else:
39 try: 40 try:
40 ui.status(_('initializing destination %s repository\n') % path) 41 ui.status(_('initializing destination %s repository\n') % path)
41 self.repo = hg.repository(self.ui, path, create=True) 42 self.repo = hg.repository(self.ui, path, create=True)
42 if not self.repo.local(): 43 if not self.repo.local():
43 raise NoRepo(_('%s is not a local Mercurial repo') % path) 44 raise NoRepo(_('%s is not a local Mercurial repo') % path)
44 self.created.append(path) 45 self.created.append(path)
45 except hg.RepoError, err: 46 except RepoError, err:
46 ui.print_exc() 47 ui.print_exc()
47 raise NoRepo("could not create hg repo %s as sink" % path) 48 raise NoRepo("could not create hg repo %s as sink" % path)
48 self.lock = None 49 self.lock = None
49 self.wlock = None 50 self.wlock = None
50 self.filemapmode = False 51 self.filemapmode = False
153 p2 = parents.pop(0) 154 p2 = parents.pop(0)
154 a = self.repo.rawcommit(files, text, commit.author, commit.date, 155 a = self.repo.rawcommit(files, text, commit.author, commit.date,
155 bin(p1), bin(p2), extra=extra) 156 bin(p1), bin(p2), extra=extra)
156 self.repo.dirstate.clear() 157 self.repo.dirstate.clear()
157 text = "(octopus merge fixup)\n" 158 text = "(octopus merge fixup)\n"
158 p2 = hg.hex(self.repo.changelog.tip()) 159 p2 = hex(self.repo.changelog.tip())
159 160
160 if self.filemapmode and nparents == 1: 161 if self.filemapmode and nparents == 1:
161 man = self.repo.manifest 162 man = self.repo.manifest
162 mnode = self.repo.changelog.read(bin(p2))[0] 163 mnode = self.repo.changelog.read(bin(p2))[0]
163 if not man.cmp(m1node, man.revision(mnode)): 164 if not man.cmp(m1node, man.revision(mnode)):
192 extra = {} 193 extra = {}
193 if self.tagsbranch != 'default': 194 if self.tagsbranch != 'default':
194 extra['branch'] = self.tagsbranch 195 extra['branch'] = self.tagsbranch
195 try: 196 try:
196 tagparent = self.repo.changectx(self.tagsbranch).node() 197 tagparent = self.repo.changectx(self.tagsbranch).node()
197 except hg.RepoError, inst: 198 except RepoError, inst:
198 tagparent = nullid 199 tagparent = nullid
199 self.repo.rawcommit([".hgtags"], "update tags", "convert-repo", 200 self.repo.rawcommit([".hgtags"], "update tags", "convert-repo",
200 date, tagparent, nullid, extra=extra) 201 date, tagparent, nullid, extra=extra)
201 return hex(self.repo.changelog.tip()) 202 return hex(self.repo.changelog.tip())
202 203
210 try: 211 try:
211 self.repo = hg.repository(self.ui, path) 212 self.repo = hg.repository(self.ui, path)
212 # try to provoke an exception if this isn't really a hg 213 # try to provoke an exception if this isn't really a hg
213 # repo, but some other bogus compatible-looking url 214 # repo, but some other bogus compatible-looking url
214 if not self.repo.local(): 215 if not self.repo.local():
215 raise hg.RepoError() 216 raise RepoError()
216 except hg.RepoError: 217 except RepoError:
217 ui.print_exc() 218 ui.print_exc()
218 raise NoRepo("%s is not a local Mercurial repo" % path) 219 raise NoRepo("%s is not a local Mercurial repo" % path)
219 self.lastrev = None 220 self.lastrev = None
220 self.lastctx = None 221 self.lastctx = None
221 self._changescache = None 222 self._changescache = None