Repo complète Git en simplifiant le travail sur plusieurs dépôts. Pour en savoir plus sur la relation entre Repo et Git, consultez la section Outils de contrôle des sources. Pour en savoir plus sur le dépôt, consultez le fichier README du dépôt.
L'utilisation du dépôt se présente sous la forme suivante:
repo command options
Les éléments facultatifs sont indiqués entre crochets []. Par exemple, de nombreuses commandes utilisent project-list comme argument. Vous pouvez spécifier project-list sous la forme d'une liste de noms ou d'une liste de chemins d'accès aux répertoires sources locaux des projets:
repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]
aide
repo help
Fournit de l'aide sur la commande repo
. Vous pouvez afficher des informations détaillées sur une commande Repo spécifique spécifiant une commande en tant qu'option:
repo help command
Par exemple, la commande suivante fournit une description et une liste d'options pour la commande init
:
repo help init
Pour afficher uniquement la liste des options disponibles pour une commande, exécutez la commande suivante:
repo command --help
Exemple :
repo init --help
init
repo init -u url [options]
Installe le dépôt dans le répertoire actuel. Cette commande crée un répertoire .repo/
avec des dépôts Git pour le code source du dépôt et les fichiers manifestes Android standards.
Options :
-u
: spécifiez une URL à partir de laquelle récupérer un dépôt de fichiers manifestes. Le fichier manifeste commun se trouve à l'emplacementhttps://android.googlesource.com/platform/manifest
.-m
: sélectionnez un fichier manifeste dans le dépôt. Si aucun nom de fichier manifeste n'est sélectionné, la valeur par défaut estdefault.xml
.-b
: spécifiez une révision, c'est-à-dire un manifest-branch particulier.
Synchronisation
repo sync [project-list]
Télécharge les nouvelles modifications et met à jour les fichiers de travail dans votre environnement local, effectuant essentiellement git fetch
dans tous les dépôts Git. Si vous exécutez repo sync
sans arguments, il synchronise les fichiers de tous les projets.
Lorsque vous exécutez repo sync
, voici ce qui se passe:
Si le projet n'a jamais été synchronisé,
repo sync
est équivalent àgit clone
. Toutes les branches du dépôt distant sont copiées dans le répertoire de projet local.Si le projet a déjà été synchronisé,
repo sync
est équivalent à:git remote update git rebase origin/branch
Où branch correspond à la branche actuellement sélectionnée dans le répertoire du projet local. Si la branche locale ne suit pas de branche dans le dépôt distant, aucune synchronisation n'est effectuée pour le projet.
Une fois l'exécution de repo sync
réussie, le code des projets spécifiés est à jour et synchronisé avec le code du dépôt distant.
Options de clé:
-c
: n'extrayez que la branche de manifeste actuelle du serveur.-d
: rétablir la révision du fichier manifeste pour les projets spécifiés. Cette option est utile si le projet se trouve sur une branche de sujet, mais que la révision du fichier manifeste est nécessaire temporairement.-f
: permet de continuer à synchroniser d'autres projets même si la synchronisation d'un projet échoue.threadcount
: divisez la synchronisation entre les threads pour accélérer la finalisation. Assurez-vous de ne pas surcharger votre machine. Laissez un peu de CPU réservé à d'autres tâches. Pour afficher le nombre de processeurs disponibles, exécutez d'abordnproc --all
.-q
: exécution silencieuse en supprimant les messages d'état.-s
: synchronisation avec un build fiable, comme spécifié par l'élémentmanifest-server
dans le fichier manifeste actuel.
Pour accéder à d'autres options, exécutez repo help sync
.
importation
repo upload [project-list]
Importe les modifications sur le serveur d'examen. Pour les projets spécifiés, Repo compare les branches locales aux branches distantes mises à jour lors de la dernière synchronisation de Repo. Repo vous invite à sélectionner une ou plusieurs des branches qui n'ont pas été importées pour examen.
Tous les commits des branches sélectionnées sont ensuite transmis à Gerrit via une connexion HTTPS. Vous devez configurer un mot de passe HTTPS pour activer l'autorisation d'importation. Pour générer une nouvelle paire d'identifiant/mot de passe à utiliser via HTTPS, accédez au générateur de mots de passe.
Lorsque Gerrit reçoit les données d'objet sur son serveur, il transforme chaque commit en modification afin que les examinateurs puissent commenter un commit spécifique.
Pour combiner plusieurs commits de point de contrôle en un seul, utilisez git rebase -i
avant d'exécuter l'importation.
Si vous exécutez repo upload
sans arguments, il recherche dans tous les projets les modifications à importer.
Pour modifier les modifications après leur importation, utilisez un outil tel que git rebase -i
ou git commit --amend
pour mettre à jour vos commits locaux. Une fois les modifications effectuées:
- Vérifiez que la branche mise à jour est la branche actuellement sélectionnée.
- Utilisez
repo upload --replace PROJECT
pour ouvrir l'éditeur de mise en correspondance des modifications. Pour chaque commit de la série, saisissez l'ID de modification Gerrit entre crochets:
# Replacing from branch foo [ 3021 ] 35f2596c Refactor part of GetUploadableBranches to lookup one specific... [ 2829 ] ec18b4ba Update proto client to support patch set replacements # Insert change numbers in the brackets to add a new patch set. # To create a new change record, leave the brackets empty.
Une fois l'importation terminée, un correctif supplémentaire est appliqué aux modifications.
Si vous ne souhaitez importer que la branche Git actuellement sélectionnée, utilisez l'indicateur --current-branch
(ou --cbr
pour faire court).
Pour les modifications associées, il est utile de conserver toutes les CL dans le même sujet. Vous pouvez ajouter un nom de sujet lors de l'importation avec --topic=TOPIC
. Vous pouvez également transmettre -t
pour définir le nom du sujet sur le nom de la branche locale.
diff
repo diff [project-list]
Affiche les modifications en attente entre le commit et l'arborescence de travail à l'aide de git diff
.
télécharger
repo download target change
Télécharge la modification spécifiée à partir du système d'examen et la met à disposition dans le répertoire de travail local de votre projet.
Par exemple, pour télécharger change 23823 dans votre répertoire platform/build
:
repo download platform/build 23823
L'exécution de repo sync
supprime tous les commits récupérés avec repo download
. Vous pouvez également récupérer la branche distante à l'aide de git checkout m/main
.
forall
repo forall [project-list] -c command
Exécute la commande shell donnée dans chaque projet. Les variables d'environnement supplémentaires suivantes sont mises à disposition par repo forall
:
REPO_PROJECT
est défini sur le nom unique du projet.REPO_PATH
correspond au chemin relatif à la racine du client.REPO_REMOTE
est le nom du système distant du fichier manifeste.REPO_LREV
correspond au nom de la révision du fichier manifeste, traduite en branche de suivi locale. Utilisez cette variable si vous devez transmettre la révision du fichier manifeste à une commande Git exécutée localement.REPO_RREV
correspond au nom de la révision du fichier manifeste, tel qu'il apparaît dans le fichier manifeste.
Options :
-c
: commande et arguments à exécuter. La commande est évaluée via/bin/sh
et tous les arguments qui suivent sont transmis en tant que paramètres de position de shell.-p
: affiche les en-têtes de projet avant la sortie de la commande spécifiée. Pour ce faire, vous devez associer des canaux aux flux stdin, stdout et sterr de la commande, puis canaliser toutes les sorties dans un flux continu qui s'affiche dans une seule session de pagination.-v
: affiche les messages que la commande écrit dans stderr.
prune
repo prune [project-list]
Élague (supprime) les sujets déjà fusionnés.
départ
repo start branch-name [project-list]
Démarre une nouvelle branche pour le développement, à partir de la révision spécifiée dans le fichier manifeste.
L'argument BRANCH_NAME
fournit une brève description de la modification que vous essayez d'apporter aux projets. Si vous ne le savez pas, envisagez d'utiliser le nom default
.
L'argument project-list
spécifie les projets qui participent à cette branche de sujet.
état
repo status [project-list]
Compare l'arborescence de travail à l'espace de préparation (index) et au commit le plus récent sur cette branche (HEAD) dans chaque projet spécifié. Affiche une ligne récapitulative pour chaque fichier où il existe une différence entre ces trois états.
Pour afficher uniquement l'état de la branche actuelle, exécutez repo status .
. Les informations d'état sont listées par projet. Pour chaque fichier du projet, un code à deux lettres est utilisé.
Dans la première colonne, une lettre majuscule indique en quoi la zone de préproduction diffère de l'état de la dernière validation.
Lettre | Signification | Description |
---|---|---|
- | Aucun changement | Identique dans HEAD et l'index |
A | Ajouté | Non dans HEAD, dans l'index |
M | Modifié | Dans HEAD, modifié dans l'index |
D | Supprimé | Dans HEAD, pas dans l'index |
R | Renommé | Non présent dans HEAD, chemin modifié dans l'index |
C | Copié | Ne figure pas dans HEAD, copié depuis un autre élément de l'index |
T | Mode modifié | Même contenu dans HEAD et index, mode modifié |
U | Fusion annulée | Conflit entre HEAD et l'index : résolution requise |
Dans la deuxième colonne, une lettre minuscule indique en quoi le répertoire de travail diffère de l'index.
Lettre | Signification | Description |
---|---|---|
- | Nouveau/Inconnu | Non présente dans l'index, dans l'arborescence de travail |
m | Modifié | Dans l'index, dans l'arborescence de travail, modifié |
d | Supprimé | Dans l'index, mais pas dans l'arborescence de travail |
Gérer les erreurs de dépôt
git commit -a # Commit local changes first so they aren't lost. repo start branch-name # Start the branch git reset --hard HEAD@{1} # And reset the branch so that it matches the commit before repo start repo upload .
L'erreur repo: error: no branches ready for upload
s'affiche lorsque la commande repo start
n'a pas été exécutée au début de la session. Pour récupérer, vous pouvez vérifier l'ID de commit, créer une nouvelle branche, puis la fusionner.