Android: ソースツリーのURLが変更された

前回のブログ記事で今年(2011年)8月にダウンロードしたソースからシステムをBuildしましたが、今回、久々に最新のソースを利用しようとしたところ、ソースツリーのURLが変更になっていました。(ソースコードのリポジトリがkernel.orgからgooglesource.comに移されたようです)

 ・新(11/5/2011): https://android.googlesource.com/
 ・旧(8/13/2011): git://android.git.kernel.org/

またrepoコマンドのバージョンも上がっていました。
 ・新(11/5/2011):

$ repo --version
repo version v1.7.7.5
       (from https://android.googlesource.com/tools/repo)
git version 1.7.6
Python 2.6.6 (r266:84292, May 20 2011, 16:42:25) 
[GCC 4.4.5 20110214 (Red Hat 4.4.5-6)]

 ・旧(8/13/2011)

$ repo --version
repo version v1.7.5
       (from git://android.git.kernel.org/tools/repo.git)
git version 1.7.6
Python 2.6.6 (r266:84292, May 20 2011, 16:42:25) 
[GCC 4.4.5 20110214 (Red Hat 4.4.5-6)]

ソースコードをダウンロードする場合は次のようにします。(以下の/usr/local/binは例です。)

# curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > /usr/local/bin/repo
# chmod 755 /usr/local/bin/repo
(作業ディレクトリに移動する)
$ repo init -u https://android.googlesource.com/platform/manifest
 (ここで名前とメールアドレスが要求されます。下記、[参考]の2)を参照。)
$ repo sync

[参考]
1)
最初に"repo init"コマンドを実行すると、以下のようにホームディレクトリの下にGPGのキーリング(Key Ring)が作成され、repoコマンドの中で変数MAINTAINER_KEYSに設定されている"Repo Maintainer"の公開鍵が格納されます。

$ ls -R ~/.repoconfig
/home/user01/.repoconfig:
gnupg  keyring-version

/home/user01/.repoconfig/gnupg:
pubring.gpg  pubring.gpg~  secring.gpg  trustdb.gpg
$ export GNUPGHOME=~/.repoconfig/gnupg
$ gpg --list-keys
/home/user01/.repoconfig/gnupg/pubring.gpg
------------------------------------------
pub   1024D/920F5C65 2008-10-16
uid                  Repo Maintainer 
sub   4096g/D0D7991F 2008-10-16
$ gpg -a --export "Repo Maintainer"
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.14 (GNU/Linux)

mQGiBEj3ugERBACrLJh/ZPyVSKeClMuznFIrsQ+hpNnmJGw1a9GXKYKk8qHPhAZf
WKtrBqAVMNRLhL85oSlekRz98u41H5si5zcuv+IXJDF5MJYcB8f22wAy15lUqPWi
VCkk1l8qqLiuW0fo+ZkPY5qOgrvc0HW1SmdH649uNwqCbcKb6CxaTxzhOwCgj3AP
....(途中省略)....
TACbBS+Up3RpfYVfd63c1cDdlru13pQAn3NQy/SN858MkxN+zym86UBgOad2
=CMiZ
-----END PGP PUBLIC KEY BLOCK-----

2)
ソースツリーにアクセスするには本名とメールアドレスの入力が必要なようです。
最初に"repo init"コマンドを実行すると、"*** Please tell me who you are."というメッセージが表示されて、git config コマンドを実行するよう促されるので、その指示に従い以下のコマンドを実行します。(以下の名前とメールアドレスは例です)
--globalオプションを付けると、どの作業ディレクトリでもこの名前とメールアドレスが使われます。

$ git config --global user.email "user01@example.com"
$ git config --global user.name "FirstName LastName"
(ホームディレクトリの下の.gotconfgiファイルが生成され、この情報が格納されます)
$ cat ~/.gitconfig 
[user]
	email = user01@example.com
	name = FirstName LastName
[color]
	ui = auto

3)
"repo init"コマンドを実行すると、実行した作業ディレクトリの下に.repoディレクトリが作成され、その下にブランチの情報やHelp付きのrepoのサブコマンドなどが置かれます。

$ ls .repo/manifests.git/refs/remotes/origin
android-1.6_r1    android-2.1_r1      android-2.2_r1.1    android-2.3.5_r1
android-1.6_r1.1  android-2.1_r2      android-2.2_r1.2    android-2.3.6_r0.9
android-1.6_r1.2  android-2.1_r2.1p   android-2.2_r1.3    android-2.3.6_r1
android-1.6_r1.3  android-2.1_r2.1p2  android-2.3.1_r1    android-2.3.7_r1
android-1.6_r1.4  android-2.1_r2.1s   android-2.3.2_r1    android-2.3_r1
android-1.6_r1.5  android-2.2.1_r1    android-2.3.3_r1    froyo
android-1.6_r2    android-2.2.1_r2    android-2.3.3_r1.1  gingerbread
android-2.0.1_r1  android-2.2.2_r1    android-2.3.4_r0.9  gingerbread-release
android-2.0_r1    android-2.2_r1      android-2.3.4_r1    master
$ ls .repo/repo/subcmds
__init__.py      diff.py       init.py       selfupdate.py   sync.py
__init__.pyc     diff.pyc      init.pyc      selfupdate.pyc  sync.pyc
abandon.py       download.py   list.py       smartsync.py    upload.py
abandon.pyc      download.pyc  list.pyc      smartsync.pyc   upload.pyc
branches.py      forall.py     manifest.py   stage.py        version.py
branches.pyc     forall.pyc    manifest.pyc  stage.pyc       version.pyc
checkout.py      grep.py       prune.py      start.py
checkout.pyc     grep.pyc      prune.pyc     start.pyc
cherry_pick.py   help.py       rebase.py     status.py
cherry_pick.pyc  help.pyc      rebase.pyc    status.pyc

4)
repoコマンドのHelpの実行例

$ repo help --all
usage: repo COMMAND [ARGS]
The complete list of recognized repo commands are:
  abandon      Permanently abandon a development branch
  branch       View current topic branches
  branches     View current topic branches
  checkout     Checkout a branch for development
  cherry-pick  Cherry-pick a change.
  diff         Show changes between commit and working tree
  download     Download and checkout a change
  forall       Run a shell command in each project
  grep         Print lines matching a pattern
  help         Display detailed help on a command
  init         Initialize repo in the current directory
  list         List projects and their associated directories
  manifest     Manifest inspection utility
  prune        Prune (delete) already merged topics
  rebase       Rebase local branches on upstream branch
  selfupdate   Update repo to the latest version
  smartsync    Update working tree to the latest known good revision
  stage        Stage file(s) for commit
  start        Start a new branch for development
  status       Show the working tree status
  sync         Update working tree to the latest revision
  upload       Upload changes for code review
  version      Display the version of repo

See 'repo help ' for more information on a specific command.

$ repo help init
Summary
-------
Initialize repo in the current directory
Usage: repo init [options]
Options:
....(以下、省略)....

[参考URL]
・Downloading the Source Tree
http://source.android.com/source/downloading.html

・Version Control with Repo and Git
http://source.android.com/source/version-control.html

Repo is a repository management tool that we built on top of Git. Repo unifies the many Git repositories when necessary, does the uploads to our revision control system, and automates parts of the Android development workflow. Repo is not meant to replace Git, only to make it easier to work with Git in the context of Android. The repo command is an executable Python script that you can put anywhere in your path. In working with the Android source files, you will use Repo for across-network operations. For example, with a single Repo command you can download files from multiple repositories into your local working directory.