hello world!
分类: Android平台
2013-07-11 14:35:24
repo只是google用Python脚本写的调用git的一个脚本,主要是用来下载、管理Android项目的软件仓库。
一、使用repo下载源码:
1)确定在home目录中拥有bin/目录,并添加到path中:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
2)下载repo:
$ curl ~/bin/repo
$ chmod a+x ~/bin/repo
3)下载
$ mkdir android-x86
$ cd android-x86
$ repo init -u
$ repo sync
repo sync是可以断点续传的,中间要是某个project断了直接ctrl c就可以下一个了,到时候在重新sync一遍
或者ctrl z, 中断之后再进行repo sync即可。
执行$repo sync时经常中断,可使用如下脚本:
#!/usr/bin/sh
echo "=====================start repo sync======================"
repo sync
while [ $? = 1 ]; do
echo “==============sync failed, re-sync again===================”
sleep 3
repo sync
done
脚本先执行一次 repo sync命令,然后循环判断$? 是否为 1,为1则再次执行repo sync命令,直到$?=0, 完成退出。
$? 这个变量储存的是上一次shell命令执行的返回值, 0表示成功,非零表示失败。
二、repo help
1、#repo init -u URL , 在当前目录安装 repository ,会在当前目录创建一个目录 ".repo" , -u 参数指定一个URL, 从这个URL 中取得repository 的 manifest 文件。
repo init -u git://android.git.kernel.org/platform/manifest.git ,可以用 -m 参数来选择 repository 中的某一个特定的 manifest 文件,如果不具体指定,那么表示为默认的 manifest 文件 (default.xml)
repo init -u git://android.git.kernel.org/platform/manifest.git -m dalvik-plus.xml , 可以用 -b 参数来指定某个manifest 分支。
2、#repo sync [project] 下载最新本地工作文件,同步 repository 中的代码。 可以指定需要更新的project , 如果不指定任何参数,会同步整个所有的项目
如果是第一次运行 repo sync , 则这个命令相当于 git clone ,会把 repository 中的所有内容都拷贝到本地。
如果不是第一次运行 repo sync , 则相当于 更新 和 自动合并 动作;
repo sync 会更新 .repo 下面的文件。 如果在merge 的过程中出现冲突, 这需要手动运行 git rebase --continue
3. repo diff [ project-list ] 显示提交的代码和当前工作目录代码之间的差异。
4. repo forall -c command,对所有项目执行一个command命令,这个命令 相当 好用;
5. repo start newbranchname 创建新的branch分支。 "." 代表当前工作的branch 分支。
6. repo prune [project list] 删除已经merge 的 project
7. repo status 显示 project 的状态
三、查看可切换的分支
cd .repo/manifests
git branch –a
或$ git --git-dir=.repo/manifests/.git/ branch -a
查看当前的分支
repo branches
四、使用Repo在Windows平台下载Android源码
1. 安裝Cygwin [1] , 要安裝的packages如下:
Net -> curl
Devel -> git* (git, git-completion, git-gui, gitk)
Libs -> libreadline6, libiconv2
Editors -> vim
Python -> python
2. 启动Cygwin之后,开始安装Repo
先在使用者的家目录新增bin目录
$ cd ~
$ mkdir bin
下载Repo到bin目录里
$ curl >~/bin/repo
$ chmod a+x ~/bin/repo
设定Repo,并新增mydroid目录准备存放源码
$ cd ~
$ mkdir mydroid
$ cd mydroid
$ ~/bin/repo init -u git://android.git.kernel.org/platform/manifest.git
(需要输入一个已申请Google account的email)
开始抓取所有的Android源码
$ ~/bin/repo sync