3 ”Re¡6 ã @ s d dl mZ d dlZd dlZd dlZd dlmZ d dl mZ d dl mZ d dl mZmZ d dlmZmZ d dlmZ d dlmZ d d lmZ d d lmZmZmZmZ erÔd dlmZm Z d dlm!Z! d d lm"Z"m#Z# e j$Z$e j%Z%ej&e'ƒZ(ej)dƒZ*dd„ Z+G dd„ deƒZ,ej-e,ƒ dS )é )Úabsolute_importN)Úparse)Úrequest)Ú BadCommandÚSubProcessError)Údisplay_pathÚhide_url)Úmake_command)Ú TempDirectory)ÚMYPY_CHECK_RUNNING)ÚRemoteNotFoundErrorÚVersionControlÚ!find_path_to_setup_from_repo_rootÚvcs)ÚOptionalÚTuple)Ú HiddenText)ÚAuthInfoÚ RevOptionsz^[a-fA-F0-9]{40}$c C s t tj| ƒƒS )N)ÚboolÚ HASH_REGEXÚmatch)Úsha© r ú„/builddir/build/BUILDROOT/alt-python36-pip-20.2.4-5.el8.x86_64/opt/alt/python36/lib/python3.6/site-packages/pip/_internal/vcs/git.pyÚlooks_like_hash* s r c sæ e Zd ZdZdZdZd/Zd0ZdZe dd „ ƒZ dd„ Zdd„ Ze dd„ ƒZdd„ Ze dd„ ƒZe dd„ ƒZe dd„ ƒZdd„ Zdd„ Zd d!„ Ze d"d#„ ƒZe d1d%d&„ƒZe d'd(„ ƒZe ‡ fd)d*„ƒZe d+d,„ ƒZe ‡ fd-d.„ƒZ‡ ZS )2ÚGitÚgitz.gitÚcloneúgit+httpú git+httpsúgit+sshúgit+gitúgit+fileÚGIT_DIRÚ GIT_WORK_TREEÚHEADc C s | gS )Nr )Úrevr r r Úget_base_rev_args: s zGit.get_base_rev_argsc C sJ | j t|ƒƒ\}}|jsdS | j||jƒs.dS t| j||jƒd ƒ}| S )NFr )Úget_url_rev_optionsr r' Úis_commit_id_equalr Úget_revision_sha)ÚselfÚurlÚdestÚ_Úrev_optionsÚis_tag_or_branchr r r Úis_immutable_rev_checkout> s zGit.is_immutable_rev_checkoutc C sX d}| j dgƒ}|j|ƒr4|t|ƒd … jƒ d }nd}dj|jdƒd d… ƒ}t|ƒS )Nzgit version Úversionr Ú Ú.é )Úrun_commandÚ startswithÚlenÚsplitÚjoinÚ parse_version)r, ÚVERSION_PFXr3 r r r Úget_git_versionO s zGit.get_git_versionc C s@ dddg}| j |d|d�}|jƒ }|jdƒr<|tdƒd… S dS ) zl Return the current branch, or None if HEAD isn't at a branch (e.g. detached HEAD). zsymbolic-refz-qr&