repo/gitの使い方

repo/git*1の使い方。需要があるかもしれないので、個人的チートシートをメモ。まずはAndroidのソースをゲット。

$ mkdir cupcake && cd cupcake
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake
$ repo sync

ソースに手を入れる前に、オレオレブランチ。

$ repo start mycake

ソースを変更したら、addしてcommit。変更はローカルリポジトリのみに記録される。commit時のコメント入力をするエディタはデフォルトvi*2

$ vi hoge/fuga/foo.java 
$ git add hoge/fuga/foo.java 
$ git commit 

マスターとの差異を確認したければ、git diff。repo forallするとどのディレクトリにいても全部列挙。

$ cd hoge/fuga
$ git diff m/cupcake mycake
$ repo forall -c git diff m/cupcake mycake

ページャは環境変数GIT_PAGERかPAGERから拾ってる*3。設定されていなければlessを使う。なので、(End)と表示されたら、[q]キーを叩く。CTRL-Cすると端末制御コードがおかしくなってしまうので注意。うざかったら、GIT_PAGERをcatにしちゃう手もある。

$ export GIT_PAGER=cat
$ repo forall -c git diff m/cupcake mycake | less
$ repo forall -c git diff m/cupcake mycake > /tmp/mycake.diff

*1:http://source.android.com/download/using-repo

*2:cupcake/.repo/repo/editor.py

*3:cupcake/.repo/repo/pager.py