U .e 5 @ s d dl mZ d dlZd dlZd dlZd dlmZ d dl mZ d dl mZ d dl mZ d dlmZ d dlmZ d dlmZ d d lmZ d d lmZmZmZmZ erd dlmZmZ d dlmZ d d lm Z m!Z! e j"Z"e j#Z#e$e%Z&e'dZ(dd Z)G dd deZ*e+e* dS ) )absolute_importN)parse)request) BadCommand)display_path)make_command) TempDirectory)MYPY_CHECK_RUNNING)RemoteNotFoundErrorVersionControl!find_path_to_setup_from_repo_rootvcs)OptionalTuple) HiddenText)AuthInfo RevOptionsz^[a-fA-F0-9]{40}$c C s t t| S N)bool HASH_REGEXmatch)sha r 9/usr/lib/python3.8/site-packages/pip/_internal/vcs/git.pylooks_like_hash* s r c s e Zd ZdZdZdZdZdZdZe dd Z d d Zedd Z d d Zedd Zedd Zedd Zdd Zdd Zdd Zedd Zed(ddZed d! Ze fd"d#Zed$d% Ze fd&d'Z ZS ))Gitgitz.gitclone)r zgit+httpz git+httpszgit+sshzgit+gitzgit+file)ZGIT_DIRZ GIT_WORK_TREEHEADc C s | gS r r revr r r get_base_rev_args: s zGit.get_base_rev_argsc C s\ d}| j dgdd}||r8|t|d d }nd}d|dd d }t|S ) Nzgit version versionF)show_stdoutr . )run_command startswithlensplitjoin parse_version)selfZVERSION_PFXr" r r r get_git_version> s zGit.get_git_versionc C sB dddg}| j |dd|d}| }|dr>|tdd S dS ) zl Return the current branch, or None if HEAD isn't at a branch (e.g. detached HEAD). zsymbolic-ref-qr FZextra_ok_returncodesr# cwdzrefs/heads/N)r' stripr( r) )clslocationargsoutputrefr r r get_current_branchK s zGit.get_current_branchc C sX | ds|d }tdd2}| j|j|d | jdddd|gd |jd W 5 Q R X dS )z@Export the Git repository at the url to the destination location/export)Zkind)urlzcheckout-indexz-az-fz--prefixFr# r3 N)endswithr unpackpathr' )r- r6 r= Ztemp_dirr r r r<