Mercurial > public > mercurial-scm > hg
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 |