zoukankan      html  css  js  c++  java
  • 使用repo和git下载android源码 和 相关解释

    repo只是google用Python脚本写的调用git的一个脚本,主要是用来下载、管理Android项目的软件仓库。(也就是说,他是用来管理git所管理的一个个仓库)可以简化android开发中git的使用。
     
    -----------------  repo使用方法 ---------------------
    $repo init -u URL [OPTIONS]
     
    Options:
    -u: specify a URL from which to retrieve a manifest repository. The common manifest can be found atgit://android.git.kernel.org/platform/manifest.git
        指定一个网址,从这个网址里 检索清单资料库,常见的应用是 android.git.kernel.org/platform/manifest.git
    -m: select a manifest file within the repository. If no manifest name is selected, the default is default.xml.
        在仓库内 选择一个 清单文件(manifest),如果没有你要的文件,那么 默认是default.xml
    -b: specify a particular manifest-branch.
        指定 一个特定的 在清单里的 分支
     
    $repo sync [PROJECT_LIST]
    ---------------------------------------
     以下操作是在ubuntu上,其实 其他的linux基本都一样!

    1.安装git和curl
    命令:
    $sudo apt-get install git-core curl

    说明:
          curl是一个向服务器或从服务器传输数据的工具,它支持HTTP 、HTTPS、FTP 、 FTPS 、 SCP、SFTP、TFTP、DICT、TELNET、LDAP或FILE等协议。对于web开发人员来说,它对 HTTP POST的支持为我们提供了很大的帮助。

         git是分布式的版本控制系统,在这里负责把远程版本库的源代码clone下来

    2. 安装repo
    命令:(是一个便于git管理的工具)

    $mkdir bin 

    //下载repo脚本到本地bin文件夹下 
    $curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo>~/bin/repo 

    //设置本地repo的可执行权限 
    $chmod a+x ~/bin/repo  

    //临时把repo添加到环境变量中,方便后面执行。 
    $export PATH=~/bin:$PATH

    说明:
          repo是一个基于git的版本库管理工具,可以简化android开发中使git的使用。在这里,使用repo和官方提供的android project列表自动批量下载android整个项目,免去了大量下载各个项目的手动工作量。

    3.初始化repo客户端(版本库)

    如果是想把Android当前主线上最新版本的所有的sourcecode拿下来,我们需要repo的帮助。
    先建立一个目录,
    进去以后用repo init命令即可,然后就可以用repo sync 抓去 android source code 

    命令:

    //创建目录android/android-source来存放下载的源码  
    $mkdir android/android-source -p  
    //进入目录  
    $cd android/android-source  
    
    
    //获取项目列表并且初始化目录  
    $repo init -u https://android.googlesource.com/platform/manifest 
    
    
        获取的manifest文件放在.repo目录中。命名manifest.xml这个文件的内容其实就是所有被git管理的仓库的列表可以用 -m 参数来选择获取 repository 中的某一个特定的 manifest 文件,不具体指定,那么表示为 将要获取 默认的 mainfest 文件 (default.xml)

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

    可以用 -b 参数 来 指定 某个manifest 的分支注意 .repo/manifests是个被git管理的仓库,这里放的是所有的manifest文件(*.xml),因为被git管

    理,固然有分支,-b可以切换到你想要的分支然后再下载相关的xml文件,当然具体下载那个xml还要看-m参数了,所以如果你仅仅指定-b而没有-m的话,就是下

    载-b指定分支下的default.xml文件,如果不指定-b参数,那么会默认使用master分支

    按照提示输入 用户名 和 邮箱
     初始化完成后会显示repo initialized in /home/http://www.cnblogs.com/xx,如下图:
     
      这样就说明本地的版本库已经初始化完毕,并且包含了当前最新的sourcecode。  
    注意:如果想拿 某个branch而不是主线上的代码,我们需要用 -b 参数制定branch名字,如:
    repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo-amlogic-mid
    另一种情况是,我们只需要某一个project的代码,比如kernel/common,就不需要repo了,直接用Git即可。
    git clone git://android.git.kernel.org/kernel/common.git
    这也需要不少的时间,因为它会把整个Linux Kernel的代码复制下来。
    如果需要某个branch的代码,用git checkout即可。比如我们刚刚拿了kernel/common.git的代码,那就先进入到common目录,然后用下面的命令:
    git checkout origin/android-goldfish-2.6.27 -b goldfish
    这样我们就在本地建立了一个名为goldfish的android-goldfish-2.6.27分支,代码则已经与android-goldgish-2.6.27同步。我们可以通过git branch来列出本地的所有分支。


    4.同步版本库命令:

    $repo sync

    这样 我们把整个android代码树做到同步到本地,

        解释:如果是第一次运行 repo sync , 则这个命令相当于 git clone ,会把 repository 中的所有内容都拷贝到本地。 如果不是第一次运行 repo sync , 则相当于 git remote update ;  git rebase origin/branch .  

    repo sync 会更新 .repo 下面的文件。 如果在merge 的过程中出现冲突, 这需要手动运行  git  rebase --continue

          说白了,就是从服务器上下载最新的代码。

          接下来就是漫长的等待,本人10M带宽,依然下载了几个小时。

    同样,我们可以用类似
    repo sync project1 project2 …
    这样的命令来同步某几个项目
    如果是同步Android中的单个项目,只要在项目目录下执行简单的git pull即可。


    repo manifest -r -o xxx.xml #获取 当前的源代码的manifest,并保存为 xxx.xml

    ==============

     5.小结

          源码下来就是一笔财富,坚持查看源代码,分析其中的底层实现和框架模式,都绝对是极佳的学习经历,一定大有益处。

     

  • 相关阅读:
    ETCD 添加节点报错 tocommit(2314438) is out of range [lastIndex(0)]. Was the raft log corrupted, truncated, or lost?
    如何删除docker镜像中已配置的volume
    kubeadm初始化集群
    kubeadm安装依赖镜像
    standard_init_linux.go:178: exec user process caused "no such file or directory"
    kubernetes支持local volume
    git http方式时保存密码
    分布式核心技术
    docker使用
    Python实用日期时间处理方法汇总
  • 原文地址:https://www.cnblogs.com/liulaolaiu/p/11745015.html
Copyright © 2011-2022 走看看