Repo complète Git en simplifiant le travail sur plusieurs référentiels. Pour une explication de la relation entre Repo et Git, consultez Outils de contrôle de source . Pour plus de détails sur Repo, consultez le Repo README
L'utilisation du repo prend la forme suivante :
repo command options
Les éléments facultatifs sont indiqués entre parenthèses []. Par exemple, de nombreuses commandes prennent 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 voir des informations détaillées sur une commande Repo spécifique spécifiant une commande comme option :
repo help command
Par exemple, la commande suivante donne une description et une liste d'options pour la commande init
:
repo help init
Ou, pour voir uniquement la liste des options disponibles pour une commande, exécutez :
repo command --help
Par exemple :
repo init --help
initialisation
repo init -u url [options]
Installe Repo dans le répertoire actuel. Cette commande crée un répertoire .repo/
avec les référentiels Git pour le code source Repo et les fichiers manifestes Android standard.
Possibilités :
-u
: Spécifiez une URL à partir de laquelle récupérer un référentiel de manifeste. Le manifeste commun se trouve surhttps://android.googlesource.com/platform/manifest
.-m
: Sélectionnez un fichier manifeste dans le référentiel. Si aucun nom de manifeste n’est sélectionné, la valeur par défaut estdefault.xml
.-b
: Spécifiez une révision, c'est-à-dire une manifest-branch particulière.
synchroniser
repo sync [project-list]
Télécharge les nouvelles modifications et met à jour les fichiers de travail dans votre environnement local, accomplissant essentiellement git fetch
dans tous les référentiels Git. Si vous exécutez repo sync
sans arguments, les fichiers de tous les projets sont synchronisés.
Lorsque vous exécutez repo sync
, voici ce qui se passe :
Si le projet n'a jamais été synchronisé, alors
repo sync
équivaut àgit clone
; toutes les branches du référentiel distant sont copiées dans le répertoire du projet local.Si le projet a déjà été synchronisé, alors
repo sync
équivaut à :git remote update git rebase origin/branch
Où branch est la branche actuellement extraite dans le répertoire du projet local. Si la branche locale ne suit pas une branche dans le référentiel distant, aucune synchronisation n'a lieu pour le projet.
Après une exécution réussie de repo sync
, le code des projets spécifiés est à jour et synchronisé avec le code du référentiel distant.
Options clés :
-
-c
: Récupère uniquement la branche manifeste actuelle du serveur. -
-d
: ramène les projets spécifiés à la révision du manifeste. Cette option est utile si le projet se trouve sur une branche thématique, mais que la révision du manifeste est nécessaire temporairement. -
-f
: procéder à la synchronisation d'autres projets même si un projet ne parvient pas à se synchroniser. -
threadcount
: divisez la synchronisation entre les threads pour une exécution plus rapide. Assurez-vous de ne pas surcharger votre ordinateur : laissez une partie du processeur réservée à d'autres tâches. Pour voir le nombre de processeurs disponibles, exécutez d'abordnproc --all
. -
-q
: Exécuter silencieusement en supprimant les messages d'état. -
-s
: synchronisation avec une bonne version connue, comme spécifié par l'élémentmanifest-server
dans le manifeste actuel.
Pour plus d'options, exécutez repo help sync
.
télécharger
repo upload [project-list]
Télécharge les modifications sur le serveur de révision. 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é téléchargées pour examen.
Tous les commits sur les branches sélectionnées sont ensuite transmis à Gerrit via une connexion HTTPS. Vous devez configurer un mot de passe HTTPS pour activer l'autorisation de téléchargement. Pour générer une nouvelle paire nom d'utilisateur/mot de passe à utiliser via HTTPS, visitez le générateur de mot de passe .
Lorsque Gerrit reçoit les données de l'objet sur son serveur, il transforme chaque validation en modification afin que les réviseurs puissent commenter une validation spécifique. Pour combiner plusieurs validations de points de contrôle en une seule validation, utilisez git rebase -i
avant d'exécuter le téléchargement.
Si vous exécutez repo upload
sans arguments, il recherche dans tous les projets les modifications à télécharger.
Pour modifier les modifications après leur téléchargement, 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 actuellement extraite.
- Utilisez
repo upload --replace PROJECT
pour ouvrir l'éditeur de correspondance des modifications. Pour chaque commit de la série, entrez l'ID de modification Gerrit entre parenthèses :
# 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 le téléchargement terminé, les modifications disposent d'un ensemble de correctifs supplémentaires.
Si vous souhaitez télécharger uniquement la branche Git actuellement extraite, utilisez l'indicateur --current-branch
(ou --cbr
pour faire court).
différence
repo diff [project-list]
Affiche les modifications en suspens entre le commit et l'arborescence de travail à l'aide git diff
.
télécharger
repo download target change
Télécharge la modification spécifiée à partir du système de révision et la rend disponible dans le répertoire de travail local de votre projet.
Par exemple, pour télécharger la modification 23823 dans votre répertoire platform/build
:
repo download platform/build 23823
L’exécution repo sync
supprime tous les commits récupérés avec repo download
. Ou vous pouvez consulter la branche distante en utilisant git checkout m/main
.
pour tous
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
est le chemin relatif à la racine du client. -
REPO_REMOTE
est le nom du système distant du manifeste. -
REPO_LREV
est le nom de la révision du manifeste, traduit en branche de suivi locale. Utilisez cette variable si vous devez transmettre la révision du manifeste à une commande Git exécutée localement. -
REPO_RREV
est le nom de la révision du manifeste, exactement tel qu'écrit dans le manifeste.
Possibilités :
-
-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 de position du shell. -
-p
: Afficher les en-têtes du projet avant la sortie de la commande spécifiée. Ceci est réalisé en liant les canaux aux flux stdin, stdout et sterr de la commande, et en redirigeant toutes les sorties vers un flux continu qui est affiché dans une seule session de pager. -
-v
: Afficher les messages que la commande écrit dans stderr.
prune
repo prune [project-list]
Élague (supprime) les sujets déjà fusionnés.
commencer
repo start branch-name [project-list]
Commence une nouvelle branche pour le développement, à partir de la révision spécifiée dans le 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 quels projets participent à cette branche thématique.
statut
repo status [project-list]
Compare l'arborescence de travail à la zone de préparation (index) et à la validation la plus récente 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 voir uniquement l’état de la branche actuelle, exécutez repo status .
. Les informations d'état sont répertorié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 transit diffère du dernier état validé.
Lettre | Signification | Description |
---|---|---|
- | Pas de changement | Idem dans HEAD et index |
UN | Ajoutée | Pas dans HEAD, dans l'index |
M | Modifié | Dans HEAD, modifié dans l'index |
D | Supprimé | Dans HEAD, pas dans l'index |
R. | Renommé | Pas dans HEAD, chemin modifié dans l'index |
C | Copié | Pas dans HEAD, copié depuis un autre dans l'index |
T | Mode modifié | Même contenu dans HEAD et index, mode modifié |
U | Non fusionné | Conflit entre HEAD et 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 | Pas dans l'index, dans l'arbre de travail |
m | Modifié | Dans l'index, dans l'arbre de travail, modifié |
d | Supprimé | Dans l'index, pas dans l'arbre 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
apparaît 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 validation, démarrer une nouvelle branche, puis la fusionner.