Pourquoi utiliser l’outil repo lors d’un développement Android ?
Avec environ 8.5 millions de lignes de code (sans inclure le kernel Linux), conserver l’ensemble du code source d’Android dans un seul répertoire peut s’avérer difficile. Pour faciliter le développement par des partenaires OEM, Google fournit un système de gestion de version reposant sous GIT, capable de :
- définir un contrôle d’accès basé sur l’arborescence
- créer des composants modulables (projets) et substituables
Repo utilise un manifest listant un ensemble de dépôts GIT (projets). Ce manifest permet la fusion sous un seul workspace de plusieurs projets. Il n’a pas pour vocation à remplacer GIT car il se place au dessus. Repo a pour objectif principal de rendre le workflow plus facile.
Installer repo
Comme repo se place au dessus de GIT, il faut tout d’abord s’assurer que vous possèdez bien les outils GIT sur votre machine.
Repo a été écrit en python pour facilement s’interfaçer sur tout type de machine.
<code><span class="pln">$ mkdir </span><span class="pun">~</span><span class="str">/bin $ PATH=~/</span><span class="pln">bin</span><span class="pun">:</span><span class="pln">$PATH</span></code>
<span class="pln">$ curl https</span><span class="pun">:</span><span class="com">//storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo</span><span class="pln"> $ chmod a</span><span class="pun">+</span><span class="pln">x </span><span class="pun">~</span><span class="str">/bin/</span><span class="pln">repo</span>
Les commandes fondamentales de repo
repo init
Cette commande installe repo dans le répertoire courant. Cela a pour effet de créer un dossier .repo qui contient les répertoires GIT d’Android. Le dossier .repo contient le fichier manifest.xml qui est un lien symbolique du fichier manifeste choisi par l’utilsateur (et qui se trouve également dans .repo/manifests)
repo init -u $URL -b $BRANCH -m $MANIFEST
Le script déroule les actions suivantes :
mkdir .repo
cd .repo
git clone REPO
git clone --bare $URL manifests.git
mkdir -p manifests/.git; cd manifests/.git
for i in ../../manifests.git/*; do ln -s $ı .; done
cd ..
git checkout $BRANCH -- .
cd ..
ln -s manifests/$MANIFEST manifest.xml
repo sync
Télécharge les nouveaux changements et met à jour les projets GIT.
Lorsque vous lancez cette commande, repo va dans un premier temps fetch l’ensemble des répertoires (clone si vous synchronisez pour la première fois) puis rebase et checkout chaque projet sur le dernier commit pointé dans le manifest.
L’option -c peut être utile dans le cas où repo sync met du temps pour fetch l’ensemble des projets. L’option va uniquement fetch la branche courante définie dans le manifest.
repo status
Affiche les différences entre votre staging area et les commits sur la HEAD. Très utile pour savoir quels projets ont été modifiés et vont nécessiter des commits.
En gros, la commande va faire un git diff pour chaque projet enregistré dans le manifest.