B
    
E^                 @   s   d dl mZ d dlmZmZmZ d dlmZ ddlm	Z	m
Z
 ddlZyddlmZ W n  ek
rt   d dlmZ Y nX dZG d	d
 d
eZdd Zdd Zdd ZeedfddZdd ZdS )   )Configuration)do_extracehas_command)meta    )isfilejoinN)samefilez.git describe --dirty --tags --long --match *.*c               @   s\   e Zd ZdZdd Zdd Zedd Zdd	 Zd
d Z	dd Z
dd Zdd Zdd ZdS )
GitWorkdirz$experimental, may change at any timec             C   s
   || _ d S )N)path)selfr    r   \/home/fristb/BIRCH/lib-linux-x86_64/python/lib/python3.7/site-packages/setuptools_scm/git.py__init__   s    zGitWorkdir.__init__c             C   s   t || jdS )N)cwd)r   r   )r   cmdr   r   r   r      s    zGitWorkdir.do_exc             C   s8   t d|\}}}|rd S td| t||s0d S | |S )Nzgit rev-parse --show-toplevelz	real root)r   r   r
   )clswdreal_wd_retr   r   r   from_potential_worktree   s    

z"GitWorkdir.from_potential_worktreec             C   s   |  d\}}}t|S )Nz+git status --porcelain --untracked-files=no)r   bool)r   outr   r   r   r   is_dirty&   s    zGitWorkdir.is_dirtyc             C   s*   |  d\}}}|r&td||| d S |S )Nzgit rev-parse --abbrev-ref HEADz
branch err)r   r   )r   brancherrr   r   r   r   
get_branch*   s
    zGitWorkdir.get_branchc             C   s   t t| jdS )Nz.git/shallow)r   r	   r   )r   r   r   r   
is_shallow1   s    zGitWorkdir.is_shallowc             C   s   |  d d S )Nzgit fetch --unshallow)r   )r   r   r   r   fetch_shallow4   s    zGitWorkdir.fetch_shallowc             C   s$   |  d\}}}|s |d d S d S )Nz#git rev-parse --verify --quiet HEAD   )r   )r   rev_noder   r   r   r   r   node7   s    zGitWorkdir.nodec             C   s   |  d\}}}|dd S )Nzgit rev-list HEAD
r   )r   count)r   revsr   r   r   r   count_all_nodes<   s    zGitWorkdir.count_all_nodesN)__name__
__module____qualname____doc__r   r   classmethodr   r   r   r   r    r#   r'   r   r   r   r   r      s   r   c             C   s   |   rtd| j dS )z$experimental, may change at any timez$"{}" is shallow and may cause errorsN)r   warningswarnformatr   )r   r   r   r   warn_on_shallowA   s    r0   c             C   s   |   rtd |   dS )z$experimental, may change at any timez/"%s" was shallow, git fetch was used to rectifyN)r   r-   r.   r    )r   r   r   r   fetch_on_shallowG   s    
r1   c             C   s   |   rtd| j dS )z$experimental, may change at any timez:%r is shallow, please correct with "git fetch --unshallow"N)r   
ValueErrorr   )r   r   r   r   fail_on_shallowN   s    r3   c             C   s   |st | d}tdsdS t|j}|dkr2dS |r>|| |jrJ|j}||\}}}|r| }| }	|dkrt	dd|	|dS t	d|
 d| |	| |dS t|\}
}}}	| }|rt	|
||||	|d	S t	|
|||	|d
S dS )zQ
    :param pre_parse: experimental pre_parse action, may change at any time
    )rootgitNz0.0r   )distancedirtyconfigg)r6   r#   r7   r   r8   )r8   r6   r#   r7   r   )r8   r#   r7   r   )r   r   r   r   absolute_rootgit_describe_commandr   r#   r   r   r'   r   _git_parse_describe)r4   describe_command	pre_parser8   r   r   
unused_errr   r"   r7   tagnumberr#   r   r   r   r   parseV   sF    
rB   c             C   sF   |  drd}| d d } nd}| dd\}}}t|}||||fS )Nz-dirtyTiF-   )endswithrsplitint)describe_outputr7   r@   rA   r#   r   r   r   r<      s    
r<   )r8   r   utilsr   r   r   versionr   os.pathr   r	   r-   r
   ImportErrorZwin_py31_compatDEFAULT_DESCRIBEobjectr   r0   r1   r3   rB   r<   r   r   r   r   <module>   s   /	6