Fuchsiaで使われているリポジトリ管理ツールJiriを少しだけ触ってみる

まえおき

複数のGitリポジトリをまとめて管理するツールとして、Androidでは repo が使われていたけど、Fuchsiaでは Jiriという別のものが使われているらしい。

2018年4月現時点では「もしかしてjira?」って言われるくらいマイナーなツールなんだけども、ちょっとだけ味見してみよう。
(※ あえて「味見」って書いてるのは、この記事ではソースのビルドとかGerrit連携とかは想定してなくて、ただ単にgitリポジトリをまとめて取得することだけを試してみよう!という意図で書いていることをあらかじめご承知おきください...)

インストール

公式のDocには myrootみたいなのを用意しろって書いてるんだけど、とりあえず味見程度に触りたいだけなら

curl -s https://raw.githubusercontent.com/fuchsia-mirror/jiri/master/scripts/bootstrap_jiri | bash -s /usr/local/jiri
ln -s /usr/local/jiri/.jiri_root/bin/jiri /usr/local/bin/jiri

rootで↑を実行すれば jiri コマンドが使えるようになる。

repoユーザのためのjiriの基本手順

repoだと

  1. マニフェストファイルをどこかのGitリポジトリに置く
  2. repo init -u マニフェストのURL.repo/ が作られて
  3. repo sync -j4 でソース同期

これがjiriだと、

  1. 自前で .jiri_manifest ファイルを用意する(jiri importとかでインポートすることも可能)
  2. jiri init.jiri_root/ が作られて
  3. jiri update でソース同期

いざ味見

importとか、hookとかかなり多機能っぽいんだけど、とりあえずソースをまとめて取ってきたいという用途だけで使う。

ソースを取ってきたい場所に移動する。

$ cd path/to/workspace/

manifestを書く

.jiri_manifest
<manifest>
  <projects>
    <project name="sdk"
      remote="https://github.com/dart-lang/sdk"
      path="dart-sdk" />
    <project name="flutter"
      remote="https://github.com/flutter/flutter"
      path="flutter" />
    <project name="flutter-engine"
      remote="https://github.com/flutter/engine"
      path="flutter-engine" />
    <project name="flutter-plugins"
      remote="https://github.com/flutter/plugins"
      path="flutter-plugins" />
  </projects>
</manifest>

https://fuchsia.googlesource.com/topaz/+/master/manifest/minimal とか色々参考にしつつも、
ソースを取ってくるだけなら、とりあえずこんな感じで書いておけば良さそう。

jiri init, jiri update

$ jiri init
$ jiri update
WARN: Please opt in or out of analytics collection. You will receive this warning until an option is selected.
To check what data we collect run 'jiri init -show-analytics-data'
To opt-in run 'jiri init -analytics-opt=true "/home/ubuntu/workspace"'
To opt-out run 'jiri init -analytics-opt=false "/home/ubuntu/workspace"'

Updating all projects
PROGRESS: Creating project "flutter-engine"
PROGRESS: Creating project "flutter"
PROGRESS: Creating project "sdk"

しばらく待っていると、

$ ls
dart-sdk/  flutter/  flutter-engine/  flutter-plugins/

こんな感じでダウンロード完了。
実にシンプルだ。

まとめ

repoと違って、 Jiri.jiri_manifest をローカルに用意するだけで始められるので、ローカルのリポジトリ管理でも結構便利な感じがします。
まずは皆さん味見してみましょう。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.