Travailler avec du code Android nécessite d'utiliser Git (un système de contrôle de version open source) et Repo (un outil de gestion de référentiel construit par Google qui s'exécute au-dessus de Git). Voir Outils de contrôle de source pour une explication de la relation entre Repo et Git et des liens vers la documentation de support pour chaque outil.
Couler
Le développement Android implique le flux de travail de base suivant :
- Démarrez une nouvelle branche de sujet en utilisant
repo start
. - Modifiez les fichiers.
- Changements d'étape à l'aide de
git add
. - Validez les modifications à l'aide de
git commit
. - Téléchargez les modifications sur le serveur de révision à l'aide du
repo upload
du dépôt .
Tâches
Travailler avec Git et Repo dans les référentiels de code Android implique d'effectuer les tâches courantes suivantes.
Commande | La description |
---|---|
repo init | Initialise un nouveau client. |
repo sync | Synchronise le client avec les référentiels. |
repo start | Démarre une nouvelle branche. |
repo status | Affiche l'état de la branche actuelle. |
repo upload | Télécharge les modifications sur le serveur de révision. |
git add | Organise les fichiers. |
git commit | Valide les fichiers préparés. |
git branch | Affiche les branches actuelles. |
git branch [branch] | Crée une nouvelle branche thématique. |
git checkout [branch] | Bascule HEAD sur la branche spécifiée. |
git merge [branch] | Fusionne [branch] dans la branche actuelle. |
git diff | Affiche le diff des modifications non mises en scène. |
git diff --cached | Affiche le diff des modifications par étapes. |
git log | Affiche l'historique de la branche actuelle. |
git log m/[codeline].. | Affiche les commits qui ne sont pas poussés. |
Pour plus d'informations sur l'utilisation de Repo pour télécharger la source, consultez Downloading the Source and the Repo Command Reference .
Synchronisation des clients
Pour synchroniser les fichiers de tous les projets disponibles :
repo sync
Pour synchroniser les fichiers des projets sélectionnés :
repo sync PROJECT0 PROJECT1 ... PROJECTN
Création de branches thématiques
Démarrez une branche thématique dans votre environnement de travail local chaque fois que vous commencez une modification, par exemple lorsque vous commencez à travailler sur un bogue ou une nouvelle fonctionnalité. Une branche thématique n'est pas une copie des fichiers d'origine ; c'est un pointeur vers un commit particulier, ce qui fait de la création de branches locales et de la commutation entre elles une opération légère. En utilisant des branches, vous pouvez isoler un aspect de votre travail des autres. Pour un article intéressant sur l'utilisation des branches thématiques, reportez-vous à Séparation des branches thématiques .
Pour démarrer une branche thématique à l'aide de Repo, accédez au projet et exécutez :
repo start BRANCH_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 .
Utilisation des branches thématiques
Pour affecter la branche à un projet spécifique :
repo start BRANCH_NAME PROJECT_NAME
Pour obtenir la liste de tous les projets, consultez android.googlesource.com . Si vous avez déjà navigué jusqu'au répertoire du projet, utilisez simplement un point pour représenter le projet en cours.
Pour changer de succursale dans votre environnement de travail local :
git checkout BRANCH_NAME
Pour afficher une liste des succursales existantes :
git branch
ou
repo branches
Les deux commandes renvoient la liste des branches existantes avec le nom de la branche courante précédé d'un astérisque (*).
Fichiers intermédiaires
Par défaut, Git remarque mais ne suit pas les modifications que vous apportez à un projet. Pour indiquer à Git de conserver vos modifications, vous devez marquer ou mettre en scène ces modifications pour les inclure dans un commit.
Pour mettre en scène les modifications :
git add
Cette commande accepte des arguments pour des fichiers ou des répertoires dans le répertoire du projet. Malgré son nom, git add
ne se contente pas d'ajouter des fichiers au référentiel Git ; il peut également être utilisé pour organiser des modifications et des suppressions de fichiers.
Affichage de l'état du client
Pour répertorier 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 localisées marquées pour validation), assurez-vous que vous êtes dans le répertoire du projet, puis exécutez git diff
avec l'argument cached
:
cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached
Commettre des modifications
Un commit est l'unité de base du contrôle de révision dans Git et consiste en un instantané de la structure du répertoire et du contenu du fichier pour l'ensemble du projet. Utilisez cette commande pour créer un commit dans Git :
git commit
Lorsque vous êtes invité à envoyer un message de validation, fournissez un message court (mais utile) pour les modifications soumises à AOSP. Si vous n'ajoutez pas de message de validation, la validation échoue.
Téléchargement des modifications dans Gerrit
Mettez à jour vers la dernière révision, puis importez la modification :
repo sync
repo upload
Ces commandes renvoient une liste des modifications que vous avez validées et vous invitent à sélectionner les branches à télécharger sur le serveur de révision. S'il n'y a qu'une seule branche, vous voyez une simple invite y/n
.
Résolution des conflits de synchronisation
Si la commande repo sync
renvoie des conflits de synchronisation :
- Affichez les fichiers qui ne sont pas fusionnés (code d'état = U).
- Modifiez les régions en conflit si nécessaire.
- Accédez au répertoire de projet approprié. Ajoutez et validez les fichiers concernés, puis rebasez les modifications :
git add .
git commit
git rebase --continue
- Une fois la rebase terminée, recommencez toute la synchronisation :
repo sync PROJECT0 PROJECT1 ... PROJECTN
Nettoyer les clients
Après avoir fusionné les modifications apportées à Gerrit, mettez à jour votre répertoire de travail local, puis utilisez repo prune
pour supprimer en toute sécurité les branches de sujet obsolètes :
repo sync
repo prune
Suppression de 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 -rf WORKING_DIRECTORY
La suppression d'un client supprime définitivement toutes les modifications que vous n'avez pas téléchargées pour examen.