techium

このブログは何かに追われないと頑張れない人たちが週一更新をノルマに技術情報を発信するブログです。もし何か調査して欲しい内容がありましたら、@kobashinG or @muchiki0226 までいただけますと気が向いたら調査するかもしれません。

gitでremoteレポジトリにあるファイルを探したい

Motivation

AOSPのtools/base辺りをビルドしようと試行錯誤していると、なんかこのファイル参照してるけど、いったいどのブランチにいるの?
みたいなことによくなるのでスクリプト書いてみたよみたいな。

探す対象

tools/baseをビルドしようとして、以下からソースを落としてくるのが始まり。

platform/tools/base - Git at Google

落としてきたまま、./gradlew taskとか叩いてもエラーを貰うので、依存してそうなディレクトリ(prebuilt/toolsとか)も拾ってくる。 問題が起きたのは、prebuilt/toolsのantlr/3.5.2とかpsi-subset-143.1821.5.jarに依存してるんだけど、どこのブランチに居るのかわかんないってところ。

リモートブランチのファイルを一覧で出すコマンド

git ls-tree -r <branch>でブランチに含まれているファイルを一覧で出力することができる。
対象のbranchをリモートブランチの形式で書けばリモートのブランチのファイルを出力できる。

$ git ls-tree -r aosp/tools_r22.6
100644 blob 496ee2ca6a2f08396a4076fe43dedf3dc0da8b6d    .gitignore
100644 blob 6238bd82a47fd3dc4e96c7f81a554baa328dc2c4    Android.mk
100644 blob d5c0642b3883991070180a485ee9369cae90aba3    common/ant/Android.mk
100644 blob f820d4bd3a6072ed03f22499937d1e0c62f806ea    common/ant/LICENSE
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391    common/ant/MODULE_LICENSE_APACHE2
100644 blob 1d53242cda027069a4fe2d0ad89b88db4d4185df    common/ant/PREBUILT
100644 blob 0a56a58f9627f9ee90504a7d62fd355af1861329    common/ant/ant.jar
100644 blob 9f247dd7b06327dae98d5ce4ff6fffac0573ae6d    common/asm-tools/Android.mk
100644 blob 9496b1785bbb18a09c4fdb59877b99e1ce233de2    common/asm-tools/LICENSE.txt
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391    common/asm-tools/MODULE_LICENSE_BSD_LIKE
100644 blob e8b605fddfc655132679b3aefafe18f98946b145    common/asm-tools/PREBUILT
100644 blob 27bd6c0d3e60cd56fe942333aa03ac5b4eea4d42    common/asm-tools/README
100644 blob 349f0d42bb423a2a90f4186cfbb4b3373c3d8a2d    common/asm-tools/asm-3.3.1.jar
100644 blob 6d63075eb7331f7120ef25603a2ade856d12f715    common/asm-tools/asm-4.0.jar
100644 blob 48bb9b8fb6a5d759b2e7474a15a4d3a2cef67ff8    common/asm-tools/asm-analysis-4.0.jar
100644 blob 8d564b1e029e7b4f5c984c3fa67293ded9962e5b    common/asm-tools/asm-commons-4.0.jar
100644 blob 9562c999eda32d91eeb32e88d1d2cfb9cb2629fb    common/asm-tools/asm-debug-all-4.0.jar
100644 blob aa99d3a3cb246c0a2e64e891d83e7c98543d1f37    common/asm-tools/asm-tree-4.0.jar
100644 blob 0e1059583543a10cde82abfcfe3fbde37347c8a7    common/asm-tools/asm-util-4.0.jar
...

あとはfor文に詰めたscript作ったらOK

まんまの手抜きだけれど、こんな感じで期待通りに確認できる。

さて、build通してgradle-coreのデバッグを進めるぞっと。