web-dev-qa-db-fra.com

Qu'est-ce que Repo et pourquoi Google l'utilise-t-il?

Quand je voulais obtenir Android code source, je savais que je devais utiliser "repo". Alors qu'est-ce que repo? Pourquoi utilisent-ils repo et pas seulement GIT?, Et y a-t-il un Interface graphique pour le repo qui me permet de suspendre/reprendre la synchronisation, car chaque fois que je suis déconnecté, il semble que le repo commence à se synchroniser depuis le début!

38
Osama Gamal

Repo et git - ce qu'ils sont, à quoi ils servent - est expliqué sur source.Android.com

Pour travailler avec le code Android, vous devrez utiliser à la fois Git et Repo.

Git est un système de contrôle de version open source conçu pour gérer de très gros projets qui sont distribués sur plusieurs référentiels. Dans le contexte d'Android, nous utilisons Git pour les opérations locales telles que les branchements locaux, les validations, les différences et les modifications.

Repo est un outil que nous avons construit sur Git. Repo nous aide à gérer les nombreux référentiels Git, effectue les téléchargements vers notre système de contrôle des révisions et automatise certaines parties du flux de travail de développement Android Android. Repo n'est pas destiné à remplacer Git, seulement pour le rendre plus facile à travailler avec Git dans le contexte d'Android. La commande repo est un exécutable Python que vous pouvez placer n'importe où sur votre chemin).

Il n'y a pas d'interface graphique pour Repo, pour autant que je sache, mais il y a pas mal de conseils sur le site ci-dessus pour contrôler ce que Repo fait à partir de la ligne de commande.

22
brabster

Comme mentionné dans la page Web Android Android, repo ne remplace pas git. C'est juste un outil sur git et vous aide à gérer plusieurs référentiels git.

Par exemple, supposons que j'ai un gros projet qui comporte beaucoup de fonctionnalités et que plusieurs équipes travaillent sur chaque fonctionnalité et que j'ai créé un référentiel pour chaque fonctionnalité. Par exemple, supposons que mes référentiels soient wifi, telephony, power management, etc. Cette action a du sens lorsque vos fonctions ont des cycles de vie différents. Par exemple, si je ne touche pas à la fonction wifi dans ma prochaine version et que je modifie tout le reste. Donc, dans ce scénario, mon projet ou produit est distribué dans plusieurs référentiels git différents.

Donc, pour obtenir une photo centralisée de mon projet (un moment spécifique de mon projet, par exemple un jalon), j'ai besoin d'obtenir la révision (git hash ou tag) de chaque référentiel. N'oubliez pas que nous avons un référentiel pour chaque fonctionnalité. Manuellement, je pouvais le faire, mais cela pouvait être très douloureux. Ainsi, avec repo, vous pouvez avoir un MANIFEST qui relie à toutes les révisions de chaque git repo (une pour chaque fonctionnalité) et avoir une image spécifique de tout mon projet.

Simplement, je pourrais dire que c'est une façon de gérer plusieurs dépôts git centralisés qui sont décentralisés.

Avec le repo, vous avez plus de fonctionnalités, pas seulement pour passer à la caisse à un moment précis. Pour plus d'informations, rendez-vous sur http://source.Android.com/source/using-repo.html .

21
Matias Burni

Concernant le point de pause et de redémarrage, alors que dans une fenêtre de terminal faisant une synchronisation de repo, vous pouvez appuyer sur "ctrl + z" pour mettre en pause la synchronisation de repo. Pour redémarrer, tapez simplement "fg" dans la même fenêtre.

3
Jordan Craig

Aller à:

http://source.Android.com/source/git-repo.html

et vous pouvez télécharger le script repo. Il s'agit d'un script Python qui utilise la commande git pour effectuer la révision du code source distribué.

Après avoir exécuté repo sync, fait une ps -auwf pour voir les processus:

Pour le mien, j'ai vu:

\_ python -E /sde3/root/download/Android/android/.repo/repo/main.py --rep 
      \_ git fetch korg
            \_ git fetch korg
            \_ git index-pack --stdin -v --fix-thin --keep=fetch-pack 5227 on

Oui, repo sync se casse souvent. Mais il est robuste, redémarrez simplement la commande et la reprise de la synchronisation reprendra - celles qui ont été mises à jour ne seront pas réappliquées, donc elles les ignoreront et continueront avec le reste.

2
Peter Teoh

la synchronisation des repo a plusieurs options utiles:

-f récupère des déconnexions

-c télécharge simplement la branche que vous avez demandée

-j <#CPUS> accélère la synchronisation en augmentant le nombre de cpus utilisés par la commande

2
user3913384