Référence de commande de dépôt

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

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
    

    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'abord nproc --all .
  • -q : Exécuter silencieusement en supprimant les messages d'état.
  • -s : synchronisation avec une bonne version connue, comme spécifié par l'élément manifest-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.