Cette page décrit l'intégralité du processus d'envoi d'une modification de code au projet Android Open Source (AOSP), y compris comment demander un examen et suivre vos modifications.
AOSP s'appuie sur Gerrit, un système d'examen du code basé sur le Web pour les projets qui utilisent Git.
Signer les contrats de licence pour les contributeurs
Avant de contribuer à l'AOSP en modifiant le code, vous devez lire Contrats de licence et en-têtes des contributeurs et signer l'un des contrats suivants :
- Si vous êtes un contributeur individuel et que vous contribuez uniquement en votre nom, signez le Contrat de licence du contributeur individuel.
- Si vous êtes un employé d'une entreprise, assurez-vous que votre entreprise a signé le Corporate Contributor License Agreement (Contrat de licence pour les contributeurs d'entreprise) vous autorisant à apporter des contributions en son nom.
Créer une branche
Pour chaque modification de code que vous souhaitez apporter, procédez comme suit :
Créez une branche dans le dépôt Git concerné. Une branche n'est pas une copie des fichiers d'origine. Il s'agit d'un pointeur vers un commit spécifique, ce qui facilite la création de branches locales et le passage de l'une à l'autre. En utilisant des branches, vous pouvez identifier les modifications apportées à chacune d'elles. Exécutez cette commande pour démarrer une branche :
repo start BRANCH_NAME
Vous pouvez démarrer plusieurs branches indépendantes en même temps dans le même dépôt. La branche BRANCH_NAME est locale à votre espace de travail et n'est incluse ni dans Gerrit ni dans l'arborescence source finale. Les branches sont également spécifiques au projet dans lequel vous vous trouvez. Par conséquent, si vous devez modifier des fichiers dans différents projets dans le cadre de la même modification, vous aurez besoin d'une branche dans chaque projet dans lequel vous modifiez des fichiers.
(Facultatif) Vérifiez que la branche a été créée :
repo status .
La branche que vous venez de créer doit s'afficher. Exemple :
project frameworks/native/ branch mynewbranch
Apporter et tester votre modification
Pour effectuer et tester votre modification, procédez comme suit :
Pour vous assurer de travailler avec le codebase le plus récent, synchronisez l'intégralité du codebase :
repo sync
Si vous rencontrez des conflits lors de la synchronisation, reportez-vous aux étapes 2 à 4 de Résoudre les conflits de synchronisation.
Recherchez le code à modifier. Pour trouver du code, pensez à utiliser Android Code Search. Vous pouvez utiliser la recherche de code Android pour afficher le code source AOSP tel qu'il est présenté lorsque vous l'utilisez réellement. Pour en savoir plus, consultez Premiers pas avec Code Search. Pour afficher tout le code de la dernière branche de version AOSP dans la recherche de code Android, accédez à
https://cs.android.com/android/platform/superproject/
.Modifier ou ajouter des fichiers sources. Pour toute modification apportée :
Déterminez si vous devez utiliser des options de lancement de fonctionnalités et, le cas échéant, implémentez-les pour votre nouveau code.
Suivez les bonnes pratiques décrites dans Inclure des en-têtes de licence.
Pour le code Java, suivez le style de code Java AOSP pour les contributeurs.
Certaines parties d'AOSP sont écrites en Kotlin (
.kt
). Vous pouvez utiliser Kotlin dans les zones de la plate-forme qui sont déjà écrites en Kotlin. Pour en savoir plus sur Kotlin dans Android, consultez le guide de style Kotlin et le guide d'interopérabilité Kotlin-Java pour les développeurs Android. Pour obtenir des conseils plus détaillés sur Kotlin, consultez le site sur le langage Kotlin.Lorsque vous écrivez des API, suivez les Consignes relatives aux API Android. Utilisez ces consignes pour comprendre le contexte des décisions concernant les API Android. Les ajouts et les modifications apportés aux API de plate-forme sont validés par Metalava.
Préparer et valider votre modification
Un commit est l'unité de base du contrôle des révisions dans Git. Il se compose d'un instantané de la structure de répertoire et du contenu des fichiers pour l'ensemble du projet. Pour valider votre modification, procédez comme suit :
Par défaut, Git enregistre les modifications que vous apportez, mais ne les suit pas. Pour indiquer à Git de suivre vos modifications, vous devez les marquer ou les mettre en scène pour les inclure dans un commit. Exécutez cette commande pour préparer la modification :
git add -A
Cette commande permet de suivre les modifications que vous avez apportées à des fichiers.
Prenez les fichiers dans la zone de préparation et validez-les ou stockez-les dans votre base de données locale :
git commit -s
Par défaut, un éditeur de texte s'ouvre et vous êtes invité à fournir un message de commit.
Fournissez un message de commit au format suivant :
Ligne 1 : titre. Fournissez un résumé de la modification sur une ligne (50 caractères maximum). Envisagez d'utiliser des préfixes pour décrire la zone que vous avez modifiée, suivis d'une description de la modification que vous avez apportée dans ce commit. Par exemple, voici un exemple contenant une modification de l'interface utilisateur :
ui: Removes deprecated widget
Ligne 2 : ligne vide. Laissez une ligne vide après le titre.
Ligne 3 : corps. Fournissez une description longue qui ne dépasse pas 72 caractères par ligne. Décrivez le problème que la modification résout et comment. Bien que le corps soit facultatif, il est utile aux autres utilisateurs qui ont besoin de se référer à la modification. Veillez à inclure une brève note sur les hypothèses ou les informations générales qui pourraient être importantes lorsqu'un autre contributeur travaille sur cette fonctionnalité.
Pour lire un blog sur les bonnes descriptions de commit (avec des exemples), consultez How to Write a Git Commit Message (Comment rédiger un message de commit Git).
Enregistrez le commit.
Un ID de modification unique, ainsi que votre nom et votre adresse e-mail fournis lors de l'repo init
, sont automatiquement ajoutés à votre message de commit.
Importer la modification pour examen
Une fois que vous avez validé votre modification dans votre historique Git personnel, importez-la dans Gerrit :
Exécutez la commande suivante pour importer tous vos commits dans tous vos projets :
repo upload
Toutes les modifications apportées à tous les projets sont incluses dans l'importation.
.Vous êtes invité à exécuter des scripts de hook.
Appuyez sur a, puis sur Entrée.
Vous êtes invité à approuver l'importation :
Upload project frameworks/native/ to remote branch android16-release: branch BRANCH_NAME ( 1 commit, Wed Aug 7 09:32:33 2019 -0700): ff46b36d android codelab change to https://android-review.googlesource.com/ (y/N)?
Appuyez sur y, puis sur Entrée pour approuver l'importation.
Vous devriez recevoir un message semblable à remote: SUCCESS
.
Demander un examen
Une fois l'importation réussie, Repo vous fournit un lien vers vos modifications dans Gerrit. Cliquez sur le lien pour afficher vos modifications sur le serveur d'examen, ajouter des commentaires ou demander des réviseurs spécifiques pour vos modifications. Toutes les modifications apportées au code doivent être examinées par les propriétaires du code concerné.
Pour demander un examen :
Dans Gerrit, cliquez sur SUGGEST OWNERS (Suggérer des propriétaires) :
Figure 1 : Lien "Suggérer des propriétaires" dans Gerrit.
La boîte de dialogue de l'examinateur s'affiche. Cette boîte de dialogue contient une liste des propriétaires du code qui peuvent examiner votre modification.
Cliquez sur un propriétaire du code pour l'ajouter à votre révision.
Le bouton ENVOYER est activé.
(Facultatif) Saisissez l'adresse e-mail des autres personnes que vous souhaitez voir examiner votre modification.
Cliquez sur ENVOYER pour envoyer la modification pour examen.
Les propriétaires du code examinent vos modifications de code et, si elles sont acceptées, les sélectionnent et les fusionnent dans la branche de développement interne.
Déterminer l'état d'une modification
Pour déterminer l'état des fichiers de votre modification, recherchez les icônes suivantes à côté des fichiers de la modification :
- (icône en forme de coche) : approuvé par le propriétaire du code
- (icône Croix) : Non approuvé par le propriétaire du code
- (icône horloge) : en attente d'approbation par le propriétaire du code
La figure suivante montre ces icônes d'état appliquées aux fichiers d'une modification :
Figure 2. Exemple de fichiers avec des icônes indiquant l'approbation du propriétaire du code.
Résoudre les problèmes signalés et importer une modification de remplacement
Si un réviseur demande une modification de votre mise à jour, vous pouvez modifier votre commit dans Git, ce qui génère un nouveau patchset sur la même modification.
Pour résoudre les problèmes signalés et modifier votre changement :
Suivez les étapes 2 à 4 de Apporter et tester vos modifications.
Exécutez les commandes suivantes pour modifier votre changement :
git add -A git commit --amend
Lorsque vous importez la modification modifiée, elle remplace l'original à la fois sur Gerrit et dans votre historique Git local.
Résoudre les conflits de synchronisation
Si d'autres modifications sont envoyées à l'arborescence source et qu'elles sont en conflit avec les vôtres, vous recevez un message indiquant que vous avez des conflits. Pour résoudre les conflits :
Assurez-vous d'utiliser le code le plus récent :
repo sync .
La commande
repo sync
récupère les mises à jour du serveur source, puis tente de rebaser automatiquement votreHEAD
sur le nouveauHEAD
distant.Si le rebasage automatique échoue, effectuez un rebasage manuel :
repo rebase .
Résolvez les conflits de fusion. Si vous n'avez pas de méthode préférée pour résoudre les conflits de fusion, vous pouvez utiliser
git mergetool
pour résoudre manuellement les conflits entre les fichiers.Une fois les fichiers en conflit corrigés, exécutez cette commande pour appliquer les nouveaux commits :
git rebase --continue
Envoyer la modification
Une fois qu'une contribution a passé le processus d'examen et de validation, le propriétaire du code l'envoie pour vous, soit sur la branche sur laquelle la modification a été examinée, soit dans une branche interne.
Une fois votre envoi fusionné, vous pouvez consulter le tableau de bord Android Continuous Integration pour savoir quand vos envois sont intégrés à l'arborescence.