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 Outils de gestion de code source. Pour en savoir plus sur Repo, consultez le fichier README de Repo.
L'utilisation du dépôt se présente comme suit :
repo command options
Les éléments facultatifs sont indiqués entre crochets []. Par exemple, de nombreuses commandes acceptent 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 pour les 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 en spécifiant une commande comme option :
repo help command
Par exemple, la commande suivante génère 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 :
repo command --help
Exemple :
repo init --help
init
repo init -u url [options]
Installe Repo dans le répertoire actuel. Cette commande crée un répertoire .repo/
avec des dépôts Git pour le code source Repo et les fichiers manifestes Android standards.
Options :
-u
: spécifiez une URL à partir de laquelle récupérer un dépôt de fichier manifeste. 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, ce qui équivaut à exécuter git fetch
dans tous les dépôts Git. Si vous exécutez repo sync
sans arguments, les fichiers de tous les projets sont synchronisés.
Voici ce qui se passe lorsque vous exécutez repo sync
:
Si le projet n'a jamais été synchronisé,
repo sync
équivaut àgit clone
. Toutes les branches du dépôt distant sont copiées dans le répertoire local du projet.Si le projet a déjà été synchronisé,
repo sync
équivaut à :git remote update git rebase origin/branch
Où branch est la branche extraite actuelle dans le répertoire du projet local. Si la branche locale ne suit pas une branche du dépôt distant, aucune synchronisation n'a lieu pour le projet.
Une fois repo sync
exécuté avec succès, le code des projets spécifiés est à jour et synchronisé avec le code du dépôt distant.
Options de clé :
-c
: n'extrait que la branche actuelle du fichier manifeste du serveur.-d
: rétablissez la révision du fichier manifeste pour les projets spécifiés. Cette option est utile si le projet se trouve sur une branche thématique, mais que la révision du fichier manifeste est nécessaire temporairement.-f
: poursuivez la synchronisation des autres projets même si l'un d'eux ne parvient pas à se synchroniser.-j threadcount
: répartissez la synchronisation sur plusieurs threads pour une exécution plus rapide. Assurez-vous de ne pas surcharger votre machine. Laissez une partie du processeur réservée à d'autres tâches. Pour afficher le nombre de processeurs disponibles, exécutez d'abordnproc --all
.-q
: exécutez l'opération en mode silencieux en supprimant les messages d'état.-s
: synchronise avec une version stable connue, comme spécifié par l'élémentmanifest-server
dans le fichier manifeste actuel.
Pour obtenir plus d'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 Repo. Repo vous invite à sélectionner une ou plusieurs 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 nom d'utilisateur/mot de passe à utiliser sur HTTPS, accédez au générateur de mot de passe.
Lorsque Gerrit reçoit les données d'objet sur son serveur, il transforme chaque commit en modification afin que les réviseurs puissent commenter un commit spécifique.
Pour combiner plusieurs commits de point de contrôle en un seul commit, 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 changements après les avoir importés, utilisez un outil tel que git rebase -i
ou git commit --amend
pour mettre à jour vos commits locaux. Une fois vos modifications terminées :
- Vérifiez que la branche mise à jour est la branche extraite actuelle.
- Utilisez
repo upload --replace PROJECT
pour ouvrir l'éditeur de 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, les modifications disposent d'un ensemble de correctifs supplémentaire.
Si vous souhaitez n'importer que la branche Git actuellement extraite, utilisez l'indicateur --current-branch
(ou --cbr
en abrégé).
Pour les modifications associées, il est utile de conserver toutes les CL dans le même sujet. Vous pouvez ajouter un nom de thème lors de l'importation avec --topic=TOPIC
. Vous pouvez également simplement transmettre -t
pour définir le nom du thème sur le même nom que celui 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 rend disponible 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 extraire 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 d'accès relatif à la racine du client.REPO_REMOTE
est le nom du système distant provenant du fichier manifeste.REPO_LREV
correspond au nom de la révision du fichier manifeste, traduit en branche de suivi local. Utilisez cette variable si vous devez transmettre la révision du fichier manifeste à une commande Git exécutée en local.REPO_RREV
correspond au nom de la révision dans le fichier manifeste, tel qu'il y est écrit.
Options :
-c
: commande et arguments à exécuter. La commande est évaluée via/bin/sh
, et tous les arguments qui la suivent sont transmis en tant que paramètres positionnels du shell.-p
: affiche les en-têtes de projet avant la sortie de la commande spécifiée. Pour ce faire, les pipes sont liés aux flux stdin, stdout et sterr de la commande, et toute la sortie est redirigée vers un flux continu qui est affiché dans une seule session de pagination.-v
: affiche les messages que la commande écrit dans stderr.
élaguer
repo prune [project-list]
Supprime les thèmes déjà fusionnés.
départ
repo start branch-name [project-list]
Démarre une nouvelle branche de 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 connaissez pas, utilisez le nom default
.
L'argument project-list
spécifie les projets qui participent à cette branche de thème.
état
repo status [project-list]
Compare l'arborescence de travail à la zone de préparation (index) et au commit le plus récent de 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 l'état de la branche actuelle uniquement, exécutez repo status .
. Les informations sur l'état sont listées par projet. Un code à deux lettres est utilisé pour chaque fichier du projet.
Dans la première colonne, une lettre majuscule indique la différence entre la zone de préparation et le dernier état validé.
Lettre | Signification | Description |
---|---|---|
- | Aucun changement | Identique dans HEAD et index |
A | Ajouté | Pas dans HEAD, dans l'index |
M | Modifié | Dans HEAD, modifié dans l'index |
D | Supprimé | Dans HEAD, non indexée |
R | Renommé | Pas dans HEAD, chemin d'accès modifié dans l'index |
C | Copié | Non présent dans HEAD, copié depuis un autre élément de l'index |
T | Mode modifié | Contenu identique 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 la différence entre le répertoire de travail et l'index.
Lettre | Signification | Description |
---|---|---|
- | Nouveau/Inconnu | Non 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 le commit, vous pouvez vérifier son ID, démarrer une nouvelle branche, puis la fusionner.