� �Rec@@s�ddlmZddlZddlZddlZddlmZddl mZ ddl m Z ddl mZmZddlmZmZddlmZddlmZdd lmZdd lmZmZmZmZer'dd lmZm Z dd lm!Z!dd lm"Z"m#Z#ne j$Z$e j%Z%ej&e'�Z(ej)d�Z*d�Z+defd��YZ,ej-e,�dS(i(tabsolute_importN(tparse(trequest(t BadCommandtSubProcessError(t display_paththide_url(t make_command(t TempDirectory(tMYPY_CHECK_RUNNING(tRemoteNotFoundErrortVersionControlt!find_path_to_setup_from_repo_roottvcs(tOptionaltTuple(t HiddenText(tAuthInfot RevOptionss^[a-fA-F0-9]{40}$cC@sttj|��S(N(tboolt HASH_REGEXtmatch(tsha((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/vcs/git.pytlooks_like_hash*stGitcB@s eZdZdZdZdZdZd Zed ��Z d �Z d �Z e d��Z d�Ze d��Ze d��Ze d��Zd�Zd�Zd�Ze d��Ze dd��Ze d��Ze d��Ze d��Ze d��ZRS(tgits.gittclonesgit+https git+httpssgit+sshsgit+gitsgit+filetGIT_DIRt GIT_WORK_TREEtHEADcC@s|gS(N((trev((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/vcs/git.pytget_base_rev_args:scC@se|jt|��\}}|js(tS|j||j�sAtSt|j||j�d�}| S(Ni(tget_url_rev_optionsRRtFalsetis_commit_id_equalRtget_revision_sha(tselfturltdestt_t rev_optionstis_tag_or_branch((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/vcs/git.pytis_immutable_rev_checkout>s cC@spd}|jdg�}|j|�rD|t|�j�d}nd}dj|jd�d �}t|�S(Ns git version tversionitt.i(t run_commandt startswithtlentsplittjoint parse_version(R$t VERSION_PFXR+((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/vcs/git.pytget_git_versionOscC@sWdddg}|j|ddd|�}|j�}|jd�rS|td�Sd S( sl Return the current branch, or None if HEAD isn't at a branch (e.g. detached HEAD). s symbolic-refs-qRtextra_ok_returncodesitcwds refs/heads/(iN(R.tstripR/R0tNone(tclstlocationtargstoutputtref((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/vcs/git.pytget_current_branch\s  c C@ss|jd�s|d}ntdd��B}|j|jd|�|jdddd|gd |j�Wd QXd S( s@Export the Git repository at the url to the destination locationt/tkindtexportR%scheckout-indexs-as-fs--prefixR7N(tendswithRtunpacktpathR.(R$R;R%ttemp_dir((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/vcs/git.pyRBqs c C@sd}y|jd|gd|�}Wntk r8nXi}xc|j�j�D]O}y|j�\}}Wn&tk r�tdj|���nX|||<qRWdj|�}dj|�} |j|�}|dk r�|t fS|j| �}|t fS(s� Return (sha_or_none, is_branch), where sha_or_none is a commit hash if the revision names a remote branch or tag, otherwise None. Args: dest: the repository directory. rev: the revision name. R,sshow-refR7sunexpected show-ref line: {!r}srefs/remotes/origin/{}s refs/tags/{}N( R.RR8t splitlinesR1t ValueErrortformattgetR9tTrueR!( R:R&RR=trefstlineRR>t branch_refttag_ref((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/vcs/git.pyR#~s&     cC@s�|j}|dk st�|j||�\}}|dk rg|j|�}|rZ|nd|_|St|�s�tjd|�n|j d�s�|S|j t dd||j ��d|�|j |dd�}|j|�}|S( s� Resolve a revision to a new RevOptions object with the SHA1 of the branch, tag, or ref if found. Args: rev_options: a RevOptions object. s:Did not find branch or tag '%s', assuming revision or ref.srefs/tfetchs-qR7Rt FETCH_HEADN(targ_revR9tAssertionErrorR#tmake_newt branch_nameRtloggertwarningR/R.Rtto_argst get_revision(R:R&R%R(RRt is_branch((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/vcs/git.pytresolve_revision�s&    cC@s|s tS|j|�|kS(s� Return whether the current commit hash equals the given name. Args: dest: the repository directory. name: a string name. (R!RY(R:R&tname((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/vcs/git.pyR"�s cC@s)|j�}tjd||t|��|jtdd||��|jr|j|||�}t|dd�}|dkr�|j ||j�stdd|j ��}|j|d|�qq|j |�|krdj |�}dd|d |g}|j|d|�qn|j|�dS( NsCloning %s%s to %sRs-qRUtcheckoutR7s origin/{}s-bs--track(t to_displayRVtinfoRR.RRR[tgetattrR9R"RXR?RItupdate_submodules(R$R&R%R(t rev_displayRUtcmd_argst track_branch((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/vcs/git.pyt fetch_new�s    cC@s[|jtdd|�d|�tdd|j��}|j|d|�|j|�dS(Ntconfigsremote.origin.urlR7R]s-q(R.RRXRa(R$R&R%R(Rc((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/vcs/git.pytswitchs cC@s�|j�td�kr7|jdddgd|�n|jddgd|�|j|||�}tddd|j��}|j|d|�|j|�dS(Ns1.9.0RPs-qs--tagsR7tresets--hard(R5R3R.R[RRXRa(R$R&R%R(Rc((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/vcs/git.pytupdate scC@s�|jdddgdd d|�}|j�}y|d}Wntk rWt�nXx'|D]}|jd�r_|}Pq_q_W|jd �d}|j�S( s� Return URL of the first remote encountered. Raises RemoteNotFoundError if the repository does not have a remote url configured. Rfs --get-regexpsremote\..*\.urlR6iR7isremote.origin.url t (i(R.RGt IndexErrorR R/R1R8(R:R;tstdouttremotest found_remotetremoteR%((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/vcs/git.pytget_remote_urls     cC@s:|dkrd}n|jd|gd|�}|j�S(NRs rev-parseR7(R9R.R8(R:R;Rt current_rev((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/vcs/git.pyRY5s   cC@sy|jddgd|�j�}tjj|�sKtjj||�}ntjjtjj|d��}t||�S(s~ Return the path to setup.py, relative to the repo root. Return None if setup.py is in the repo root. s rev-parses --git-dirR7s..(R.R8tosREtisabsR2tabspathR (R:R;tgit_dirt repo_root((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/vcs/git.pytget_subdirectory>s !c C@sXt|�\}}}}}|jd�r�|t|jd�� }|tj|�jdd�jd�}t|||||f�}|jd�d} || t|| ||||f�}nd|kr*d|ks�t �|jdd �}t t |�j |�\}} } |jd d �}n!t t |�j |�\}} } || | fS( s9 Prefixes stub URLs like 'user@hostname:user/repo.git' with 'ssh://'. That's required because although they use SSH they sometimes don't work with a ssh:// scheme (e.g. GitHub). But we need a scheme for parsing. Hence we remove it again afterwards and return it as a stub. tfileR@s\t+is://sfile:sgit+s git+ssh://sssh://R,( turlsplitRCR0tlstripturllib_requestt url2pathnametreplacet urlunsplittfindRStsuperRtget_url_rev_and_auth( R:R%tschemetnetlocREtquerytfragmenttinitial_slashestnewpatht after_plusRt user_pass((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/vcs/git.pyR�Ms"    !!cC@sKtjjtjj|d��s%dS|jdddddgd|�dS(Ns .gitmodulest submoduleRis--inits --recursives-qR7(RrREtexistsR2R.(R:R;((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/vcs/git.pyRaps !cC@s�tt|�j|�}|r"|Sy%|jddgd|dt�}Wn3tk rktjd|�dSt k r|dSXt j j |j d��S(Ns rev-parses--show-toplevelR7tlog_failed_cmdsKcould not determine if %s is under git control because git is not availables (R�Rtget_repository_rootR.R!RRVtdebugR9RRrREtnormpathtrstrip(R:R;tloctr((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/vcs/git.pyR�ys     (Rsgit+https git+httpssgit+sshsgit+gitsgit+file(RRN(t__name__t __module__R\tdirnamet repo_nametschemest unset_environtdefault_arg_revt staticmethodRR*R5t classmethodR?RBR#R[R"ReRgRiRpR9RYRwR�RaR�(((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/vcs/git.pyR.s0   (-  # (.t __future__Rtloggingtos.pathRrtretpip._vendor.packaging.versionRR3tpip._vendor.six.moves.urllibt urllib_parseRR|tpip._internal.exceptionsRRtpip._internal.utils.miscRRtpip._internal.utils.subprocessRtpip._internal.utils.temp_dirRtpip._internal.utils.typingR t pip._internal.vcs.versioncontrolR R R R ttypingRRRRRRzRt getLoggerR�RVtcompileRRRtregister(((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/vcs/git.pyt<module>s0   "   �`