Your IP : 3.144.227.3


Current Path : /usr/lib/python2.7/site-packages/pip/vcs/
Upload File :
Current File : //usr/lib/python2.7/site-packages/pip/vcs/git.pyo

�
��abc@@s�ddlmZddlZddlZddlZddlmZddlm	Z	ddl
mZddl
m
ZddlmZddlmZmZddlmZmZejZejZeje�Zd	efd
��YZeje�dS(i(tabsolute_importN(tsamefile(t
BadCommand(tparse(trequest(tdisplay_pathtrmtree(tvcstVersionControltGitcB@s�eZdZdZdZdZdd�Zd	�Zd
�Z	d�Z
d�Zd
�Zd�Z
d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zed��ZRS( tgits.gittclonesgit+https	git+httpssgit+sshsgit+gitsgit+filecO@s�|r�t|�\}}}}}|jd�r�|t|jd�� }	|	tj|�jdd�jd�}
t|||
||f�}|jd�d}|| t||||
||f�}q�nt	t
|�j|||�dS(Ntfilet/s\t+i(turlsplittendswithtlentlstripturllib_requestturl2pathnametreplacet
urlunsplittfindtsuperR	t__init__(tselfturltargstkwargstschemetnetloctpathtquerytfragmenttinitial_slashestnewpatht
after_plus((s//usr/lib/python2.7/site-packages/pip/vcs/git.pyR s
#cC@sld}|jdgdt�}|j|�r@|t|�}nd}dj|jd�d �}t|�S(Nsgit version tversiontshow_stdouttt.i(trun_commandtFalset
startswithRtjointsplitt
parse_version(RtVERSION_PFXR&((s//usr/lib/python2.7/site-packages/pip/vcs/git.pytget_git_version5scC@sytjdd�}|j|�zH|jd�s>|d}n|jdddd|gdtd	|�Wd
t|�Xd
S(s@Export the Git repository at the url to the destination locations-exportspip-R
scheckout-indexs-as-fs--prefixR'tcwdN(ttempfiletmkdtemptunpackRR*R+R(Rtlocationttemp_dir((s//usr/lib/python2.7/site-packages/pip/vcs/git.pytexportBs

cC@s_|j|�}d|}||kr0||gS||krG||gStjd|�|SdS(s�Check the revision options before checkout to compensate that tags
        and branches may need origin/ as a prefix.
        Returns the SHA1 of the branch or tag if found.
        s	origin/%ss5Could not find a tag or branch '%s', assuming commit.N(tget_short_refstloggertwarning(Rtrevtdesttrev_optionst	revisionst
origin_rev((s//usr/lib/python2.7/site-packages/pip/vcs/git.pytcheck_rev_optionsOs

cC@s|j|�j|d�S(s

        Compare the current sha to the ref. ref may be a branch or tag name,
        but current rev will always point to a sha. This means that a branch
        or tag will never compare as True. So this ultimately only matches
        against exact shas.
        i(tget_revisionR,(RR=R>((s//usr/lib/python2.7/site-packages/pip/vcs/git.pyt
check_versioncscC@sJ|jdd|gd|�|jddg|d|�|j|�dS(Ntconfigsremote.origin.urlR2tcheckouts-q(R*tupdate_submodules(RR=RR>((s//usr/lib/python2.7/site-packages/pip/vcs/git.pytswitchlscC@s�|j�td�kr7|jdddgd|�n|jddgd|�|rr|j|d||�}n|jdddg|d|�|j|�dS(	Ns1.9.0tfetchs-qs--tagsR2itresets--hard(R1R/R*RARF(RR=R>((s//usr/lib/python2.7/site-packages/pip/vcs/git.pytupdaters cC@s�|j�\}}|r.|g}d|}ndg}d}|j||||�r�tjd||t|��|jdd||g�|r�|j|||�}|j||�s�|jddg|d|�q�n|j|�ndS(	Ns (to %s)s
origin/masterR(sCloning %s%s to %sRs-qRER2(	tget_url_revtcheck_destinationR:tinfoRR*RARCRF(RR=RR<R>trev_display((s//usr/lib/python2.7/site-packages/pip/vcs/git.pytobtain�s"	
	
cC@s�|jdddgdtd|�}|j�}|d}x'|D]}|jd�rA|}PqAqAW|jd�d	}|j�S(
s+Return URL of the first remote encountered.RDs--get-regexpsremote\..*\.urlR'R2isremote.origin.url t i(R*R+t
splitlinesR,R.tstrip(RR6tremotestfound_remotetremoteR((s//usr/lib/python2.7/site-packages/pip/vcs/git.pytget_url�s

cC@s+|jddgdtd|�}|j�S(Ns	rev-parsetHEADR'R2(R*R+RR(RR6tcurrent_rev((s//usr/lib/python2.7/site-packages/pip/vcs/git.pyRB�scc@sn|jdgdtd|�}xI|j�j�D]5}|jdd�\}}|j�|j�fVq1WdS(s4Yields tuples of (commit, ref) for branches and tagssshow-refR'R2RPiN(R*R+RRRQR.(RR6toutputtlinetcommittref((s//usr/lib/python2.7/site-packages/pip/vcs/git.pyt
get_full_refs�s
cC@s
|jd�S(Ns
refs/remotes/(R,(RR\((s//usr/lib/python2.7/site-packages/pip/vcs/git.pyt
is_ref_remote�scC@s
|jd�S(Nsrefs/heads/(R,(RR\((s//usr/lib/python2.7/site-packages/pip/vcs/git.pyt
is_ref_branch�scC@s
|jd�S(Ns
refs/tags/(R,(RR\((s//usr/lib/python2.7/site-packages/pip/vcs/git.pyt
is_ref_tag�scC@s/t|j|�|j|�|j|�f�S(s0A ref is a commit sha if it is not anything else(tanyR^R_R`(RR\((s//usr/lib/python2.7/site-packages/pip/vcs/git.pyt
is_ref_commit�scC@s
|j|�S(N(R9(RR6((s//usr/lib/python2.7/site-packages/pip/vcs/git.pytget_refs�scC@s�i}x�|j|�D]�\}}d}|j|�rJ|td�}nD|j|�rl|td�}n"|j|�r�|td�}n|dk	r|||<qqW|S(s=Return map of named refs (branches or tags) to commit hashes.s
refs/remotes/srefs/heads/s
refs/tags/N(R]tNoneR^RR_R`(RR6trvR[R\tref_name((s//usr/lib/python2.7/site-packages/pip/vcs/git.pyR9�scC@s�|jddgdtd|�j�}tjj|�sQtjj||�}ntjj|d�}|}x]tjjtjj|d��s�|}tjj|�}||krot	j
d|�dSqoWt||�r�dStjj
||�S(	s:Return the relative path of setup.py to the git repo root.s	rev-parses	--git-dirR'R2s..ssetup.pysGCould not find setup.py for directory %s (tried all parent directories)N(R*R+RRtosR tisabsR-texiststdirnameR:R;RdRtrelpath(RR6tgit_dirtroot_dirt
orig_locationt
last_location((s//usr/lib/python2.7/site-packages/pip/vcs/git.pyt_get_subdirectory�s"$cC@s�|j|�}|j�jd�s1d|}n|j�jdd�d}|sWdS|j|�}d|||f}|j|�}|r�|d|7}n|S(Nsgit:sgit+t-iis%s@%s#egg=%ss&subdirectory=(RVtlowerR,tegg_nameR.RdRBRp(RtdistR6trepotegg_project_nameRXtreqtsubdirectory((s//usr/lib/python2.7/site-packages/pip/vcs/git.pytget_src_requirement�s
cC@s|d|jkrW|jjdd�|_tt|�j�\}}|jdd�}ntt|�j�\}}||fS(s;
        Prefixes stub URLs like 'user@hostname:user/repo.git' with 'ssh://'.
        That's required because although they use SSH they sometimes doesn'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.
        s://sgit+s
git+ssh://sssh://R((RRRR	RK(RRR<((s//usr/lib/python2.7/site-packages/pip/vcs/git.pyRKscC@sKtjjtjj|d��s%dS|jdddddgd|�dS(Ns.gitmodulest	submoduleRJs--inits--recursives-qR2(RgR RiR-R*(RR6((s//usr/lib/python2.7/site-packages/pip/vcs/git.pyRFs
!cC@sutt|�j|�rtSy0|�jdgd|dtdd�}|SWn"tk
rptjd|�tSXdS(Ns	rev-parseR2R't
on_returncodetignoresKcould not determine if %s is under git control because git is not available(	RR	tcontrols_locationtTrueR*R+RR:tdebug(tclsR6tr((s//usr/lib/python2.7/site-packages/pip/vcs/git.pyR}s		
	(R
sgit+https	git+httpssgit+sshsgit+gitsgit+fileN(t__name__t
__module__tnameRjt	repo_nametschemesRdRR1R8RARCRGRJRORVRBR]R^R_R`RbRcR9RpRyRKRFtclassmethodR}(((s//usr/lib/python2.7/site-packages/pip/vcs/git.pyR	s4	
	
																				(t
__future__RtloggingR3tos.pathRgt
pip.compatRtpip.exceptionsRtpip._vendor.six.moves.urllibRturllib_parseRRtpip._vendor.packaging.versionR/t	pip.utilsRRtpip.vcsRRRRt	getLoggerR�R:R	tregister(((s//usr/lib/python2.7/site-packages/pip/vcs/git.pyt<module>s 		�

?>