repoの解析と構築法
唐突にGerritの概要について発表をしてきた。
Gerrit(Got itの音を取ってるらしい)について今わかってるところまで発表してきました。
やっぱり、repoのドキュメントってないんだね。
あるのかもしれないけど、みんな見つけられてない。
と、いうわけで、@zaki50 さんもわざわざ見に来てくださったことだし、
repoの構築を最優先でやってみることになった。
まずは、source.android.kernel.orgを見てみる。
gitwebから見ると各レポジトリがフラットな構成に見えるが、
きっとディレクトリ構造になってるはずだ。
後、実はmanifest.gitですらレポジトリだったりする。
参考:
http://android.git.kernel.org/?p=platform/manifest.git;a=tree
http://android.git.kernel.org/platform/manifest.git/
また、repoのmanifest.xmlを眺めてみる。
スキーマがない。。解析しなければならないっぽい。
gitで落としてきたときと、syncし終わった後は若干形式が変わっている。
repo init 後
・ ・ ・
repo init && repo sync
・ ・ ・
変更される箇所は、project ノードのrevision 属性だ。
コレは落としてきたgitリポジトリのmasterのHEADなのかな?と思ったけど違うようだ。(保留)
またremoteノードは、全てのgitリポジトリに適用される、以下のコマンド相当だと思われる。
git remote add korg git://android.git.kernel.
これは合ってるようだ。
mydroid/sdk/.git/config
[remote "korg"] url = git://android.git.kernel.org/platform/sdk.git review = review.source.android.com projectname = platform/sdk fetch = +refs/heads/*:refs/remotes/korg/*
また、defaultノードの属性も反映されていることがわかる。
そして、projectsノードのname属性も反映されている。
これは、素直にrepo init直後のmanifest.xmlを配置してやれば何とかなりそうだ。
nameが、レポジトリの構成で、pathがsync後のworkspaceの状況っぽい
というわけで以下のようなレポジトリ配置を取ってみた。
repos/ - manifest.git - test1.git - test2.git - test/ - test3.git - test4.git
各レポジトリにREADMEでも突っ込んで、pushまでやっておく必要がある。
そして、本命のmanifest.gitですが、直下にdefault.xmlを配置してやる。
- default.xml
中身はこんな感じ
これで、repo init -u miyabi@192.168.0.30:repos/manifests.git ;repo syncをやってみると、repoが動作しました。
結果はこんな感じ
予想通り、nameはworkspaceのpath相当、nameは、repositoryの配置だったみたい。(多分)
.repo/ - manifests/default.xml - manifest.xml (勝手にコピーされてる) - manifests.git (git clone --bareされてる) - project.list (勝手に生成されてる) - projects (各リポジトリのbare repositoryが配置されてる) a/ - test1 - test2 test/ - test3 - test4
でもsyncの後にrevision追加されてなかった。。。
ブランチ切らなきゃダメなのかも?
でもrevision属性とreview属性の詳細はまだ謎。
copyfileノードは見たままだろう。
隠しノード的なものがあるのかもしれないけど、後はソースを読むしかないっぽい。
後は、後日
repoコマンドも合わせて調べていってもいいかもしれない。
CynagonModはgithubでrepoのリポジトリを提供してるし、色々使い方はありそうだ。
と、いうわけで @zaki50 さんに読んでもらって、添削してもらおう