comparison hgext/transplant.py @ 15204:3ce9b1a7538b

transplant: wrap a transaction around the whole command
author Greg Ward <greg@gerg.ca>
date Tue, 04 Oct 2011 19:43:45 -0400
parents 39235b398248
children f7db54b832af
comparison
equal deleted inserted replaced
15203:c7ce651a6bc9 15204:3ce9b1a7538b
103 p1, p2 = repo.dirstate.parents() 103 p1, p2 = repo.dirstate.parents()
104 pulls = [] 104 pulls = []
105 diffopts = patch.diffopts(self.ui, opts) 105 diffopts = patch.diffopts(self.ui, opts)
106 diffopts.git = True 106 diffopts.git = True
107 107
108 lock = wlock = None 108 lock = wlock = tr = None
109 try: 109 try:
110 wlock = repo.wlock() 110 wlock = repo.wlock()
111 lock = repo.lock() 111 lock = repo.lock()
112 tr = repo.transaction('transplant')
112 for rev in revs: 113 for rev in revs:
113 node = revmap[rev] 114 node = revmap[rev]
114 revstr = '%s:%s' % (rev, short(node)) 115 revstr = '%s:%s' % (rev, short(node))
115 116
116 if self.applied(repo, node, p1): 117 if self.applied(repo, node, p1):
170 % (short(node), 171 % (short(node),
171 short(n))) 172 short(n)))
172 finally: 173 finally:
173 if patchfile: 174 if patchfile:
174 os.unlink(patchfile) 175 os.unlink(patchfile)
176 tr.close()
175 if pulls: 177 if pulls:
176 repo.pull(source, heads=pulls) 178 repo.pull(source, heads=pulls)
177 merge.update(repo, pulls[-1], False, False, None) 179 merge.update(repo, pulls[-1], False, False, None)
178 finally: 180 finally:
179 self.saveseries(revmap, merges) 181 self.saveseries(revmap, merges)
180 self.transplants.write() 182 self.transplants.write()
183 if tr:
184 tr.release()
181 lock.release() 185 lock.release()
182 wlock.release() 186 wlock.release()
183 187
184 def filter(self, filter, node, changelog, patchfile): 188 def filter(self, filter, node, changelog, patchfile):
185 '''arbitrarily rewrite changeset before applying it''' 189 '''arbitrarily rewrite changeset before applying it'''