Repoの使い方確認&メモ
Androidの開発で利用されている複数リポジトリを管理するためのツールであるRepoの使い方について確認する。 ここではGitLabにリポジトリを作成して動作を確認した。 ~/.ssh配下の設定などは適切にしておく。
構成
複数のリポジトリを束ねて以下のようなディレクトリ構成を構成したい場合を考える
. ├── dir_a │ └── dir_c └── dir_b
github、gitlab、bitbucketにあるリポジトリにアクセスするイメージで、以下の4つのリポジトリを作成してみんなで作業したいとする。
- repo-test-manifest Repoのmanifest管理用
- repo-test-a dir_a配下のプロジェクトのリポジトリを想定
- repo-test-b dir_b配下のプロジェクトのリポジトリを想定
- repo-test-c dira/dir_c配下のプロジェクトのリポジトリを想定
manifestの作成
manifest管理用のリポジトリを例えば以下のような場所に作成する。
git@gitlab.com:[User or Group]/repo-test-manifest.git
望む構成になるようにmanifest(default.xml)を以下の通り作成する。
- remoteのnameにリモートリポジトリの名前を記述し、fetchに取得先サーバの情報を記載する。
- defaultのrevisionにmasterブランチを指定して、remoteは定義済みのoriginを指定する。
- projectのpathに当該リポジトリの配置ディレクトリを記載し、nameにリポジトリを記載する。ここでremoteなどを記述しない場合はdefaultが使用される。
<?xml version="1.0" encoding="UTF-8"?> <manifest> <remote name="origin" fetch="ssh://git@gitlab.com"/> <default revision="master" remote="origin" /> <project path="dir_a" name="[User or Group]/repo-test-a"/> <project path="dir_b" name="[User or Group]/repo-test-b"/> <project path="dir_b/dir_c" name="[User or Group]/repo-test-c"/> </manifest>
Repoの入手
インストール方法の詳細は公式を参照。 https://source.android.com/setup/build/downloading
$ mkdir ~/bin $ PATH=~/bin:$PATH $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $ chmod a+x ~/bin/repo
ソースコードの取得
repo syncの途中で秘密鍵のパスワードを聞かれると止まってしまうため予めssh-addしておく。パスフレーズなしの鍵でもよい。
ssh-add ~/.ssh/id_rsa
まずはマニフェストを指定してrepo initする。(manifestを取得してディレクトリをrepo用に初期化する)
$ mkdir ~/repo-test $ cd ~/repo-test $ repo init -u git@gitlab.com:[User or Group]/repo-test-manifest.git
そのあとにrepo syncを実行するとmanifestに記載されたリポジトリの内容を取得して、指定されたディレクトリに展開する。
$ repo sync
確認すると以下のように展開されているはず。
~/repo-test ├── dir_a │ ├── [files] │ └── dir_c │ └── [files] └── dir_b └── [files]