明日の自分のために

主に自分用のメモなど

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]