lgtddlZddlZddlZdZdZdZdZdZdZ dZ d Z d Z d Z dd ZdZdZdZdS)Nchtjjdtj|SN/)libconfig path_cacheospathbasenameprojects /obs/lib/git.py get_repo_pathr s+j# A Abg&6&6w&?&? A AAc|tjjvrtjj|Stjjd|Sr)rr git_url_othergit_url_defaultr s r get_repo_urlr s;#****z'00j( 4 47 4 44rcx|tjjvrtjj|StjjSN)rrgit_latest_tag_pattern_othergit_latest_tag_pattern_defaultr s rget_latest_tag_patternrs-#*999z6w?? : 44rc,tjj}t|}t |}t j|rD|r+t|dtj ddg|nt|d|ddSt|d|t j tj j d tj dd ||gtj gd |tj gd |dS) Nz : 'git fetch'gitfetchcwdz: using cached z (not cloning, not fetching)z : cloning T)exist_okclone)rrz user.namezOsmocom OBS scripts)rrz user.emailzinfo@osmocom.org) rargs git_fetchrrr r existsprintrun_cmdmakedirsrr)r r repo_pathurls rr r s@ H Eg&&I w  C w~~i    P W+++ , , , K(i 8 8 8 8 8 WNNSNNN O O O W % % % %&&&K %5555Ki0111KEEEKCCCrcxt|}t|dtjgd|dS)Nz: 'git clean -ffxd')rcleanz-ffxdr)rr$rr%)r r's rr*r*0sHg&&I W ) ) )***K)))y999999rct|}tjjsEtjgd|j}t|d|dSt|d|dtjddd|g|t|d |dtjdd d |g|t|d tjgd |dS)N)rlogz--pretty=onelinez--abbrev-commitz-1rz): skipping git checkout, current commit: z: 'git checkout -f 'rcheckoutz-fz: 'git reset --hard resetz--hardz: 'git submodule update --init')r submoduleupdatez--init)rrr! git_checkoutr%outputrstripr$)r branchr'refs rr.r.6s&g&&I 8 k!!!&/11117  HH3HHIII W 2 2 2 2 2333K D&1yAAAA W 3 3& 3 3 3444K62 BBBB W 5 5 5666K888iHHHHHHrct|}tjgd|tjdddt|g|dS)z checkout a given gerrit ID )rreviewz-srrr8z-dN)rrr%str)r gerrit_idr's rcheckout_from_reviewr;EsUg&&IK'''Y7777K$I7YGGGGGGrcx|tjjvrtjj|StjjSr)rrgit_branch_othergit_branch_defaultr s rget_default_branchr?Ls-#*---j)'22 : ((rcJt|}t|d|dS)Nzorigin/)r?r.)r r5s rcheckout_default_branchrARs.  ( (F W((()))))rct|}tjgd|}|jS)N)rz rev-parseHEADr)rrr%r3r4)r r'rets rget_headrEWs>g&&I +222 B B BC :    rTcJ|st|}t|}t|d|tjdd|d|g}|jdd}|s1|rt|d|dStj|d|d |S) Nz#: getting head from git remote for r ls-remotezheads/ rz: branch not found: zfailed to find head commit for z in output)r?rr$rr%r3splitexit_error_cmd)r r5branch_missing_okrepo_url ls_remoterDs rget_head_remoterN]s -#G,,G$$H W A A A ABBB UK;LF;L;LMNNI    & &q )C 4   W::&:: ; ; ;4 9'3&'3'3'3 4 4 4 Jrcft|}tj|}t|}t jgd|}|jdD]0}|d}| |r|cS1t j |d|d|dS)N)rtagz-l--sort=-v:refnamer  zcouldn't find latest tag for z, regex used on output: ) rrecompilerrr%r3rIstripmatchrJ)r pattern_strpatternr' git_tag_retlines rget_latest_tagr\ss(11Kj%%Gg&&I+GGG"+---K"((..zz$ ==   KKK {%?G%?%?1<%?%?@@@@@rc t|}tj|}t|dt jddddt |g}|jdD]R}d|vrd|vr | dd }| |r|cSSdS) Nz$: getting latest tag from git remoterrGz--tagsrQrRz^{}z refs/tags/) rrTrUr$rr%rr3rIr4rW)r rXrYrMr[s rget_latest_tag_remoter_s(11Kj%%G W : : :;;; UK;N)'22455I &&t,,   D==  t # # {{}}""<003 ==   KKK  4rc@t|t|dSr)r.r\r s rcheckout_latest_tagras  WnW--.....r)T)r rT lib.configrrrrr r*r.r;r?rArErNr\r_rarrrds BBB555 555 .::: I I IHHH))) ***  ,@@@"0/////r