repo的使用

repo是什么?


repo只是google用Python脚本写的调用git的一个脚本,主要是用来下载、管理Android项目的软件仓库。(也就是说,他是用来管理给git管理的一个个仓库的)
下载 repo 的地址: http://android.git.kernel.org/repo ,可以用以下二者之一来下载 repo
curl http://android.git.kernel.org/repo > ~/bin/repo 
下载完成后须修改repo的权限: chmod a+x ~/bin/repo
用repo sync 在抓去 android source code 的时候,会经常出现一些错误导致 repo sync 中断,每次都要手动开始。 可以用如下的命令,来自动重复
$?=1;
while [ $? -ne 0 ] ;
do  repo sync ;
done

常用命令


获取帮助:
repo help [ command ]   //显示command 的详细的帮助信息内容

示例: repo help init 来获取 repo init 的其他用法

repo init -u URL 用以在当前目录安装 repository ,会在当前目录创建一个目录 ".repo"  -u 参数指定一个URL, 从这个URL 中取得repository 的 manifest 文件。  

示例:repo init -u git://android.git.kernel.org/platform/manifest.git

获取的manifest文件放在.repo目录中。命名为manifest.xml。这个文件的内容其实就是所有被git管理的仓库的列表!

可以用 -m 参数来选择获取 repository 中的某一个特定的 manifest 文件,如果不具体指定,那么表示为默认的 namifest 文件 (default.xml)

repo init -u git://android.git.kernel.org/platform/manifest.git -m dalvik-plus.xml

(有诸多供我们选择的manifest文件,所有的manifest文件都放在目录.repo/manifests中,该目录本身亦被git所管理,你可以cd进去看看)


可以用 -b 参数来指定某个manifest 分支。

repo init -u git://android.git.kernel.org/platform/manifest.git -b release-1.0

你会发现.repo/manifests是个被git管理的仓库,这里放的是所有的manifest文件(*.xml),因为被git管理,固然有分支,-b可以切换到你想要的分支然后再下载相关的xml文件,当然具体下载那个xml还要看-m参数了,所以如果你仅仅指定-b而没有-m的话,就是下载-b指定分支下的default.xml文件

如果不指定-b参数,那么会默认使用master分支

4. repo sync [project-list]

下载最新本地工作文件,更新成功,这本地文件和repository 中的代码是一样的。 可以指定需要更新的project , 如果不指定任何参数,会同步整个所有的项目。

如果是第一次运行 repo sync , 则这个命令相当于 git clone ,会把 repository 中的所有内容都拷贝到本地。 如果不是第一次运行 repo sync , 则相当于 git remote update ;  git rebase origin/branch .  repo sync 会更新 .repo 下面的文件。 如果在merge 的过程中出现冲突, 这需要手动运行
 git  rebase --continue

5. repo update[ project-list ]

上传修改的代码 ,如果你本地的代码有所修改,那么在运行 repo sync 的时候,会提示你上传修改的代码,所有修改的代码分支会上传到 Gerrit (基于web 的代码review 系统), Gerrit 受到上传的代码,会转换为一个个变更,从而可以让人们来review 修改的代码。

6. repo diff [ project-list ]

显示提交的代码和当前工作目录代码之间的差异。
7. repo download  target revision

下载特定的修改版本到本地, 例如:  repo download pltform/frameworks/base 1241 下载修改版本为 1241 的代码

8. repo start newbranchname .

创建新的branch分支。 "." 代表当前工作的branch 分支。

9.  repo prune [project list]

删除已经merge 的 project

10. repo foreach [ project-lists] -c command

对每一个 project 运行 command 命令
11. repo status

显示 project 中每个仓库的状态

12. repo forall -c


### 关于repo工具的使用说明或操作指南 repo一个Google 开发的工具,旨在简化 Android 目中多个 Git 仓库的管理[^1]。它为开发者提供了一种高效的方式来初始化、同步和管理多个 Git 仓库。以下是 repo 工具的主要功能和常用命令: #### 一. 初始化目 `repo init` 命令用于初始化一个新的 repo 客户端。此命令会下载 manifest 文件并配置目的远程地址和分支版本。 ```bash repo init -u <manifest_url> -b <branch_name> ``` 例如: ```bash repo init -u https://android.googlesource.com/platform/manifest -b android-10.0.0_r1 ``` 这一步骤会从指定的 URL 下载 manifest 配置文件,并设置到指定的分支版本[^3]。 #### 二. 同步代码 `repo sync` 命令用于将所有相关的 Git 仓库同步到本地。 ```bash repo sync ``` 如果需要强制回滚到某个版本,可以结合 `-d` 参数使用: ```bash repo sync -d ``` 此外,为了清理工作目录中的更改和未跟踪的文件,可以运行以下命令: ```bash repo forall -c 'git reset --hard' # 恢复到最近一次提交的状态 repo forall -c 'git clean -f -d' # 删除未跟踪的文件和目录 ``` 这些命令可以帮助保持代码库的干净状态[^2]。 #### 三. 创建分支 `repo start` 命令用于在所有目中创建一个新的分支。 ```bash repo start <branch_name> --all ``` #### 四. 切换分支 `repo checkout` 命令用于切换到指定的分支。 ```bash repo checkout <branch_name> ``` #### 五. 查看分支 `repo branch` 命令用于列出当前所有目的分支信息。 ```bash repo branch ``` #### 六. 提交更改 `repo stage` 和 `repo diff` 命令分别用于暂存更改和查看差异。 ```bash repo diff # 查看更改 repo stage . # 暂存当前目录的所有更改 ``` #### 七. 清理未使用的分支 `repo prune` 命令用于删除远程已经移除的分支。 ```bash repo prune ``` #### 八. 检查状态 `repo status` 命令用于显示每个目的更改状态。 ```bash repo status ``` #### 九. 在所有目中执行命令 `repo forall` 命令可以在所有目中执行任意 Git 命令。 ```bash repo forall -c 'git log -1' ``` #### 十. 远程操作 `repo remote` 和 `repo push` 命令用于管理和推送远程仓库。 ```bash repo remote -r <remote_name> repo push <project_name> <branch_name>:refs/for/<branch_name> ``` #### 十一. 搜索内容 `repo grep` 命令用于在所有目中搜索特定的内容。 ```bash repo grep "search_term" ``` #### 十二. 显示版本信息 `repo version` 命令用于显示当前 repo 工具的版本。 ```bash repo version ``` #### 十三. 更新 repo 工具 `repo selfupdate` 命令用于更新 repo 工具本身。 ```bash repo selfupdate ``` #### 十四. 获取帮助 `repo help` 命令提供了关于 repo 工具的详细帮助信息。 ```bash repo help ``` ### 注意事 - repo 工具本质上是对多个 Git 仓库的封装,因此掌握 Git 的基本操作对于使用 repo 工具非常重要。 - AOSP 目非常庞大,建议关注特定版本的代码以节省资源。 ```python # 示例:下载 repo 工具并添加到环境变量 import os os.system("curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo") os.system("chmod a+x ~/bin/repo") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值