Repo 简介
Gerrit,一种免费、开放源代码的代码审查软件,使用网页界面。利用网页浏览器,同一个团队的软件程序员,可以相互审阅彼此修改后的程序代码,决定是否能够提交,退回或者继续修改。
repo是Google开发的用于管理Android版本库的一个工具,repo是使用Python对git进行了一定的封装,并不是用于取代git,它简化了对多个Git版本库的管理。用repo管理的版本库都需要使用git命令来进行操作。
Repo 常用命令
.:当前目录
repo脚本有如下可用参数:
--repo-url=URL
repo 工具本身的 git 库地址。缺省为:git://android.git.kernel.org/tools/repo.git
--repo-branch=REVISION 使用repo的版本库,即repo git库的分支或者里程碑名称。缺省为caf-stable
--no-repo-verify 设定不要对repo的里程碑签名进行严格的验证。
-u(--manifest-url) 设定清单库的Git服务器地址。
-b(--manifest-branch) 检出清单库的特定分支。
--mirror 只在repo第一次初始化的时候使用,建立本地镜像
-m(--manifest-name) 指定清单库中的某个清单为有效的清单文件。默认为default.xml。
--no-tags don't fetch tags (不获取标签)
repo 命令参数的含义,可以执行repo help command(sync)来看
常用repo命令
repo命令还有很多,可以通过命令 repo help?显示所有的命令,有兴趣的同学可以自行查阅。在这就不一一列举了。
另外 repo help 来获取有关某个命令的信息,例如,以下命令会生成 repo init 参数的说明和选项列表
repo help init
现在只列出我在工作中,用到比较多的几条repo命令:同步完成源代码后,需要为所有文件夹创建本地分支:
在源代码根目录执行命令:
repo start --all 自定义分支名
如:
repo start mtk/huaqin/6833_S_Drvonly --all 将所有的仓切换到mtk/../Drvonly分支下
删除指定本地分支:
repo abandon 已创建的本地分支名
repo sync -c . -c当前分支.代表当前目录
常见错误
1.所有代码拉取报错,请先使用如下命令回收详细拉取日志,方便分析定位;打印并回收报错的日志sync.log,找到具体报错仓的日志
repo --trace sync -c -j4 --no-tags 2>&1 | tee sync.log
将repo的所有动作详细输出:repo --trace sync -cdf
2.报错关键字:fatal :不是一个git仓库 或 not a git repository
3.报错关键字:fetch: [Errno 24] Too many open files
解决办法:
1. 修改这个文件
sudo vim /etc/security/limits.conf
添加如下两行
* soft nofile 10240
* hard nofile 10240
然后重启机器
2. 单独拉取报错的仓库,看下是否还会报错
repo --trace sync -c --no-tags ${报错的仓库名}
3. repo --trace sync -c --no-tags 2>&1 | tee sync.log 继续拉取
通过repo批量执行某个操做
repo forall -c "需要执行的命令" 如:repo forall -c "git pull --rebase"