Repo-Befehlsreferenz

Repo ergänzt Git, indem es die Arbeit über mehrere Repositorys hinweg vereinfacht. Eine Erläuterung der Beziehung zwischen Repo und Git finden Sie unter Tools zur Quellcodeverwaltung . Weitere Informationen zu Repo finden Sie in der Repo-README-Datei

Die Repo-Nutzung erfolgt wie folgt:

repo command options

Optionale Elemente werden in Klammern [] angezeigt. Viele Befehle verwenden beispielsweise project-list als Argument. Sie können project-list als Liste mit Namen oder als Liste mit Pfaden zu lokalen Quellverzeichnissen für die Projekte angeben:

repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]

helfen

repo help

Bietet Hilfe zum repo Befehl. Sie können detaillierte Informationen zu einem bestimmten Repo-Befehl anzeigen, indem Sie einen Befehl als Option angeben:

repo help command

Der folgende Befehl liefert beispielsweise eine Beschreibung und eine Liste von Optionen für den Befehl init :

repo help init

Oder führen Sie Folgendes aus, um nur die Liste der verfügbaren Optionen für einen Befehl anzuzeigen:

repo command --help

Beispiel:

repo init --help

drin

repo init -u url [options]

Installiert Repo im aktuellen Verzeichnis. Dieser Befehl erstellt ein .repo/ -Verzeichnis mit Git-Repositorys für den Repo-Quellcode und die Standard-Android-Manifestdateien.

Optionen:

  • -u : Geben Sie eine URL an, von der ein Manifest-Repository abgerufen werden soll. Das allgemeine Manifest finden Sie unter https://android.googlesource.com/platform/manifest .

  • -m : Wählen Sie eine Manifestdatei im Repository aus. Wenn kein Manifestname ausgewählt ist, ist der Standardwert default.xml .

  • -b : Geben Sie eine Revision an, also einen bestimmten manifest-branch .

synchronisieren

repo sync [project-list]

Lädt neue Änderungen herunter und aktualisiert die Arbeitsdateien in Ihrer lokalen Umgebung und führt so im Wesentlichen git fetch über alle Git-Repositorys durch. Wenn Sie repo sync ohne Argumente ausführen, werden die Dateien für alle Projekte synchronisiert.

Wenn Sie repo sync ausführen, passiert Folgendes:

  • Wenn das Projekt noch nie synchronisiert wurde, entspricht die repo sync dem git clone . Alle Zweige im Remote-Repository werden in das lokale Projektverzeichnis kopiert.

  • Wenn das Projekt zuvor synchronisiert wurde, entspricht repo sync :

    git remote update
    git rebase origin/branch
    

    Dabei ist branch der aktuell ausgecheckte Zweig im lokalen Projektverzeichnis. Wenn der lokale Zweig einen Zweig im Remote-Repository nicht verfolgt, erfolgt keine Synchronisierung für das Projekt.

Nach einer erfolgreichen Ausführung von repo sync ist der Code in bestimmten Projekten aktuell und mit dem Code im Remote-Repository synchronisiert.

Hauptoptionen:

  • -c : Ruft nur den aktuellen Manifestzweig vom Server ab.
  • -d : Angegebene Projekte zurück auf die Manifestrevision umstellen. Diese Option ist hilfreich, wenn sich das Projekt in einem Themenzweig befindet, die Manifestrevision jedoch vorübergehend benötigt wird.
  • -f : Fahren Sie mit der Synchronisierung anderer Projekte fort, auch wenn die Synchronisierung eines Projekts fehlschlägt.
  • threadcount : Teilen Sie die Synchronisierung für eine schnellere Fertigstellung auf mehrere Threads auf. Stellen Sie sicher, dass Sie Ihren Rechner nicht überlasten – lassen Sie etwas CPU für andere Aufgaben reserviert. Um die Anzahl der verfügbaren CPUs anzuzeigen, führen Sie zunächst nproc --all aus.
  • -q : Ruhig ausführen, indem Statusmeldungen unterdrückt werden.
  • -s : Synchronisierung mit einem bekanntermaßen guten Build, wie durch das manifest-server Element im aktuellen Manifest angegeben.

Für weitere Optionen führen Sie repo help sync aus.

hochladen

repo upload [project-list]

Lädt Änderungen auf den Überprüfungsserver hoch. Für die angegebenen Projekte vergleicht Repo die lokalen Zweige mit den Remote-Zweigen, die während der letzten Repo-Synchronisierung aktualisiert wurden. Repo fordert Sie auf, einen oder mehrere Zweige auszuwählen, die nicht zur Überprüfung hochgeladen wurden.

Alle Commits für die ausgewählten Zweige werden dann über eine HTTPS-Verbindung an Gerrit übertragen. Sie müssen ein HTTPS-Passwort konfigurieren, um die Upload-Autorisierung zu aktivieren. Um ein neues Benutzername/Passwort-Paar zur Verwendung über HTTPS zu generieren, besuchen Sie den Passwortgenerator .

Wenn Gerrit die Objektdaten über seinen Server empfängt, wandelt es jeden Commit in eine Änderung um, sodass Prüfer einen bestimmten Commit kommentieren können. Um mehrere Checkpoint-Commits in einem einzigen Commit zu kombinieren, verwenden Sie git rebase -i bevor Sie den Upload ausführen.

Wenn Sie repo upload ohne Argumente ausführen, werden alle Projekte nach hochzuladenden Änderungen durchsucht.

Um Änderungen nach dem Hochladen zu bearbeiten, verwenden Sie ein Tool wie git rebase -i oder git commit --amend um Ihre lokalen Commits zu aktualisieren. Nachdem Ihre Änderungen abgeschlossen sind:

  • Stellen Sie sicher, dass der aktualisierte Zweig der aktuell ausgecheckte Zweig ist.
  • Verwenden Sie repo upload --replace PROJECT um den Change-Matching-Editor zu öffnen.
  • Geben Sie für jeden Commit in der Serie die Gerrit-Änderungs-ID in die Klammern ein:

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

Nach Abschluss des Uploads verfügen die Änderungen über einen zusätzlichen Patch-Satz.

Wenn Sie nur den aktuell ausgecheckten Git-Zweig hochladen möchten, verwenden Sie das Flag --current-branch (oder kurz --cbr ).

diff

repo diff [project-list]

Zeigt ausstehende Änderungen zwischen dem Commit und dem Arbeitsbaum mit git diff an.

herunterladen

repo download target change

Lädt die angegebene Änderung vom Überprüfungssystem herunter und stellt sie im lokalen Arbeitsverzeichnis Ihres Projekts zur Verfügung.

Um beispielsweise die Änderung 23823 in Ihr platform/build Verzeichnis herunterzuladen:

repo download platform/build 23823

Beim Ausführen repo sync werden alle mit repo download abgerufenen Commits entfernt. Oder Sie können den Remote-Zweig mit git checkout m/main auschecken.

für alle

repo forall [project-list] -c command

Führt den angegebenen Shell-Befehl in jedem Projekt aus. Die folgenden zusätzlichen Umgebungsvariablen werden von repo forall zur Verfügung gestellt:

  • REPO_PROJECT wird auf den eindeutigen Namen des Projekts gesetzt.
  • REPO_PATH ist der Pfad relativ zum Stammverzeichnis des Clients.
  • REPO_REMOTE ist der Name des Remote-Systems aus dem Manifest.
  • REPO_LREV ist der Name der Revision aus dem Manifest, übersetzt in einen lokalen Tracking-Zweig. Verwenden Sie diese Variable, wenn Sie die Manifestrevision an einen lokal ausgeführten Git-Befehl übergeben müssen.
  • REPO_RREV ist der Name der Revision aus dem Manifest, genau wie im Manifest geschrieben.

Optionen:

  • -c : Befehl und Argumente zur Ausführung. Der Befehl wird über /bin/sh ausgewertet und alle Argumente danach werden als Shell-Positionsparameter übergeben.
  • -p : Projektkopfzeilen vor der Ausgabe des angegebenen Befehls anzeigen. Dies wird erreicht, indem Pipes an die stdin-, stdout- und sterr-Streams des Befehls gebunden werden und die gesamte Ausgabe in einen kontinuierlichen Stream geleitet wird, der in einer einzelnen Pager-Sitzung angezeigt wird.
  • -v : Zeigt Nachrichten an, die der Befehl in stderr schreibt.

prune

repo prune [project-list]

Beschneidet (löscht) Themen, die bereits zusammengeführt sind.

Start

repo start branch-name [project-list]

Beginnt einen neuen Zweig für die Entwicklung, beginnend mit der im Manifest angegebenen Revision.

Das Argument BRANCH_NAME liefert eine kurze Beschreibung der Änderung, die Sie an den Projekten vornehmen möchten. Wenn Sie es nicht wissen, sollten Sie den Namen default verwenden.

Das Argument project-list gibt an, welche Projekte an diesem Themenzweig beteiligt sind.

Status

repo status [project-list]

Vergleicht den Arbeitsbaum mit dem Staging-Bereich (Index) und dem letzten Commit für diesen Zweig (HEAD) in jedem angegebenen Projekt. Zeigt eine Zusammenfassungszeile für jede Datei an, bei der zwischen diesen drei Zuständen ein Unterschied besteht.

Um nur den Status des aktuellen Zweigs anzuzeigen, führen Sie repo status . . Die Statusinformationen werden nach Projekt aufgelistet. Für jede Datei im Projekt wird ein aus zwei Buchstaben bestehender Code verwendet.

In der ersten Spalte gibt ein Großbuchstabe an, wie sich der Staging-Bereich vom letzten Commit-Status unterscheidet.

Brief Bedeutung Beschreibung
- Keine Änderung Das Gleiche gilt für HEAD und Index
A Hinzugefügt Nicht im HEAD, im Index
M Geändert Im HEAD, im Index geändert
D Gelöscht Im HEAD, nicht im Index
R Umbenannt Nicht in HEAD, Pfad im Index geändert
C Kopiert Nicht in HEAD, von einem anderen im Index kopiert
T Modus geändert Gleicher Inhalt in HEAD und Index, Modus geändert
U Nicht zusammengeführt Konflikt zwischen HEAD und Index; Auflösung erforderlich

In der zweiten Spalte gibt ein Kleinbuchstabe an, wie sich das Arbeitsverzeichnis vom Index unterscheidet.

Brief Bedeutung Beschreibung
- Neu/unbekannt Nicht im Index, im Arbeitsbaum
M Geändert Im Index, im Arbeitsbaum, geändert
D Gelöscht Im Index, nicht im Arbeitsbaum

Behandeln Sie Repo-Fehler

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 .

Der Fehler repo: error: no branches ready for upload wird angezeigt, wenn der Befehl repo start zu Beginn der Sitzung nicht ausgeführt wurde. Zur Wiederherstellung können Sie die Commit-ID überprüfen, einen neuen Zweig starten und ihn dann zusammenführen.