Pour travailler avec le code Android, vous devez utiliser Git (un système de contrôle des versions Open Source) et Repo (un outil de gestion de dépôts conçu par Google qui s'exécute sur Git). Consultez la section Outils de contrôle de source pour en savoir plus sur la relation entre Repo et Git, et pour obtenir des liens vers la documentation associée à chaque outil.
Procédure
Le développement Android implique le workflow de base suivant:
- Commencez une nouvelle branche de discussion à l'aide de
repo start
. - Modifiez les fichiers.
- Mettez en scène les modifications à l'aide de
git add
. - Validez les modifications à l'aide de
git commit
. - Importez les modifications sur le serveur d'avis à l'aide de
repo upload
.
Tâches
L'utilisation de Git et de Repo dans les dépôts de code Android implique d'effectuer les tâches courantes suivantes.
Commande | Description |
---|---|
repo init |
Initialise un nouveau client. |
repo sync |
Synchronise le client avec les dépôts. |
repo start |
Démarre une nouvelle branche. |
repo status |
Indique l'état de la branche actuelle. |
repo upload |
Importe les modifications sur le serveur d'examen. |
git add |
met en scène les fichiers. |
git commit |
Effectue un commit sur les fichiers mis en scène. |
git branch |
Affiche les branches actuelles. |
git branch [branch] |
Crée une branche de sujet. |
git checkout [branch] |
Désactive HEAD sur la branche spécifiée. |
git merge [branch] |
Fusionne [branch] dans la branche actuelle. |
git diff |
Indique la différence entre les modifications non mises en scène. |
git diff --cached |
Indique la différence entre les modifications mises en scène. |
git log |
Affiche l'historique de la branche actuelle. |
git log m/[codeline].. |
Indique les commits qui ne sont pas poussés. |
Pour en savoir plus sur l'utilisation de Repo pour télécharger le code source, consultez Télécharger le code source et la documentation de référence sur les commandes Repo.
Synchroniser les clients
Pour synchroniser les fichiers de tous les projets disponibles:
repo sync
Pour synchroniser les fichiers de projets sélectionnés:
repo syncPROJECT0 PROJECT1 ... PROJECTN
Créer des branches de sujets
Démarrez une branche de sujet dans votre environnement de travail local chaque fois que vous commencez une modification, par exemple lorsque vous commencez à travailler sur un bug ou une nouvelle fonctionnalité. Une branche de sujet n'est pas une copie des fichiers d'origine. Il s'agit d'un pointeur vers un commit particulier, ce qui permet de créer des branches locales et de passer de l'une à l'autre de manière simple. En utilisant des branches, vous pouvez isoler un aspect de votre travail des autres. Pour en savoir plus sur l'utilisation des branches de sujets, consultez l'article Séparer les branches de sujets.
Pour démarrer une branche de sujet à l'aide de Repo, accédez au projet et exécutez la commande suivante:
repo startBRANCH_NAME .
Le point final ( .
) représente le projet dans le répertoire de travail actuel.
Pour vérifier que la nouvelle branche a été créée:
repo status .
Utiliser des branches de sujets
Pour attribuer la branche à un projet spécifique:
repo startBRANCH_NAME PROJECT_NAME
Pour obtenir la liste de tous les projets, consultez android.googlesource.com. Si vous avez déjà accédé au répertoire du projet, utilisez simplement un point pour représenter le projet en cours.
Pour basculer vers une autre branche dans votre environnement de travail local:
git checkoutBRANCH_NAME
Pour afficher la liste des branches existantes:
git branch
ou
repo branches
Les deux commandes renvoient la liste des branches existantes, avec le nom de la branche actuelle précédé d'un astérisque (*).
Fichiers de préproduction
Par défaut, Git remarque les modifications que vous apportez à un projet, mais ne les suit pas. Pour demander à Git de conserver vos modifications, vous devez les marquer ou les mettre en scène pour les inclure dans un commit.
Pour mettre en scène des modifications:
git add
Cette commande accepte des arguments pour les fichiers ou les répertoires du répertoire du projet. Malgré son nom, git add
n'ajoute pas seulement des fichiers au dépôt Git. Il peut également être utilisé pour mettre en scène des modifications et des suppressions de fichiers.
Afficher l'état du client
Pour afficher l'état des fichiers:
repo status
Pour afficher les modifications non validées (modifications locales qui ne sont pas marquées pour validation):
repo diff
Pour afficher les modifications validées (modifications situées qui sont marquées pour la validation), assurez-vous d'être dans le répertoire du projet, puis exécutez git
diff
avec l'argument cached
:
cd
~/WORKING_DIRECTORY/PROJECT git diff --cached
Valider des modifications
Un commit est l'unité de base du contrôle des versions dans Git. Il consiste en un instantané de la structure de répertoire et du contenu des fichiers pour l'ensemble du projet. Pour créer un commit dans Git, exécutez la commande suivante:
git commit
Lorsque vous êtes invité à fournir un message de commit, fournissez un message court (mais utile) pour les modifications envoyées à AOSP. Si vous n'ajoutez pas de message de commit, le commit échoue.
.Importer des modifications dans Gerrit
Passez à la dernière révision, puis importez la modification:
repo sync
repo upload
Ces commandes renvoient une liste des modifications que vous avez effectuées et vous invitent à sélectionner les branches à importer sur le serveur d'examen. S'il n'y a qu'une seule branche, une invite y/n
simple s'affiche.
Résoudre les conflits de synchronisation
Si la commande repo sync
renvoie des conflits de synchronisation:
- Afficher les fichiers non fusionnés (code d'état = U)
- Modifiez les régions en conflit si nécessaire.
- Accédez au répertoire du projet concerné. Ajoutez et validez les fichiers concernés, puis rebasez les modifications:
git add .
git commit
git rebase --continue
- Une fois la rebase terminée, relancez la synchronisation complète:
repo sync
PROJECT0 PROJECT1 ... PROJECTN
Nettoyer les clients
Après avoir fusionné les modifications dans Gerrit, mettez à jour votre répertoire de travail local, puis utilisez repo prune
pour supprimer de manière sécurisée les branches de sujets obsolètes:
repo sync
repo prune
Supprimer des clients
Étant donné que toutes les informations d'état sont stockées dans votre client, il vous suffit de supprimer le répertoire de votre système de fichiers:
rm -rfWORKING_DIRECTORY
La suppression d'un client supprime définitivement toutes les modifications que vous n'avez pas importées pour examen.