L'utilisation du code Android nécessite l'utilisation de Git (un service système de contrôle des versions) et Repo (dépôt créé par Google) qui s'exécute sur Git). Consultez la page Outils de contrôle des sources. pour obtenir une explication de la relation entre Dépôt et Git, ainsi que des liens vers la documentation de chaque outil.
Procédure
Le développement Android implique le workflow de base suivant:
- Démarrez une nouvelle branche de sujet à l'aide de
repo start
. - Modifiez les fichiers.
- Procédez aux changements d'étape à l'aide de
git add
. - Validez les modifications avec
git commit
. - Importez les modifications sur le serveur d'examen à l'aide de
repo upload
.
Tâches
Pour utiliser Git et Repo dans les dépôts de code Android, vous devez en effectuant les tâches courantes suivantes.
Commande | Description |
---|---|
repo init |
Initialise un nouveau client. |
repo sync |
Il synchronise le client avec les dépôts. |
repo start |
Démarre une nouvelle branche. |
repo status |
Affiche l'état de la branche actuelle. |
repo upload |
Importe les modifications sur le serveur de vérification. |
git add |
Préproduise les fichiers. |
git commit |
Valide les fichiers transférés. |
git branch |
Affiche les branches actuelles. |
git branch [branch] |
Crée une branche de sujet. |
git checkout [branch] |
Remplace HEAD par la branche spécifiée. |
git merge [branch] |
Fusionne [branch] dans la branche actuelle. |
git diff |
Affiche les différences des modifications non intermédiaires. |
git diff --cached |
Affiche les différences des modifications par étapes. |
git log |
Affiche l'historique de la branche actuelle. |
git log m/[codeline].. |
Affiche les commits non transmis. |
Pour en savoir plus sur l'utilisation de Dépôt pour télécharger la source, consultez Télécharger la source et les Documentation de référence sur la commande "Repo"
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éer des branches de sujets
Démarrez une branche de sujet dans votre environnement de travail local chaque fois que vous commencez une changement, comme lorsque vous commencez à travailler sur un bug ou une nouvelle fonctionnalité. Une branche du sujet ne sont pas une copie des fichiers d'origine ; elle pointe vers un un commit particulier, ce qui facilite la création de branches locales et le basculement entre une opération légère. En utilisant des branches, vous pouvez isoler un aspect votre travail des autres. Pour un article intéressant sur l'utilisation des thèmes branches, reportez-vous à Séparation 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 start BRANCH_NAME .
Le point final ( .
) représente le projet dans la partie de travail actuelle
.
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 start BRANCH_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ésentent le projet en cours.
Pour basculer vers une autre branche de votre environnement de travail local:
git checkout BRANCH_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 du branche actuelle précédée 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 indiquer à Git de conserver vos modifications, vous devez les marquer ou les entreposer. modifications à inclure dans un commit.
Pour effectuer des changements par étapes:
git add
Cette commande accepte les arguments pour les fichiers ou répertoires au sein du projet
. Malgré son nom, git add
n'ajoute pas seulement des fichiers à
dans le dépôt Git. il peut également être utilisé pour
préproduire des modifications de fichier et
ou des suppressions.
Afficher 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 (les modifications associées à des emplacements cochés pour
commit), assurez-vous que vous vous trouvez dans le répertoire du projet, puis exécutez git
diff
avec l'argument cached
:
cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached
Validation des modifications...
Un commit est l'unité de base du contrôle des révisions dans Git. Il se compose des éléments suivants : un instantané de la structure du répertoire et du contenu des fichiers pour l'ensemble du projet. Exécutez la commande suivante pour créer un commit dans Git:
git commit
Lorsque vous êtes invité à entrer un message de commit, fournissez un message court (mais utile) pour des modifications envoyées à AOSP. Si vous n'ajoutez pas de message de commit, le commit échoue.
Transfert des modifications vers Gerrit
Effectuez la mise à jour vers la dernière révision, puis importez la modification:
repo sync
repo upload
Ces commandes renvoient la liste des modifications que vous avez validées et vous invitent à
sélectionnez les branches à télécharger
sur le serveur d'examen. S'il n'y en a qu'un
une invite y/n
simple s'affiche.
Résoudre les conflits de synchronisation
Si la commande repo sync
renvoie des conflits de synchronisation:
- Affichez 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é. Ajouter et valider les
fichiers, puis rebasez les modifications:
git add .
git commit
git rebase --continue
- Une fois la rebase terminée, relancez toute la synchronisation:
repo sync PROJECT0 PROJECT1 ... PROJECTN
Nettoyer les clients
Après avoir fusionné les modifications avec Gerrit, mettez à jour votre répertoire de travail local, puis utilisez
repo prune
pour supprimer en toute sécurité 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 supprimez le répertoire de votre système de fichiers:
rm -rf WORKING_DIRECTORY
La suppression d'un client supprime définitivement toutes les modifications qui n'ont pas été effectuées mis en ligne pour examen.