web-dev-qa-db-fra.com

Que font réellement le repo init et le repo sync?

J'ai posté cette question à Android Amateurs mais j'ai pensé que ce n'était pas le bon endroit à poser, alors je l'ai supprimée de là et je la pose "encore" ici.


C'est une telle question noob, et pardonnez-moi si c'est le cas, mais je veux juste comprendre clairement les concepts sous-jacents. La lecture de l'aide repo et de la page de référence de la commande repo de Google n'éclaire pas vraiment grand-chose. J'ai compris quelques extraits de la page de référence de Google, mais j'ai encore besoin de clarifications.

En suivant les instructions sur la façon de télécharger Android, j'ai exécuté ces deux commandes sur un shell Ubuntu: (j'ai pris soin de toutes les conditions préalables pour l'environnement.)

~/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

Après avoir attendu une demi-journée pour que le dépôt se termine, j'ai fini avec 19G de matériel téléchargé dans le répertoire Android4.2.2. Alors, que s'est-il passé exactement, et pourquoi a-t-il atteint 19G lorsque Google a dit que je ne devais attendre que 8G de fichiers source?

20
Poly Bug

repo est un script d'encapsulation python pour git, sa source Google page le définit comme

repo - L'outil de référentiel Multiple Git

  1. La commande repo init Initialise le dépôt dans le répertoire courant. C'est-à-dire qu'il télécharge la dernière source de dépôt et un fichier manifest.xml Qui décrit la structure de répertoires des référentiels git, et les stocke tous dans le sous-répertoire .repo Du répertoire en cours. Dans votre cas, vous avez utilisé un argument facultatif -b Qui est utilisé pour sélectionner la branche à extraire. Par défaut (c'est-à-dire lorsque l'argument -b N'est pas utilisé), la branche principale est utilisée.

  2. repo sync Met à jour l'arborescence de travail vers la dernière révision. Autrement dit, il synchronise les répertoires de projets locaux avec les référentiels distants spécifiés dans le fichier manifeste. Si un projet local n'existe pas encore, il clonera un nouveau répertoire local à partir du référentiel distant et configurera les branches de suivi comme spécifié dans le manifeste. Si le projet local existe déjà, il mettra à jour les branches distantes et rebasera toutes les nouvelles modifications locales en plus des nouvelles modifications distantes. L'argument -j Est utilisé pour définir le nombre de travaux parallèles à exécuter. La valeur par défaut peut être définie dans le manifeste, et peut également être remplacée en ligne de commande comme dans votre cas.

pourquoi a-t-il atteint 19G alors que Google a dit que je ne devais m'attendre qu'à environ 8G de fichiers source?

Cela devrait être dû au fait qu'en plus des fichiers source, vous obtiendrez tout l'historique de Android depuis le début du temps :)

J'espère que cela t'aides.

32
ozbek