克隆Tizen源代码

1 介绍

本文档提供了有关如何克隆Tizen源代码,包括以下信息:

  • 通过SSH克隆
  • 通过HTTPS克隆

本文假定以下文档内容您已经阅读过,理解并遵循正确操作:

2 通过SSH克隆

本节介绍如何通过SSH克隆Tizen源代码,包括以下内容:

  • 通过SSH克隆指定工程
  • 通过SSH克隆所有工程

2.1 通过SSH克隆指定工程

本节介绍如何通过SSH克隆指定工程。

通过SSH克隆指定工程,请执行下列步骤:

  1. 通过检查Tizen工程列表或运行以下命令来确认软件包的名称:

    $ ssh review.tizen.org gerrit ls-projects
    
  2. 通过执行以下命令克隆所需的程序包:

    $ git clone [-b <Branch>] ssh://<Username>@review.tizen.org:29418/<Gerrit_Project> [<Local_Project>]
    

    一个示例如下:

    $ git clone ssh://<Username>@review.tizen.org:29418/pkgs/a/avsystem
    

2.2 通过SSH克隆所有工程

本节介绍如何通过SSH克隆所有工程,包括以下内容:

  • 通过SSH克隆所有工程的最新源代码

  • 通过SSH克隆所有工程的snapshot源码

    意:以下两种方法可以保证同步过程的顺利进行。

    • 方法1

      确保SSH的配置文件是根据建立开发环境正确配置的,否则,同步不能成功执行,错误消息如下所示:

      ...
      nc: connection failed, SOCKS error 1
      ssh_exchange_identification: Connection closed by remote host
      nc: connection failed, SOCKS error 1
      ...
      fatal: Could not read from remote repository.
       
      Please make sure you have the correct access rights
      and the repository exists.
      ssh_exchange_identification: Connection closed by remote host
      fatal: Could not read from remote repository.
       
      ...
      
    • 方法2

      对于那些修改SSH的配置文件遇到麻烦的人,另一种选择是在<Tizen_project>/.repo/manifests/_remote.xml作出以下修改:

      修改

      fetch="ssh://review.tizen.org/"
      

      成为

      fetch="ssh://review.tizen.org:29418/"
      

    这两种方法之间,我们建议方法1,就是必须严格遵守设置开发环境的步骤,以保证其可用。

为了准备克隆,请执行下列步骤:

  1. 创建~/bin子目录,把它包含在PATH环境变量中,然后通过执行以下命令切换到该目录下面:

    $ mkdir ~/bin/
    $ PATH=~/bin:$PATH
    
  2. 通过执行下面的命令下载repo脚本:

    $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
    

    意:要找到获得repo工具过程中所遇到的问题的解决方案,请参阅提示和警告。

  3. 要改变repo的文件属性,使其可以被执行,则要执行以下命令:

    $ sudo chmod a+x ~/bin/repo
    
  4. 为Tizen创建一个新目录,通过执行以下命令切换到该目录:

    $ mkdir ~/<Tizen_Project>
    $ cd ~/<Tizen_Project>
    

2.2.1 通过SSH克隆全部工程的最新源代码

要SSH克隆所有工程的最新源代码,请执行下列步骤:

  1. 根据实际情况,通过执行以下命令中的一个来初始化仓库:

    • Tizen 2.2

      $ repo init -u ssh://<Username>@review.tizen.org:29418/scm/manifest -b tizen_2.2
      
    • Tizen 3.0

      • 通用

        $ repo init -u ssh://<Username>@review.tizen.org:29418/scm/manifest -b tizen -m common.xml
        
      • IVI

        $ repo init -u ssh://<Username>@review.tizen.org:29418/scm/manifest -b tizen -m ivi.xml
        
      • 移动

        $ repo init -u ssh://<Username>@review.tizen.org:29418/scm/manifest -b tizen -m mobile.xml
        
  2. 通过执行以下命令同步仓库:

    $ repo sync
    

2.2.2 通过SSH克隆所有工程的snapshot源代码

本节中以Tizen IVI为例子。

通过SSH克隆所有工程的snapshot源代码,请执行下列步骤:

  1. 通过执行以下命令初始化原仓库:

    $ repo init -u ssh://<Username>@review.tizen.org:29418/scm/manifest -b tizen -m ivi.xml
    

    成功初始化后, ~/<Tizen_Project>/.repo/manifests/ 目录是可用的。

  2. 用snapshot manifest替换最新的manifest,并根据实际情况,通过执行下面两组命令中的一组,进行酌情修改:

    • Tizen Common

      $ wget <Snapshot_Manifest_URL> -O .repo/manifests/common/projects.xml
      $ sed -i '3,4d' .repo/manifests/common/projects.xml
      
    • Tizen IVI

      $ wget <Snapshot_Manifest_URL> -O .repo/manifests/ivi/projects.xml
      $ sed -i '3,4d' .repo/manifests/ivi/projects.xml
      

    Tizen IVI一个示例如下所示:

    $ wget http://download.tizen.org/snapshots/tizen/ivi/ivi/tizen_20140703.2/builddata/manifest/tizen_20140703.2_atom.xml -O .repo/manifests/ivi/projects.xml
    $ sed -i '3,4d' .repo/manifests/ivi/projects.xml
    
  3. 通过执行以下命令同步仓库:

    $ repo sync
    

3 通过HTTPS克隆

本节介绍如何通过HTTPS克隆Tizen源代码,包括以下内容:

  • 通过HTTPS克隆指定工程
  • 通过HTTPS克隆所有工程

3.1 通过HTTPS克隆指定工程

本节介绍如何通过HTTPS克隆指定工程。

通过HTTPS克隆指定项目,请执行下列步骤:

  1. 通过检查Tizen项目列表确认包名。

  2. 在Gerrit设置页面生成HTTPS密码:HTTPS的密码。

  3. 通过执行以下命令克隆所需的程序包:

    $ git clone [-b <Branch>] https://<Username>:<HTTPS_Password>@review.tizen.org/gerrit/p/<Gerrit_Project> [<Local_Project>]
    

    一个示例如下所示:

    $ git clone https://JohnDoe:ABCDEFG@review.tizen.org/gerrit/p/a/avsystem
    

3.2 通过HTTPS克隆所有工程

本节介绍如何通过HTTPS克隆所有工程源代码,包括以下:

  • 通过HTTPS克隆所有工程的最新源代码

  • 通过HTTPS克隆所有工程的snapshot源代码

    意:当使用HTTPS协议的时候,在成功地初始化仓库之后,.repo/manifests/_remote.xml中的fetch属性必须要按照以下方法进行配置:

    fetch="https://<Username>:<HTTPS_Password>@review.tizen.org/gerrit/p"
    

为了准备克隆,请执行下列步骤:

  1. 创建~/bin子目录,把它包含在PATH环境变量中,然后通过执行以下命令切换到该目录:

    $ mkdir ~/bin/
    $ PATH=~/bin:$PATH
    
  2. 通过执行下面的命令下载repo脚本:

    $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
    
  3. 改变repo的属性,通过执行下面的命令,使其可被执行:

    $ sudo chmod a+x ~/bin/repo
    
  4. 为Tizen创建一个新目录,并通过执行以下命令切换到该目录:

    $ mkdir ~/<Tizen_Project>
    $ cd ~/<Tizen_Project>
    
  5. 在Gerrit设置页面生成HTTPS密码:HTTPS的密码。

3.2.1 通过HTTPS克隆所有工程的最新源代码

要通过HTTPS克隆所有工程的最新源代码,请执行下列步骤:

  1. 按照实际情况,通过执行下列命令之一,以初始化仓库:

    • Tizen 2.2

      $ repo init -u https://<Username>:<HTTPS_Password>@review.tizen.org/gerrit/p/scm/manifest -b tizen_2.2
      
    • Tizen 3.0

      • 通用

        $ repo init -u https://<Username>:<HTTPS_Password>@review.tizen.org/gerrit/p/scm/manifest -b tizen -m common.xml
        
      • IVI

        $ repo init -u https://<Username>:<HTTPS_Password>@review.tizen.org/gerrit/p/scm/manifest -b tizen -m ivi.xml
        
      • 移动

        $ repo init -u https://<Username>:<HTTPS_Password>@review.tizen.org/gerrit/p/scm/manifest -b tizen -m mobile.xml
        
  2. 在repo初始化完成后,按照以下步骤配置./repo/manifests/_remote.xml中的"fetch"属性:

fetch="https://<Username>:<HTTPS_Password>@review.tizen.org/gerrit/p"
  1. 通过执行以下命令同步仓库:

    $ repo sync
    

3.2.2 通过HTTPS克隆所有工程的snapshot源代码

本节中以Tizen IVI为例子。

要通过HTTPS克隆所有工程snapshot源代码,请执行下列步骤:

  1. 通过执行以下命令初始化原仓库:

    $ repo init -u https://<Username>:<HTTPS_Password>@review.tizen.org/gerrit/p/scm/manifest -b tizen -m ivi.xml
    

    成功初始化后,~/<Tizen_Project>/.repo/manifests/目录是可用的。

  2. 在repo初始化完成后,按照下面的步骤,配置./repo/manifests/_remote.xml中的“fetch"属性:

fetch="https://<Username>:<HTTPS_Password>@review.tizen.org/gerrit/p"
  1. 用snapshot manifest替换最新的manifest,并根据实际情况,通过执行下面两组命令之一,做出酌情的修改:

    • Tizen Common

      $ wget <Snapshot_Manifest_URL> -O .repo/manifests/common/projects.xml
      $ sed -i '3,4d' .repo/manifests/common/projects.xml
      
    • Tizen IVI

      $ wget <Snapshot_Manifest_URL> -O .repo/manifests/ivi/projects.xml
      $ sed -i '3,4d' .repo/manifests/ivi/projects.xml
      

    Tizen IVI一个示例如下所示:

    $ wget http://download.tizen.org/snapshots/tizen/ivi/ivi/tizen_20140703.2/builddata/manifest/tizen_20140703.2_atom.xml -O .repo/manifests/ivi/projects.xml
    $ sed -i '3,4d' .repo/manifests/ivi/projects.xml
    
  2. 通过执行以下命令进行存储库同步:

    $ repo sync