File: //proc/self/root/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/git.cpython-39.pyc
a
g��e�C � @ s� d dl Z d dlZd dlZd dlZd dlZd dlZd dlm Z m
Z
mZ d dlm
Z
mZ d dlmZmZmZ d dlmZ d dlmZmZmZmZmZmZmZ ejjZejjZe � e!�Z"e�#d�Z$e�#d�Z%e�#d ej&�Z'd
d� Z(G dd
� d
e�Z)e�*e)� dS )� N)�List�Optional�Tuple)�
BadCommand�InstallationError)�
HiddenText�display_path�hide_url)�make_command)�AuthInfo�RemoteNotFoundError�RemoteNotValidError�
RevOptions�VersionControl�(find_path_to_project_root_from_repo_root�vcsz(^git version (\d+)\.(\d+)(?:\.(\d+))?.*$z^[a-fA-F0-9]{40}$a+ ^
# Optional user, e.g. 'git@'
(\w+@)?
# Server, e.g. 'github.com'.
([^/:]+):
# The server-side path. e.g. 'user/project.git'. Must start with an
# alphanumeric character so as not to be confusable with a Windows paths
# like 'C:/foo/bar' or 'C:\foo\bar'.
(\w[^:]*)
$c C s t t�| ��S �N)�bool�
HASH_REGEX�match)�sha� r �9/usr/lib/python3.9/site-packages/pip/_internal/vcs/git.py�looks_like_hash4 s r c s e Zd ZdZdZdZdZdZdZe dd� �Z
d d
� Zee
df d�d
d�Zedd� �Zedd� �Zedd� �Zedd� �Zedd� �Zdd� Zdd� Zdd� Zedd � �Ze d!d"� �Zed#d$� �Zed2d&d'��Zed(d)� �Ze� fd*d+��Zed,d-� �Ze� fd.d/��Ze d0d1� �Z � Z!S )3�Git�gitz.git�clone)zgit+httpz git+httpszgit+sshzgit+gitzgit+file)ZGIT_DIRZ
GIT_WORK_TREE�HEADc C s | gS r r ��revr r r �get_base_rev_argsE s zGit.get_base_rev_argsc C sJ | � t|��\}}|jsdS | �||j�s.dS t| �||j�d �}| S )NFr )Zget_url_rev_optionsr r �is_commit_id_equalr �get_revision_sha)�self�url�dest�_�rev_optionsZis_tag_or_branchr r r �is_immutable_rev_checkoutJ s �zGit.is_immutable_rev_checkout.)�returnc C s: | j dgddd�}t�|�}|s$dS tdd� |�� D ��S )N�versionFT)�show_stdout�stdout_onlyr c s s | ]}t |�V qd S r )�int)�.0�cr r r � <genexpr>b � z&Git.get_git_version.<locals>.<genexpr>)�run_command�GIT_VERSION_REGEXr �tuple�groups)r# r* r r r r �get_git_version[ s �
zGit.get_git_versionc C sB g d�}| j |ddd|d�}|�� }|�d�r>|td�d� S dS )zl
Return the current branch, or None if HEAD isn't at a branch
(e.g. detached HEAD).
)zsymbolic-ref�-qr �� FT�Zextra_ok_returncodesr+ r, �cwdzrefs/heads/N)r2 �strip�
startswith�len)�cls�location�args�output�refr r r �get_current_branchd s �
zGit.get_current_branchc C s� | j d|g|dddd�}i }|�� �d�D ]T}|�d�}|s>q*z|jdd d
�\}}W n tyt td|����Y n0 |||<