2012-04-12 45 views
8

"repo"ツールを使用してAndroidソースコードを複製できます。しかし、私がしたいことは、ソースコードを11GBのフットプリントを持つよりも最小限の方法で複製することです。それは、すべてのAndroidデバイスと以前のすべてのリリースに関連するものをダウンロードするようです。"repo"を使って最小限のAndroidソースをクローンする方法は?

repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1 

しかし、何が起こって終わることがちょうど特定のスナップショット(理解できる)で、私はまだすべてが巻き込まということです:私は、私はこのような特定のブランチをチェックアウトすることによって、これを減らすことができると思ってみました。しかし、クローニングされる量を制限する方法はありますか?

答えて

4

アンドロイドソースツリーは、すべてリポジトリによって管理される多くの個別のgitリポジトリで構成されています。特定のgitリポジトリでダウンロードされるデータの量を実際に減らすことはできません。

しかし、repo sync <project>を使用して、利用可能なgit reposのサブセットのみをダウンロードできます。私。フレームワーク/ベースパッケージのみが必要な場合は、repo initの後にrepo sync frameworks/baseを実行できるはずです。

実際にソースをビルドしたい場合は、おそらく完全なものが必要です。

不要なデバイスリポジトリを削除することで、ギグか2つを保存することができます。これを行うには、<ソース> /.repo/manifest.xmlを編集し、不要なデバイスのリポジトリを削除します。

+1

これはエラー '$ repo init -u https:// android.googlesource.com/platform/manifest'を返し、' $ repo sync platform/tools/base'を返します。 'error:project groupプロジェクトプラットフォーム/ tools/base'に対して有効にする必要があります。何か案は? – nmr

3

できることはいくつかあります。まず、-c引数を指定した "repo sync"は、チェックアウトされたサンドボックスを "現在の"ブランチに限定します。レポ・シンクは、他の支店の資料をダウンロードしません。

.repo/manifests/default.xmlマニフェストを編集することもできます。私がやることは、 "default.bak"のようなバックアップを作成し、必要がないことを知っているdefault.xmlファイルから行を取り除くことです。私はMacintosh上で構築しているわけではないので、私は "darwin"ツールを必要としないことを知っているので、 "darwin"を含むすべての行を削除します。その後、 "repo sync"はダーウィンプロジェクトをダウンロードしたり、サンドボックスにソースコードをインストールしたりしません。

すでにサンドボックスを同期していて、サイズを調整したい場合は、上記のようにプロジェクトを取り除き、 "repo sync -c -l"を実行すると、ちょうど除去された。 -lフラグは同期のローカル部分のみを行います。つまり、ローカルのgitプロジェクトをソースツリーと同期させるだけです。ネットワークは使用されません。通常同期の残りの半分については "-n"フラグを参照してください。これはネットワークの同期を行い、ローカルのgitプロジェクトを上流のリポジトリに更新します。また、(部屋の多くを取る)、不要なプロジェクト私はこれを使用するためのgitのバッキングオブジェクトストアを削除するには

for project in `diff ~/android/.repo/manifests/default.xml ~/android/.repo/manifests/default.bak | awk '{print $3}' | grep path | cut -f2 -d\"`; do rm -rf ~/android/.repo/projects/$project.git ; rm -rf ~/android/.repo/project-objects/$project.git ; done 

これは、バックアップのマニフェストにあるすべてのプロジェクトを見つけたが、持っていますアクティブなマニフェストから削除され、gitプロジェクトとそれらのバッキングデータがすべて削除されます。これは多くのスペースを回復します。

あまりにも多くを削除した場合、バックアップマニフェストからプロジェクトラインを復元してアクティブマニフェストに追加し直してください。次に、レポ同期でgitプロジェクトとサンドボックスが再びまっすぐになります。プロジェクトディレクトリで "mma -B -n"を実行することで、ビルドをテストして、多くを削除したかどうかを確認することができます。これはターゲットに完全な依存関係を構築しようとしますが、ターゲットを必要としなくてもすべてのターゲットを強制的にビルドし、ドライランとして実行します。ビルドに失敗した場合は、プロジェクトに必要なものを削除しました。

ローカルミラーサンドボックスを設定し、ミラーから小さな作業参照サンドボックスを作成することもできます。作業用サンドボックスにはgitオブジェクトストアは含まれていませんが、ミラー内の中央のものを参照してください。ミラーを設定するには "repo init -u ... --mirror"、ミラーを参照するには "repo init --reference =〜/ android-mirror -u ..."を使用します。後者の-uフラグは、ミラー参照がローカル・キャッシュとして使用されている間に、実際の上流のリポジトリーを権限として使用できるようにします。ローカルミラーはまた、AOSPプロジェクトが実施するダウンロードクォータを避け、より速く同期することができます。

関連する問題