博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
repo代码解读
阅读量:7259 次
发布时间:2019-06-29

本文共 688 字,大约阅读时间需要 2 分钟。

hot3.png

1. repo脚本是作为整个repo工具的入口,主要负责repo环境的初始化和克隆出repo库。repo有两端if __name==‘__main__': 位于开始部分主要是给shell执行用,就是把repo脚本当shell脚本跑,末尾的那段是给python执行用的。
    主方法:main
    a. 环境初始化   _FindRepo()
    找到repo脚本所在的目录,一般都是用户主目录下的bin目录中,寻找main.py文件
    b. 分析命令行参数  _ParseArguments()
    分析出哪些是命令,哪些是参数
    c. 本次执行涉及的脚本和目录是否存在 _RunSelf()
    主要查找git_config.py/project.py/subcmds
    d. 设定默认值
    c. 做repo的克隆或者更新 __Init()
    repo并不是做的克隆,而是先在本地创建一个空的repo库,然后设置注册远程库,最后做更新
 
2. main.py负责具体命令的执行,包括manifests库的克隆的检出。main.py的结构和repo脚本类似
    主方法: _Main
    1. ssh验证 gitconfig 用户名,邮箱地址 验证 init_ssh()
    2. 网络验证 init_http()
    3. 解析manifest.xml 没有指定的就是要默认名称
    4. 通过getattr 方式 执行命令 _Run() 根据命令的名称,执行subcmds下对应的文件。秘密就在subcmds/__init__.py文件里
    

转载于:https://my.oschina.net/hopeMan/blog/60412

你可能感兴趣的文章
自测题的整理(持续更新)
查看>>
DAMS2019中国数据智能管理峰会将于7月在上海召开!
查看>>
[原创]TimeQuest约束外设之诡异的Create Generated Clocks用法
查看>>
Unity UGUI —— 无限循环List(转载)
查看>>
【总结整理】《人人都是产品经理》---读后感
查看>>
第23件事 评估产品或项目是否靠谱的7个标准
查看>>
MySQL的优化与执行
查看>>
04-人员增删改查
查看>>
Python之自动单元测试之一(unittest使用实例)
查看>>
ORA-04031:oracle无法分配共享内存
查看>>
Mysql SQL Mode详解
查看>>
理解WebKit和Chromium: Chromium for Android
查看>>
Floyd算法 笔记 C/C++
查看>>
Android中再按一次退出实现
查看>>
基于Unity3D 的Vuforia SDK开发基础教程
查看>>
用户,群组和权限 二
查看>>
【转】JCR期刊分区及其检索方法
查看>>
浅思OC的语言特性
查看>>
CentOS7下用jdk1.7编译hadoop-2.7.1全过程详解
查看>>
MD5密码加密
查看>>