构建步骤
请按以下步骤执行
- 安装repo
1 | $ cd /usr/local/bin |
- 初始化整个仓库
首先挂上 SSR.1
2
3
4$ export https_proxy=http://127.0.0.1:1087
$ cd <Repo 的工程目录>
$ repo init -u <YOUR GIT REPO>
$ repo sync
That’s All.
下面是详细介绍以及对Android适配的说明。
安装 Git-Repo
Git-Repo源码地址Git-Repo
本质上就是一款基于 Git 上的Python工具,它是google用来管理aosp(Android open source platform)的,具体功能很像git的submodule.Git-Repo
能够管理多个 Git 项目并且能够自动执行部分开发工作流程。
很多系统都会使用 Repo
, 安装方法如下:
1 | # Debian/Ubuntu. |
也可以将其作为一个脚本单独安装在文件夹中
1 | mkdir -p ~/.bin |
以 Mac 举例
1 | $ cd /usr/local/bin |
如果放在其他地方,要记得配置环境变量
使用 Manifest 配置
Repo
所有项目地址都是由 Manifest
配置,Manifest
放在项目文件夹中,默认名字为 default.xml
以 Bangumi
项目的配置举例说明
1 |
|
除此之外,还有一些如<copyfile>
<linkfile>
<include>
<group>
等标签,可以参考以下地址学习一下
repo 命令
具体参考Repo 命令参考资料,这里举几个常用的命令
repo 初始化
repo init -u
[OPTIONS>]
在当前目录中安装 Repo,
- -u:参数指向 Mainfest文件地址
- -m:在代码库中选择清单文件。如果未选择任何清单名称,则会默认选择 default.xml
- -b:指定修订版本,即特定的清单分支。
- options额外一些配置,比如指定repo的源码地址(不指定repo源码地址的话,需要翻墙才能init成功)
repo 更新
repo sync
下载新的更改并更新本地环境中的工作文件。如果您在未使用任何参数的情况下运行 repo sync,则该操作会同步所有项目的文件.
运行 repo sync
后,将出现以下情况:
如果目标项目从未同步过,则 repo sync
相当于 git clone
。远程代码库中的所有分支都会复制到本地项目目录中。
如果目标项目已同步过,则 repo sync
相当于以下命令:1
2git remote update
git rebase origin/<BRANCH>
其中
如果 git rebase
操作导致合并冲突,那么您需要使用普通 Git 命令(例如 git rebase --continue
)来解决冲突。repo sync
运行成功后,指定项目中的代码会与远程代码库中的代码保持同步。
选项:
- -d:将指定项目切换回清单修订版本。如果项目当前属于某个主题分支,但只是临时需要清单修订版本,则此选项会有所帮助。
- -s:同步到当前清单中清单服务器元素指定的一个已知的良好版本。
- -f:即使某个项目同步失败,系统也会继续同步其他项目。
repo 状态
repo status [
]
对于每个指定的项目,将工作树与临时区域(索引)以及此分支 (HEAD) 上的最近一次提交进行比较。在这三种状态存在差异之处显示每个文件的摘要行。
要仅查看当前分支的状态,请运行 repo status。系统会按项目列出状态信息。
每次Git提交完后记得 repo status,防止漏掉其他项目上的修改。
repo 开发
repo start
[ ] # —all 表示对所有项目进行操作
Repo forall –c git ….. # 对由repo管理的git库进行操作,
从清单中指定的修订版本开始,创建一个新的分支进行开发。
这个可以在不同的项目中使用不同的分支,防止代码冲突
Android上的额外工作
app主模块
因为app主模块中会携带一些 build.gradle
,gradle.properites
,settings.gradle
等文件,所有需要将app里面的文件直接放入repo下,如下所示1
<project name="app" remote="acggroup" path="." />
防止各个模块在Git上的污染
因为app直接放在 repo 目录中,所以不可避免的会产生git的文件污染,这时候需要配置 .gitignore
文件来进行避免1
2
3...
*/
!/app
*/
表示所有文件夹都不加入代码版本控制,!/app
app主文件夹除外。
所以若以后在主目录下加入新的文件夹并要加入版本控制,必须要在 .gitignore
中进行除外 !/<YOUR DIR>
忽略 .repo 文件夹
因为 .repo
文件夹中会额外存一份从git上拉取过来的代码,所以为了防止在开发中误修改 .repo
中的文件需要将 .repo
从 Android Studio IDE
中除外.
具体操作:Android Studio -> Editor -> File Types -> Ignore files and folders(在最下方) -> 编辑并添加 .repo;
总结
多git项目开发能够即时的将修改的代码同步到其他项目上,这样就能随心所欲的开 project 了。
而且方便调试和修改,不用再每次改一处代码上传一次maven然后在download下来,简直折磨。
Repo操作其实没多少,其余的还是git操作为主,不过第三方的git管理软件比如 sourcetree 可能会出问题(我没试过),所以还是乖乖用git命令行吧。