
    	^c2                     X    d dl Z ddlmZ ddlmZmZmZmZ  G d dej                  Z	dS )    N   )_)error
narrowspecrequirementsutilc                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )dirstateguardan  Restore 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()``.
    c                 b   | _         d| _        d| _        fd} |d|z            | _        j                                                            | j                   d | _        t          j	        j        v r- |d|z            | _        t          j        | j                   d| _        d S )NFc                 l    j                             |           \  }}t          j        |           |S )N)prefix)vfsmkstemposclose)r   fdfnamerepos      9/usr/lib/python3/dist-packages/mercurial/dirstateguard.pygetnamez'dirstateguard.__init__.<locals>.getname'   s1    (((77IBHRLLLL    s   dirstate.backup.%s.s   narrowspec.backup.%s.T)_repo_active_closed_backupnamedirstate
savebackupcurrenttransaction_narrowspecbackupnamer   NARROW_REQUIREMENTr   savewcbackup)selfr   namer   s    `  r   __init__zdirstateguard.__init__"   s    
	 	 	 	 	
 #7#9D#@AA  !8!8!:!:D<LMMM &*"*d.???)0(4/* *D& #D$*DEEEr   c                 @    | j         r|                                  d S d S )N)r   _abortr"   s    r   __del__zdirstateguard.__del__8   s)    < 	
 KKMMMMM	 	r   c                 J   | j         s+t          d          | j        z  }t          j        |          | j        j                            | j                                        | j                   | j	        rt          j        | j        | j	                   d| _         d| _        d S )Ns*   can't close already inactivated backup: %sFT)r   r   r   r   Abortr   r   clearbackupr   r   r   clearwcbackupr   r"   msgs     r   r   zdirstateguard.close@   s    | 	#?@@"#  +c"""
''J))++T-=	
 	
 	
 % 	M$TZ1KLLLr   c                     | j         rt          j        | j        | j                    | j        j                            | j                                        | j                   d| _        d S )NF)	r   r   restorewcbackupr   r   restorebackupr   r   r   r'   s    r   r&   zdirstateguard._abortP   sf    % 	O&tz43MNNN
))J))++T-=	
 	
 	
 r   c                     | j         sH| j        s+t          d          | j        z  }t	          j        |          |                                  d S d S )Ns,   can't release already inactivated backup: %s)r   r   r   r   r   r*   r&   r-   s     r   releasezdirstateguard.releaseX   s_    | 	< 'EFF&'  k#&&&KKMMMMM	 	r   N)	__name__
__module____qualname____doc__r$   r(   r   r&   r3    r   r   r
   r
      si           ,           r   r
   )
r   i18nr    r   r   r   r   transactionalr
   r8   r   r   <module>r<      s    
			                 L L L L LD& L L L L Lr   