comparison mercurial/cmdutil.py @ 26746:3c1d297fe929

dirstateguard: remove layering violation around saving/restoring backup This violation, which passes 'repo' object to dirstate, was introduced by 59b5e8844eb0 and 020b12d591f3.
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Sat, 17 Oct 2015 01:15:33 +0900
parents bec1a579ebc4
children 9f9ec4abe700
comparison
equal deleted inserted replaced
26745:8af610bce239 26746:3c1d297fe929
3337 ''' 3337 '''
3338 3338
3339 def __init__(self, repo, name): 3339 def __init__(self, repo, name):
3340 self._repo = repo 3340 self._repo = repo
3341 self._suffix = '.backup.%s.%d' % (name, id(self)) 3341 self._suffix = '.backup.%s.%d' % (name, id(self))
3342 repo.dirstate._savebackup(repo, self._suffix) 3342 repo.dirstate._savebackup(repo.currenttransaction(), self._suffix)
3343 self._active = True 3343 self._active = True
3344 self._closed = False 3344 self._closed = False
3345 3345
3346 def __del__(self): 3346 def __del__(self):
3347 if self._active: # still active 3347 if self._active: # still active
3355 if not self._active: # already inactivated 3355 if not self._active: # already inactivated
3356 msg = (_("can't close already inactivated backup: dirstate%s") 3356 msg = (_("can't close already inactivated backup: dirstate%s")
3357 % self._suffix) 3357 % self._suffix)
3358 raise error.Abort(msg) 3358 raise error.Abort(msg)
3359 3359
3360 self._repo.dirstate._clearbackup(self._repo, self._suffix) 3360 self._repo.dirstate._clearbackup(self._repo.currenttransaction(),
3361 self._suffix)
3361 self._active = False 3362 self._active = False
3362 self._closed = True 3363 self._closed = True
3363 3364
3364 def _abort(self): 3365 def _abort(self):
3365 self._repo.dirstate._restorebackup(self._repo, self._suffix) 3366 self._repo.dirstate._restorebackup(self._repo.currenttransaction(),
3367 self._suffix)
3366 self._active = False 3368 self._active = False
3367 3369
3368 def release(self): 3370 def release(self):
3369 if not self._closed: 3371 if not self._closed:
3370 if not self._active: # already inactivated 3372 if not self._active: # already inactivated