前言~

repo是一款安卓用于管理源码的工具,由python实现,基于git工具

本文介绍了repo的常用使用方式。

一,下载代码

1. repo init 初始化命令

此命令常用选项就那几个,此处取俩举例:

-u 后面跟清单文件仓库,manifests.git

--repo-url= 后面跟repo工具源码仓库 repo.git

repo init -u git@xxxxxxx:project/manifests.git --repo-url=git@xxxxxxxx:repo.git

运行此命令后,repo工具会根据manifest文件初始化配置,为后续同步(repo sync)做准备。

运行命令的路径下会新增.repo文件夹,里面存放了清单仓库,脚本文件等等~

.repo
├── manifests       # 一个git库,包含default.xml文件,用于描述repo所管理的git库的信息
├── manifests.git   # manifest这个git库的实体,manifest/.git目录下的所有文件都会链接到该目录
├── manifest.xml    # manifests/default.xml的一个软链接
└── repo            # 一个git库,包含repo运行的所有脚本

2.repo sync同步代码命令

当运行repo init后,就需要开始下载代码了,repo称之为同步。

第一次同步,相当于触发 git clone命令。

第二次同步,相当于触发git remote update && git rebase origin/<BRANCH>就是当前与本地分支所关联的远程分支 代码合并可能会产生冲突,当冲突出现时,只需要解决完冲突,然后执行git rebase --continue即可。

该命令常用的可选参数:

-j :开启多线程同步,加快sync命令的执行速度。默认情况下,使用清单里指定的-j参数并发进行sync,如果没指定,则默认为4个。

*-c, –current-branch*:只同步指定的远程分支。默认情况下,sync会同步所有的远程分支,当远程分支比较多的时候,下载的代码量就大。使用该参数,可以缩减下载时间,节省本地磁盘空间

*-d, –detach*:脱离当前的本地分支,切换到manifest.xml中设定的分支。在实际操作中,这个参数很有用,当我们第一次sync完代码后,往往会切换到dev分支进行开发。如果不带该参数使用sync, 则会触发本地的dev分支与manifest设定的远程分支进行合并,这会很可能会导致sync失败

*-f, –force-broken*:当有git库sync失败了,不中断整个同步操作,继续同步其他的git库

整个同步时间以仓库体量有关,尽量利用多线程最大化速度~

运行完后,终端会显示sync成功完成,但此时仓库没有在任何一个分支上...

二,设置分支

1.新建分支

由于没有处在分支上,所以需要设置一个分支以进行后续操作

repo start branch-name --all 

参数:

branch-name 为需要新建的分支名,master什么的

--all 为所有路径添加此分支

也可以指定项目路径创建分支,取消--all参数

image-20220325181917266

2.运行repo branch可以查看当前分支~

image-20220325181951961

3.同步一下

repo sync -j50

image-20220325182510587

三,开始上传代码

我们假设已经修改了仓库代码

1.单独 上传

在各个仓库按照正常git仓库操作的方式进行操作

git status

git add

git commit -m "info....."

repo upload path_name

2.批量上传

这里会用到一个比较常用的命令:

repo forall -c "mycmd"

意思是在当前repo管理的所有仓库内,执行mycmd。

我们这里利用它批量上传:

repo forall -c "pwd && git add -A && git commit -m "上传信息" "

前面加一个pwd命令目的为查看当前执行的是哪个目录。

确认所有本地都提交了后~

运行repo upload 统一上传到仓库~

这里介绍的比较浅显,如不能满足需求请深入学习~

版权声明

码字不易,转载请注明原作者 ~ (from:https://erdong.work