まえおき
複数の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だと
- マニフェストファイルをどこかのGitリポジトリに置く
-
repo init -u マニフェストのURL
で.repo/
が作られて -
repo sync -j4
でソース同期
これがjiriだと、
- 自前で
.jiri_manifest
ファイルを用意する(jiri importとかでインポートすることも可能) -
jiri init
で.jiri_root/
が作られて -
jiri update
でソース同期
いざ味見
importとか、hookとかかなり多機能っぽいんだけど、とりあえずソースをまとめて取ってきたいという用途だけで使う。
ソースを取ってきたい場所に移動する。
$ cd path/to/workspace/
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
をローカルに用意するだけで始められるので、ローカルのリポジトリ管理でも結構便利な感じがします。
まずは皆さん味見してみましょう。