您的位置:首页 > 移动开发 > Android开发

repo教程以及repo下载android源码以及遇到的问题

2013-12-23 13:00 453 查看
根据android官网,下载并安装repo:

http://source.android.com/source/downloading.html

To install Repo:

Make sure you have a bin/ directory in your home directory and that it is included in your path:
$ mkdir ~/bin
$ PATH=~/bin:$PATH


Download the Repo tool and ensure that it is executable:
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo


用repo下载android源代码遇到如下问题:

Fetching project:100%(169/169),done之后就卡住不动了,ctrl+c也无法中断,到android官网查到如下:

More rarely, Linux clients experience connectivity issues, getting stuck in the middle of downloads (typically during "Receiving objects"). It has been reported that tweaking the settings of the TCP/IP stack and using non-parallel commands can improve the situation.
You need root access to modify the TCP setting:
$ sudo sysctl -w net.ipv4.tcp_window_scaling=0
$ repo sync -j1

按提示输入上述两条命令解决问题。

恢复某个版本code的命令,采用-m参数:

repo init -u ssh://192.168.1.167/pub/0/android_4.2.2/platform/manifest.git -m version2_release.xml
-b branch_abc

其中-m参数后面所跟文件名为 .repo/manifests/目录下的某个xml文件。

repo教程:

涉及Android源代码的工作需要用到的Git和Repo工具。多数情况下我们可以用Git工具代替Repo,或者两者混用组合成更复杂的命令。而Repo工具可以使Android的网络操作更加简洁。

Git是一个开源版本管理系统,旨在处理各种知识库发布的大型项目。一般来说,我们可以使用Git进行本地操作,比如本地分支化、提交、对比和编辑。Android项目中一个挑战是如何支持外部的群体(爱好者社区以及大型OEM厂商)。如果想让组件可替代、延长生命周期,我们必须选择一个发布式版本管理系统,所有我们选择Git工具。

Repo是基于Git工具的知识库管理系统工具,该工具可以统一管理Git知识库并提交源码到版本管理系统,使得Android项目的开发流程自动化。Repo并不意味着替代Git工具,它仅使得工作更加简单。Repo命令是Python脚本,可以放到任何路径下。涉及到网络操作时可以使用该工具,比如使用单个Repo命令可以下载多个知识库到本地。

Gerrit是给予web的代码review系统,集中支持了Git众多的应用。该系统允许授权用户提交代码更改,通过review后自动merge到版本管理系统。Gerrit支持差异展现和在线评论,使review比较简单。

一、版本管理基本流程

与知识库交互的基本流程如下:

1、建立新的分支——repo start

2、编辑代码文件

3、stage文件更改——git add

4、提交更改——git commit

5、提交更改到review服务器——repo upload



二、任务处理

下面详细介绍了如何使用Repo和Git命令。

1、同步本地客户端

同步所有的工程文件——repo sync,下载最新本地工作文件,更新成功,这本地文件和repository 中的代码是一样的。 可以指定需要更新的project , 如果不指定任何参数,会同步整个所有的项目。如果是第一次运行 repo sync , 则这个命令相当于 git clone ,会把 repository 中的所有内容都拷贝到本地。 如果不是第一次运行 repo sync , 则相当于 git remote update
; git rebase origin/branch . repo sync 会更新 .repo 下面的文件。 如果在merge 的过程中出现冲突, 这需要手动运行 git rebase --continue

同步特定的工程文件——repo sync PROJECT0 PROJECT1 PROJECT2 ...

2、创建分支

每当开始编辑文件比如开始修改bug和添加新的功能,需要在本地创建特定的分支。分支并不是原始文件的拷贝,它作为特定提交的标示,该标示创建本地分支并在分支间进行轻量级切换,分支可以隔绝一个方面的更改。

创建分支——repo start BRANCH_NAME

验证新分支的有效性——repo status

3、分支使用

分配分支到特定工程——repo start BRANCH_NAME PROJECT

本地环境中切换分支——git checkout BRANCH_NAME

列出所有分支——git branch or repo branches

4、staging文件

默认情况下,git工具提示但并不跟踪工程的更改,为了通知git保存代码的变化,我们必须commit代码,即“staging”。

stage文件更改——git add

该命令可以接受任何文件和工程目录,git添加文件到git知识库,并且stage文件更改、删除的记录。

5、浏览客户端状态

展示文件状态——repo status

展示未提交的文件编辑——repo diff

6、提交更改

git中commit是版本管理的基本单元,包含了工程的目录结构和文件内容。

创建commit——git commit

执行该命令后editor中弹出commit提示信息,最好能够提供有益的帮助信息。如果没有添加log信息,该次commit提交会被遗弃。

7、提交更改到Gerrit

upload之前更新最新的版本——repo sync

接着提交代码——repo upload

之后呈现我们提交的更改,并提示我们选择分支。

8、处理代码冲突

提交代码时如果遇到冲突,需要执行以下操作:进入相关的工程目录,针对冲突的文件运行git add和git commit命令,恢复更改。如下:

git add .

git commit

git rebase --continue

恢复更改后再次重复整个更新:

repo sync PROJECT0 PROJECT1 ... PROJECTN

如果本地又对刚刚提交的代码进行了修改,提交时可以直接覆盖上次的提交,执行如下命令:

git add files

git commit --amend

repo upload

9、清除客户端文件

merge代码到Gerrit之后,更新本地的工作目录:

repo sync

安全清除陈旧的分支执行以下命令:

repo prune

想恢复代码到以前的分支,可以执行以下命令:

git log

git reset hard

10、删除客户端代码

由于代码所有的代码信息存储在本地,我们仅需要删除目录即可完成:

rm -rf WORKING_DIRECTORY

删除本地代码后将会永久的删除所有提交的更改。

三、Git和Repo流程表



原文参考:http://source.android.com/source/version-control.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: