Git、Gerrit、Repo三者的概念及使用
三者各自作用:
git:版本管理库,在git库中没有中心服务器的概念,真正的分布式。
repo:repo就是多个git库的管理工具。如果是多个git库同时管理,可以使用repo。当然使用gerrit,就必须用repo。repo是Google开发的用于管理Android版本库的一个工具,repo是使用Python对git进行了一定的封装,并不是用于取代git,它简化了对多个Git版本库的管理。用repo管理的版本库都需要使用git命令来进行操作。
gerrit:提交审核代码,图形化的界面,简单的操作
使用三者管理代码流程:
- repo init xxx初始化
- repo sync xxx同步要改动的项目
- 在该项目下面repo start xxx新建一个本地分支
- 做好改动以后git commit本地提交改动
- repo upload xxx将改动上传,等别人通过gerrit review
- review如果有需要改动的地方,那本地改好后,git commit --amend来保存新的修改
- repo upload 将新的改动上传
- 重复5-7步,直到review通过,然后merge改动,完毕
参考链接:https://blog.csdn.net/sk983671939/article/details/113941180
在拉代码时,目录下的compile_detail.info中,广泛运用了repo命令来下载各个组件的版本
Repo 常用命令:
manifest源,一般直接使用清华或中科大的镜像源
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest 是清华提供的镜像源
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest 是中国科学技术大学的镜像源
repo init 与 repo sync 区别
repo init:更新本地的repo
repo sync: 下载代码到本地。
repo init to bring down the latest version of Repo with all its most recent bug fixes.
repo sync,这一步才是真正的从服务器把源码下拉的过程,repo相当与是执行了多个git,期间有一个git出问题,比如网络卡什么的就中断,然后就是重复repo sync
关于repo的基本用法,这里有 http://source.android.com/source/using-repo.html
举个栗子:
repo sync -fcq -j4 --no-tags --prune --no-repo-verify
这个命令是用于同步 Android 代码库的。它的具体含义如下:
repo sync:执行代码库同步操作。
-f:强制同步,即使本地的修改会被覆盖。
-c:只限于当前分支,不同步所有分支。
-q:以静默模式执行,只显示关键信息。
-j4:使用 4 个线程进行同步操作。这个数字可以根据你的电脑处理器核心数进行调整。
–no-tags:不同步标签信息。
–prune:删除本地不存在的远程分支。
–no-repo-verify:跳过验证代码库。
总之,这个命令的目的是将你的 Android 代码库与远程仓库保持同步。