Référence des commandes de dépôt

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 --help
Par 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 sur https://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 est default.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
    

    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
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é
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.