Documentation de référence sur les commandes de dépôt

Repo complète Git en simplifiant le travail sur plusieurs dépôts. Pour plus d'informations sur la relation entre Repo et Git, consultez la page Outils de contrôle des sources. Pour en savoir plus sur Repo, 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 en tant que liste de noms ou 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

Elle fournit de l'aide sur la commande repo. Vous pouvez obtenir des informations détaillées sur une commande de dépôt 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 la commande suivante:

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 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'adresse https://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 est default.xml.

  • -b: spécifiez une révision, c'est-à-dire un manifest-branch spécifique.

Synchronisation

repo sync [project-list]

Il télécharge les nouvelles modifications et met à jour les fichiers de travail dans votre environnement local, ce qui permet d'exécuter git fetch sur 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 produit 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
    
    .

    branch est la branche actuellement récupérée dans le répertoire local du projet. Si la branche locale ne suit pas une branche dans le dépôt distant, aucune synchronisation n'est effectuée 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 dépôt distant.

Principales options:

  • -c: extrait uniquement la branche de fichier manifeste actuelle sur le serveur.
  • -d: permet de 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: pour poursuivre la synchronisation d'autres projets, même si la synchronisation d'un projet échoue.
  • threadcount: répartit la synchronisation entre les threads pour une exécution plus rapide. Assurez-vous de ne pas surcharger votre machine. Laissez un processeur réservé pour d'autres tâches. Pour afficher le nombre de processeurs disponibles, exécutez d'abord nproc --all.
  • -q: s'exécute en mode silencieux en supprimant les messages d'état.
  • -s: se synchronise avec une bonne compilation connue, comme spécifié par l'élément manifest-server dans le fichier manifeste actuel.

Pour plus d'options, exécutez repo help sync.

importation

repo upload [project-list]

Importe les modifications sur le serveur de vérification. 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 branches qui n'ont pas été importées pour examen.

Tous les commits effectués 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 d'importation. Pour générer une nouvelle paire nom d'utilisateur/mot de passe à utiliser via HTTPS, consultez le 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 dans un seul commit, utilisez git rebase -i avant d'exécuter l'importation.

Si vous exécutez repo upload sans arguments, il recherche les modifications à importer dans tous les projets.

Pour modifier vos modifications après les avoir importées, mettez à jour vos commits locaux à l'aide d'un outil tel que git rebase -i ou git commit --amend. Une fois vos modifications terminées:

  • Vérifiez que la branche mise à jour est bien la branche récupéré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 accolades:

    # 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 ensemble de correctifs supplémentaire est appliqué aux modifications.

Si vous souhaitez n'importer que la branche Git actuellement extraite, utilisez l'option --current-branch (ou --cbr en abrégé).

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

Il 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 le changement 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 consulter la branche distante à l'aide de 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 d'accès relatif à la racine du client.
  • REPO_REMOTE est le nom du système distant indiqué dans le fichier manifeste.
  • REPO_LREV est le nom de la révision du fichier manifeste, traduit dans une 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 est le nom de la révision du fichier manifeste, tel qu'il est écrit dans le fichier manifeste.

Options :

  • -c: commande et arguments à exécuter La commande est évaluée via /bin/sh et tous les arguments après sa transmission en tant que paramètres positionnels de l'interface système.
  • -p: affiche les en-têtes du projet avant le résultat de la commande spécifiée. Pour ce faire, vous devez lier des pipes aux flux stdin, stdout et sterr de la commande, puis rediriger toutes les sorties en un flux continu qui s'affiche dans une seule session de pager.
  • -v: affiche les messages que la commande écrit dans stderr.

pruneaux

repo prune [project-list]

élimine (supprime) les sujets qui ont déjà été 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 savez pas, utilisez le nom default.

L'argument project-list spécifie les projets qui participent à cette branche du sujet.

status

repo status [project-list]

Compare l'arborescence de travail à la zone de préproduction (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 présentant 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 répertoriées par projet. Un code à deux lettres est utilisé pour chaque fichier du projet.

Dans la première colonne, une lettre majuscule indique en quoi la zone intermédiaire diffère du dernier état validé.

Lettre Signification Description
- Aucun changement Identiques dans HEAD et dans l'index
A Ajouté Pas dans HEAD, dans l'index
M Modifié Dans HEAD, modifié dans l'index
J Supprimé Dans HEAD, pas dans l'index
R Renommés Pas dans HEAD, chemin modifié dans l'index
C Copié Pas dans la section HEAD, copiée depuis une autre dans l'index
T Mode modifié Contenu identique dans les sections HEAD et index, mode modifié
U Fusion annulée Conflit entre la section 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 Pas dans l'index, dans l'arborescence professionnelle
m Modifié Dans l'index, dans l'arborescence professionnelle,
d Supprimé Dans l'index, pas dans l'arborescence professionnelle

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, démarrer une nouvelle branche, puis la fusionner.