o ]LbY @sNddlmZddlZddlmZddlmZmZmZm Z Gddde j Z dS))absolute_importN)_)error narrowspec requirementsutilc@s8eZdZdZddZddZddZdd Zd d Zd S) dirstateguardanRestore dirstate at unexpected failure. At the construction, this class does: - write current ``repo.dirstate`` out, and - save ``.hg/dirstate`` into the backup file This restores ``.hg/dirstate`` from backup file, if ``release()`` is invoked before ``close()``. This just removes the backup file at ``close()`` before ``release()``. csx|_d|_d|_fdd}|d||_j|jd|_tj jvr7|d||_t |jd|_dS)NFcs jj|d\}}t||S)N)prefix)vfsmkstemposclose)r fdfnamerepo9/usr/lib/python3/dist-packages/mercurial/dirstateguard.pygetname(s z'dirstateguard.__init__..getnamesdirstate.backup.%s.snarrowspec.backup.%s.T) _repo_active_closed _backupnamedirstate savebackupcurrenttransaction_narrowspecbackupnamerNARROW_REQUIREMENTr savewcbackup)selfrnamerrrr__init__#s   zdirstateguard.__init__cCs|jr |dSdS)N)r_abortr rrr__del__9s zdirstateguard.__del__cCs\|jstd|j}t||jj|j|j|j r&t |j|j d|_d|_ dS)Ns*can't close already inactivated backup: %sFT) rrrrAbortrr clearbackuprrr clearwcbackuprr msgrrrrAs   zdirstateguard.closecCs8|jr t|j|j|jj|j|jd|_dS)NF) rrrestorewcbackuprr restorebackuprrrr$rrrr#Qs   zdirstateguard._abortcCs4|js|jstd|j}t||dSdS)Ns,can't release already inactivated backup: %s)rrrrrr&r#r)rrrreleaseYs  zdirstateguard.releaseN) __name__ __module__ __qualname____doc__r"r%rr#r-rrrrr s  r ) __future__rr i18nrrrrr transactionalr rrrrs