zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
U
H=®d¡6ã@sddlmZddlZddlZddlZddlmZddl    mZ
ddl    m Z ddl mZmZddlmZmZddlmZddlmZdd    lmZdd
lmZmZmZmZerÔdd lmZm Z dd lm!Z!dd lm"Z"m#Z#e
j$Z$e
j%Z%e &e'¡Z(e )d¡Z*dd„Z+Gdd„deƒZ,e -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}$cCstt |¡ƒS©N)ÚboolÚ
HASH_REGEXÚmatch)Úsha©rúLD:\z\workplace\VsCode\pyvenv\venv\Lib\site-packages\pip/_internal/vcs/git.pyÚlooks_like_hash*srcsæeZdZdZdZdZdZdZdZe    dd„ƒZ
d    d
„Z d d „Z e d d„ƒZdd„Ze dd„ƒZe dd„ƒZe dd„ƒZdd„Zdd„Zdd„Ze dd„ƒZe d*d d!„ƒZe d"d#„ƒZe ‡fd$d%„ƒZe d&d'„ƒZe ‡fd(d)„ƒZ‡ZS)+ÚGitÚgitz.gitÚclone)rzgit+httpz    git+httpszgit+sshzgit+gitzgit+file)ÚGIT_DIRÚ GIT_WORK_TREEÚHEADcCs|gSrr©ÚrevrrrÚget_base_rev_args:szGit.get_base_rev_argscCsJ| t|ƒ¡\}}|jsdS| ||j¡s.dSt| ||j¡dƒ}| S)NFr)Úget_url_rev_optionsrr$Úis_commit_id_equalrÚget_revision_sha)ÚselfÚurlÚdestÚ_Ú rev_optionsÚis_tag_or_branchrrrÚis_immutable_rev_checkout>sÿzGit.is_immutable_rev_checkoutcCsXd}| dg¡}| |¡r4|t|ƒd… ¡d}nd}d | d¡dd…¡}t|ƒS)Nz git version ÚversionrÚÚ.é)Ú run_commandÚ
startswithÚlenÚsplitÚjoinÚ parse_version)r)Ú VERSION_PFXr0rrrÚget_git_versionOs 
zGit.get_git_versioncCs@dddg}|j|d|d}| ¡}| d¡r<|tdƒd…SdS)zl
        Return the current branch, or None if HEAD isn't at a branch
        (e.g. detached HEAD).
        z symbolic-refú-qr"©é©Úextra_ok_returncodesÚcwdz refs/heads/N)r4Ústripr5r6)ÚclsÚlocationÚargsÚoutputÚrefrrrÚget_current_branch\s
 
ÿ
zGit.get_current_branchc    CsV| d¡s|d}tdd0}|j|j|d|jdddd|g|jd    W5QRXd
S) z@Export the Git repository at the url to the destination locationú/Úexport)Úkind)r*zcheckout-indexz-az-fz--prefix©rAN)Úendswithr
ÚunpackÚpathr4)r)rDr*Útemp_dirrrrrJqs
  þz
Git.exportc
    CsÂd}z|jd|g|d}Wntk
r.YnXi}| ¡ ¡D]@}z| ¡\}}Wn"tk
rvtd |¡ƒ‚YnX|||<q@d |¡}d |¡}    | |¡}|dk    r°|dfS| |    ¡}|d    fS)
        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.
        r1zshow-refrLzunexpected show-ref line: {!r}zrefs/remotes/origin/{}z refs/tags/{}NTF)r4rrBÚ
splitlinesr7Ú
ValueErrorÚformatÚget)
rCr+r$rFÚrefsÚlinerrGÚ
branch_refÚtag_refrrrr(~s& 
 
 
 
 
zGit.get_revision_shacCs |j}|dk    st‚| ||¡\}}|dk    rF| |¡}|r<|nd|_|St|ƒsZt d|¡| d¡sh|S|j    t
dd||  ¡ƒ|d|j |dd}| |¡}|S)    zµ
        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.
        Nz:Did not find branch or tag '%s', assuming revision or ref.zrefs/Úfetchr<rLÚ
FETCH_HEADr#) Úarg_revÚAssertionErrorr(Úmake_newÚ branch_namerÚloggerÚwarningr5r4r    Úto_argsÚ get_revision)rCr+r*r-r$rÚ    is_branchrrrÚresolve_revision¦s*
 
þ
þ
zGit.resolve_revisioncCs|sdS| |¡|kS)z§
        Return whether the current commit hash equals the given name.
 
        Args:
          dest: the repository directory.
          name: a string name.
        F)rb)rCr+Únamerrrr'Ós    zGit.is_commit_id_equalcCsÈ| ¡}t d||t|ƒ¡| tdd||ƒ¡|jrº| |||¡}t|ddƒ}|dkr†|     ||j¡sºtdd| 
¡ƒ}|j||dn4|  |¡|krºd  |¡}dd|d    |g}|j||d|  |¡dS)
NzCloning %s%s to %srr<r^ÚcheckoutrLz    origin/{}z-bz--track)Ú
to_displayr_Úinforr4r    r$rdÚgetattrr'rarHrSÚupdate_submodules)r)r+r*r-Ú rev_displayr^Úcmd_argsÚ track_branchrrrÚ    fetch_newâs0 ÿ
ÿz Git.fetch_newcCsB|jtdd|ƒ|dtdd| ¡ƒ}|j||d| |¡dS)NÚconfigzremote.origin.urlrLrfr<)r4r    rarj©r)r+r*r-rlrrrÚswitchs
þz
Git.switchcCst| ¡tdƒkr&|jdddg|dn|jddg|d| |||¡}tddd| ¡ƒ}|j||d| |¡dS)Nz1.9.0rYr<z--tagsrLÚresetz--hard)r;r9r4rdr    rarjrprrrÚupdate sz
Git.updatecCsv|jdddgd|d}| ¡}z |d}Wntk
rBt‚YnX|D]}| d¡rH|}q`qH| d¡d    }| ¡S)
        Return URL of the first remote encountered.
 
        Raises RemoteNotFoundError if the repository does not have a remote
        url configured.
        roz --get-regexpzremote\..*\.urlr=r?rzremote.origin.url ú r>)r4rQÚ
IndexErrorr r5r7rB)rCrDÚstdoutÚremotesÚ found_remoteÚremoter*rrrÚget_remote_urls 
þ 
 
zGit.get_remote_urlNcCs&|dkr d}|jd|g|d}| ¡S)Nr"ú    rev-parserL)r4rB)rCrDr$Ú current_revrrrrb5sÿzGit.get_revisioncCsP|jddg|d ¡}tj |¡s0tj ||¡}tj tj |d¡¡}t||ƒS)z~
        Return the path to setup.py, relative to the repo root.
        Return None if setup.py is in the repo root.
        r{z    --git-dirrLz..)r4rBÚosrOÚisabsr8Úabspathr)rCrDÚgit_dirÚ    repo_rootrrrÚget_subdirectory>sþ
 zGit.get_subdirectoryc sút|ƒ\}}}}}| d¡r–|dt| d¡ƒ …}|t |¡ dd¡ d¡}t|||||fƒ}| d¡d}    |d|    …t||    d…||||fƒ}d|krÚd|ksªt    ‚| d    d
¡}t
t |ƒ  |¡\}}
} | d d ¡}nt
t |ƒ  |¡\}}
} ||
| fS) a9
        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.
        ÚfileNrIú\ú+r>z://zfile:zgit+z
git+ssh://zssh://r1) ÚurlsplitrMr6ÚlstripÚurllib_requestÚ url2pathnameÚreplaceÚ
urlunsplitÚfindr\ÚsuperrÚget_url_rev_and_auth) rCr*ÚschemeÚnetlocrOÚqueryÚfragmentÚinitial_slashesÚnewpathÚ
after_plusr$Ú    user_pass©Ú    __class__rrrŽMs0 
 
ÿÿÿÿ ÿ  zGit.get_url_rev_and_authcCs6tj tj |d¡¡sdS|jdddddg|ddS)Nz .gitmodulesÚ    submodulersz--initz --recursiver<rL)r}rOÚexistsr8r4)rCrDrrrrjps  þzGit.update_submodulescsztt|ƒ |¡}|r|Sz|jddg|dd}Wn6tk
rRt d|¡YdStk
rfYdSXtj     
|  d¡¡S)Nr{z--show-toplevelF)rAÚlog_failed_cmdzKcould not determine if %s is under git control because git is not availablez
) rrÚget_repository_rootr4rr_Údebugrr}rOÚnormpathÚrstrip)rCrDÚlocÚrr—rrrœys"ý
ÿzGit.get_repository_root)N)Ú__name__Ú
__module__Ú __qualname__reÚdirnameÚ    repo_nameÚschemesÚ unset_environÚdefault_arg_revÚ staticmethodr%r/r;Ú classmethodrHrJr(rdr'rnrqrsrzrbr‚rŽrjrœÚ __classcell__rrr—rr.sD
 
 
'
,
 
 
"
r).Ú
__future__rÚloggingÚos.pathr}ÚreÚpip._vendor.packaging.versionrr9Zpip._vendor.six.moves.urllibÚ urllib_parserrˆÚpip._internal.exceptionsrrÚpip._internal.utils.miscrrÚpip._internal.utils.subprocessr    Úpip._internal.utils.temp_dirr
Úpip._internal.utils.typingr Ú pip._internal.vcs.versioncontrolr r rrÚtypingrrrrrr†r‹Ú    getLoggerr¢r_ÚcompilerrrÚregisterrrrrÚ<module>s2        
 
a