andriod git repo 使用方法

来源:互联网 发布:华为定时开关机软件 编辑:程序博客网 时间:2024/06/06 13:58

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } -->

Git Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的分布式版本控制软件,它不同于SubversionCVS 这样的集中式版本控制系统。在集中式版本控制系统中只有一个仓库(repository ),许多个工作目录(working copy ),而像Git 这样的分布式版本控制系统中(其他主要的分布式版本控制系统还有 BitKeeper Mercurial GNU Arch Bazaar Darcs SVK Monotone 等),每一个工作目录都包含一个完整仓库,它们可以支持离线工作,本地提交可以稍后提交到服务器上。分布式系统理论上也比集中式的单服务器系统更健壮,单服务器系统一旦服务器出现问题整个系统就不能运行了,分布式系统通常不会因为一两个节点而受到影响。

因为Android 是由kernelDalvikBionicprebuiltbuild 等多个Git 项目组成,所以Android 项目编写了一个名为RepoPython 的脚本来统一管理这些项目的仓库,使得Git 的使用更加简单。

这几天 William 为了拿Android 最新的sourcecode ,学习了一下gitrepo 的一些基本操作,整理了一个如何取得Android 代码的 How-To ,今天把他贴上来。

 

1Git 的安装

http://git-scm.com / 下载最新的git 源码包:并解压:

#tar -xjf git-1.6.3.3.tar.bz2

编译并安装:

#cd git-1.6.3.3

#./configure

#make;make install

# git --version

git version 1.6.3.3

 

2 、安装Repo

首先确保在当前用户的主目录下创建一个 /bin 目录(如果没有的话),然后把它(~/bin) 加到PATH 环境变量中

接下来通过cURL 来下载Repo 脚本,保存到~/bin/repo 文件中

curl http://android.git.kernel.org/repo >~/bin/repo

别忘了给repo 可执行权限

chmod a+x ~/bin/repo

 

3 、初始化版本库

如果是想把Android 当前主线上最新版本的所有的sourcecode 拿下来,我们需要repo 的帮助。

先建立一个目录,比如~/android ,进去以后用repo init 命令即可。

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

这个过程会持续很长的时间(至少可以好好睡一觉),具体要多少时间就取决于网络条件了

最后会看到 repo initialized in /android 这样的提示,就说明本地的版本库已经初始化完毕,并且包含了当前最新的sourcecode

如果想拿某个branch 而不是主线上的代码,我们需要用-b 参数制定branch 名字,比如:

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

另一种情况是,我们只需要某一个project 的代码,比如 kernel/common ,就不需要repo 了,直接用Git 即可。

git clone git://android.git.kernel.org/kernel/common.git

这也需要不少的时间,因为它会把整个Linux Kernel 的代码复制下来。

如果需要某个branch 的代码,用git checkout 即可。比如我们刚刚拿了kernel/common.get 的代码,那就先进入到common 目录,然后用下面的命令:

git checkout origin/android-goldfish-2.6.27 -b goldfish

这样我们就在本地建立了一个名为goldfishandroid-goldfish-2.6.27 分支,代码则已经与 android-goldgish-2.6.27 同步。我们可以通过git branch 来列出本地的所有分支。

 

4 、同步版本库

使用repo sync 命令,我们把整个 Android 代码树做同步到本地,同样,我们可以用类似

repo sync project1 project2 …

这样的命令来同步某几个项目

如果是同步Android 中的单个项目,只要在项目目录下执行简单的

git pull

即可。

 

5 、通过GitWeb 下载代码

另外,如果只是需要主线上某个项目的代码,也可以通过 GitWeb 下载,在shortlog 利用关键字来搜索特定的版本,或者找几个比较新的tag 来下载还是很容易的。

Git 最初是为Linux 内核开发而设计,所以对其他平台的支持并不好,尤其是 Windows 平台,必须要有Cygwin 才可以。现在,得益于 msysgit 项目,我们已经可以不需要Cygwin 而使用Git 了。另外, Git Extensions 是一个非常好用的Windows Shell 扩展,它能与资源管理器紧密集成,甚至提供了Visual Studio 插件。它的官方网站上有一分不错的 说明文档,感兴趣的朋友可以看一看。

至于Git 的参考文档,我推荐 Git Magic ,这里还有一个 Git Magic 的中文版 。

 

获取Anroid Linux Kernel 过程:

[root@localhost ~]# mkdir bin

[root@localhost ~]# curl http://android.git.kernel.org/repo >~/bin/repo

[root@localhost bin]# cd bin/

[root@localhost bin]# chmod a+x ~/bin/repo

[root@localhost bin]# cd /usr/local/src/

[root@localhost src]# mkdir project-android

[root@localhost src]# cd project-android/

[root@localhost project-android]# git clone git://android.git.kernel.org/kernel/common.git

这里会下载半天,下载完成之后:

[root@localhost src]# cd common

[root@localhost common]# ls

arch CREDITS drivers include Kbuild MAINTAINERS net samples sound

block crypto firmware init kernel Makefile README scripts usr

 

[root@localhost common]# git branch -a

* android-2.6.27

diff

remotes/origin/HEAD -> origin/android-2.6.27

remotes/origin/android-2.6.25

remotes/origin/android-2.6.27

remotes/origin/android-2.6.29

remotes/origin/android-goldfish-2.6.27

remotes/origin/android-goldfish-2.6.29

 

 

 

要想下载2.6.29 内核,只要最后执行一下git checkout origin/android-2.6.29

看看代码是不是变成2.6.29 的了?我在这郁闷了半天,怎么总是下载2.6.27 内核的代码呵呵