【20180331】python--repo:入口脚本repo文件学习

1.概述:

repo文件作为repo命令执行的入口,主要完成如下功能:执行环境检验&repo命令参数初步解析&执行环境初始化&repo工程主体main.py调用。

2.数据结构:

不涉及复杂程度较高的数据结构。

关键变量:repodir(.repo); S_repo(.repo/repo); REPO_MAIN(.repo/repo/main.py)

3.主体思路:

__main__ --> 

main(sys.argv[1:]) --> 

FindRepo(从当前目录逐层向上查找repodir是否存在) --> 

args初步解析(判断是否--help/--init/other cmd) --> 

分支:本地环境不存在repodir:根据解析得到的cmd进行处理,只有cmd=init时会触发Init(args)来初始化下载repo仓,下载成功后重新FindRepo获得main和dir信息 --> 

分支:本地环境存在repodir:使用main和args/extra_args组合启动新进程os.execv


对于Init(args)补充:main中对接收到的args进行首次简单解析,分离命令cmd和参数args',args将传递给Init用来二次解析获取repo_url&repo_branch信息并补充extra_args;然后在Init中进行mkdir(repodir) --> Checkgitversion --> Clone --> Checkout;

对于Clone()补充:mkdir(local) --> subprocess(git init ) --> InitHttp --> setgitconfig --> Setbundle --> Fetch.

4.算法设计:

入口脚本repo文件中没有涉及复杂程度较高的算法,多为一些通用功能的组合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值