Repo complète Git en simplifiant le travail sur plusieurs référentiels. Voir Outils de contrôle de code source pour une explication de la relation entre Repo et Git. Pour plus de détails sur Repo, consultez le Repo README .
L'utilisation du dépôt prend la forme suivante :
repo command options
Les éléments facultatifs sont indiqués entre crochets [ ]. 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]
aider
Cette page met simplement en évidence les options clés. Consultez l'aide de la ligne de commande pour plus de détails. Lorsque Repo est installé, vous pouvez trouver la dernière documentation en commençant par un résumé de toutes les commandes en exécutant :
repo help
Vous pouvez voir des informations détaillées sur n'importe quelle commande en l'exécutant dans une arborescence Repo :
repo help command
Par exemple, la commande suivante donne une description et une liste d'options pour l'argument init
de Repo, qui initialise Repo dans le répertoire actuel. (Voir init pour plus de détails.)
repo help init
Ou pour voir uniquement la liste des options disponibles, exécutez :
repo command --helpPar exemple :
repo init --help
initialiser
repo init -u url [options]
Installe Repo dans le répertoire courant. Cela crée un .repo/
avec des référentiels Git pour le code source Repo et les fichiers manifestes Android standard.
Option :
-
-u
: spécifiez une URL à partir de laquelle récupérer un référentiel de manifestes. 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.
Remarque : Pour toutes les commandes Repo restantes, le répertoire de travail actuel doit être soit le répertoire parent de .repo/
, soit un sous-répertoire du répertoire parent.
synchroniser
repo sync [project-list]
Télécharge les nouvelles modifications et met à jour les fichiers de travail dans votre environnement local, en effectuant essentiellement une git fetch
sur tous les référentiels Git. Si vous exécutez la repo sync
sans arguments, il synchronise les fichiers pour tous les projets.
Lorsque vous exécutez repo sync
, voici ce qui se passe :
Si le projet n'a jamais été synchronisé, la
repo sync
du référentiel équivaut àgit clone
. Toutes les branches du référentiel distant sont copiées dans le répertoire de projet local.Si le projet a déjà été synchronisé, la
repo sync
équivaut à :git remote update git rebase origin/branch
où
branch
est la branche actuellement extraite dans le répertoire local du projet. Si la branche locale ne suit pas une branche dans le référentiel distant, aucune synchronisation ne se produit pour le projet.Si l'opération Git rebase entraîne des conflits de fusion, utilisez les commandes Git normales (par exemple,
git rebase --continue
) pour résoudre les conflits.
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.
Voici les principales options. Voir repo help sync
du dépôt pour en savoir plus :
-c
: ne récupère que la branche actuelle du manifeste à partir du serveur.-d
: bascule les projets spécifiés vers la révision du manifeste. Ceci est utile si le projet se trouve actuellement sur une branche thématique, mais que la révision du manifeste est temporairement nécessaire.-f
: Procéder à la synchronisation d'autres projets même si un projet ne parvient pas à se synchroniser.-j threadcount
: divise la synchronisation entre les threads pour un achèvement plus rapide. Assurez-vous de ne pas surcharger votre machine - laissez un processeur réservé à d'autres tâches. Pour voir le nombre de processeurs disponibles, exécutez d'abord :nproc --all
-q
: Exécuter silencieusement en supprimant les messages d'état.-s
: se synchronise avec une bonne version connue comme spécifié par l'élément manifest-server dans le manifeste actuel.
télécharger
repo upload [project-list]
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 des 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. Visitez le générateur de mots de passe pour générer une nouvelle paire nom d'utilisateur/mot de passe à utiliser sur HTTPS.
Lorsque Gerrit reçoit les données d'objet sur son serveur, il transforme chaque validation en modification afin que les réviseurs puissent commenter une validation spécifique. Pour combiner plusieurs commits de point de contrôle en un seul commit, utilisez git rebase -i
avant d'exécuter le téléchargement.
Si vous exécutez le repo upload
du référentiel 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.
- Pour chaque commit de la série, saisissez 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 replacments # 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 le drapeau --current-branch
(ou --cbr
pour faire court).
différence
repo diff [project-list]
Affiche les modifications en suspens entre le commit et l'arbre 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 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 de repo sync
supprime tous les commits récupérés avec le repo download
du référentiel. Ou vous pouvez vérifier la branche distante en utilisant git checkout m/master
.
Remarque : Il existe des retards de réplication sur tous les serveurs du monde entier. Il existe donc un léger décalage de mise en miroir entre le moment où une modification est visible sur le Web dans Gerrit et le moment où le repo download
du dépôt peut trouver la modification pour tous les utilisateurs.
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 une branche de suivi locale. Utilisez ceci 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'il est écrit dans le manifeste.
Option :
-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 de 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 canalisant toutes les sorties dans un flux continu qui s'affiche dans une seule session de téléavertisseur.-v
: Afficher les messages que la commande écrit dans stderr.
prune
repo prune [project-list]
Élague (supprime) les sujets déjà fusionnés.
début
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.
Remarque : Un point ( . ) est un raccourci pour le projet dans le répertoire de travail actuel.
statut
repo status [project-list]
Compare l'arborescence de travail à la zone de staging (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 voir le statut de la branche actuelle uniquement, 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 | Sens | La description |
---|---|---|
- | Pas de changement | Idem dans HEAD et index |
UN | Ajoutée | Pas dans HEAD, dans index |
M | Modifié | Dans HEAD, modifié dans l'index |
ré | Supprimé | Dans HEAD, pas dans index |
R | Renommé | Pas dans HEAD, chemin modifié dans l'index |
C | Copié | Pas dans HEAD, copié d'un autre dans l'index |
J | Mode modifié | Même contenu dans HEAD et index, mode changé |
tu | 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 | Sens | La description |
---|---|---|
- | Nouveau/inconnu | Pas dans l'index, dans l'arbre de travail |
m | Modifié | Dans l'index, dans l'arbre de travail, modifié |
ré | Supprimé | Dans l'index, pas dans l'arbre de travail |
Gestion des 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.