web-dev-qa-db-ja.com

リポジトリ初期化とリポジトリ同期は実際に何をしますか?

この質問はAndroid Enthusiastsに投稿しましたが、質問するのは間違っていると考えたので、そこから削除し、ここでもう一度質問します。


これはまったくの質問です。もしそうなら私を許しますが、基礎となる概念を明確に理解したいだけです。レポのヘルプとGoogleのレポコマンドリファレンスページを読んでも、あまり目を光らせません。 Googleのリファレンスページから少し理解しましたが、まだいくつかの説明が必要です。

Androidソースをダウンロードする方法の指示に従って、Ubuntuシェルで次の2つのコマンドを実行しました。環境のすべての前提条件を考慮しました。)

~/Android4.2.2$ repo init -u https://Android.googlesource.com/platform/manifest -b Android-4.2.2_r1.2
~/Android4.2.2$ repo sync -j4

リポジトリのダウンロードが完了するのを半日待った後、Android4.2.2ディレクトリに19Gのダウンロードされた素材ができました。では、まさに何が起きたのでしょうか?また、約8Gのソースファイルしか期待できないとGoogleが言ったのに、なぜ19Gに達したのでしょうか?

20
Poly Bug

repoは、python gitのラッパースクリプトです。そのGoogle Source page は、

repo-複数のGitリポジトリツール

  1. repo initコマンドは、現在のディレクトリのリポジトリを初期化します。つまり、最新のリポジトリソースとgitリポジトリのディレクトリ構造を説明するmanifest.xmlファイルをダウンロードし、これらすべてを現在のディレクトリの.repoサブディレクトリに保存します。あなたのケースでは、チェックアウトするブランチを選択するために使用されるオプションの-b引数を使用しました。デフォルトでは(つまり、-b引数が使用されていない場合)、masterブランチが使用されます。

  2. repo syncは、作業ツリーを最新のリビジョンに更新します。つまり、ローカルプロジェクトディレクトリをマニフェストファイルで指定されたリモートリポジトリと同期します。ローカルプロジェクトがまだ存在しない場合、リモートリポジトリから新しいローカルディレクトリのクローンを作成し、マニフェストで指定されているように追跡ブランチを設定します。ローカルプロジェクトが既に存在する場合、リモートブランチを更新し、新しいリモート変更の上に新しいローカル変更をリベースします。 -j引数は、実行する並列ジョブの数を設定するために使用されます。デフォルト値はマニフェストで定義できます。また、ケースのようにコマンドラインでオーバーライドすることもできます。

googleが約8Gのソースファイルしか期待できないと言ったのに、なぜ19Gに達したのですか?

これは、ソースファイルのほかに、Androidの時間の始まりからのすべての履歴を取得するからです:)

お役に立てれば。

32
ozbek