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 Source Control Tools . Weitere Informationen zu Repo finden Sie in der README-Datei für Repo .

Die Repo-Nutzung hat die folgende Form:

repo command options

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

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

Hilfe

Auf dieser Seite werden lediglich die wichtigsten Optionen hervorgehoben. Ausführliche Informationen finden Sie in der Befehlszeilenhilfe. Wenn Repo installiert ist, finden Sie die neueste Dokumentation beginnend mit einer Zusammenfassung aller Befehle, indem Sie Folgendes ausführen:

repo help

Sie können detaillierte Informationen zu jedem Befehl anzeigen, indem Sie dies in einem Repo-Baum ausführen:

repo help command

Der folgende Befehl liefert beispielsweise eine Beschreibung und eine Liste von Optionen für das init Argument von Repo, das Repo im aktuellen Verzeichnis initialisiert. (Siehe init für Details.)

repo help init

Um nur die Liste der verfügbaren Optionen anzuzeigen, führen Sie Folgendes aus:

repo command --help
Zum Beispiel:
repo init --help

drin

repo init -u url [options]

Installiert Repo im aktuellen Verzeichnis. Dadurch wird ein .repo/ mit Git-Repositorys für den Repo-Quellcode und die standardmäßigen Android-Manifestdateien erstellt.

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 die Standardeinstellung default.xml .
  • -b : Geben Sie eine Revision an, d. h. einen bestimmten manifest-branch .

Hinweis: Für alle verbleibenden Repo-Befehle muss das aktuelle Arbeitsverzeichnis entweder das übergeordnete Verzeichnis von .repo/ oder ein Unterverzeichnis des übergeordneten Verzeichnisses sein.

synchronisieren

repo sync [project-list]

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

Wenn Sie die repo sync ausführen, geschieht Folgendes:

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

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

    git remote update
    git rebase origin/branch
    

    wobei branch der aktuell ausgecheckte Branch im lokalen Projektverzeichnis ist. Wenn die lokale Verzweigung keine Verzweigung im Remote-Repository verfolgt, erfolgt keine Synchronisierung für das Projekt.

  • Wenn der Git-Rebase-Vorgang zu Zusammenführungskonflikten führt, verwenden Sie die normalen Git-Befehle (z. B. git rebase --continue ), um die Konflikte zu lösen.

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

Hier sind die wichtigsten Optionen. Weitere repo help sync Sie in der repo help sync :

  • -c : Ruft nur den aktuellen Manifestzweig vom Server ab.

  • -d : Wechselt die angegebenen Projekte zurück zur Manifest-Revision. Dies ist hilfreich, wenn sich das Projekt derzeit in einem Themenzweig befindet, die Manifestüberarbeitung jedoch vorübergehend benötigt wird.

  • -f : Mit der Synchronisierung anderer Projekte fortfahren, auch wenn die Synchronisierung eines Projekts fehlschlägt.

  • -j threadcount : -j threadcount die Synchronisierung auf Threads auf, um einen schnelleren Abschluss zu -j threadcount . Stellen Sie sicher, dass Sie Ihren Computer nicht überfordern – lassen Sie etwas CPU für andere Aufgaben reserviert. Um die Anzahl der verfügbaren CPUs nproc --all , führen Sie zuerst nproc --all : nproc --all

  • -q : Leise laufen, indem Statusmeldungen unterdrückt werden.

  • -s : Synchronisieren mit einem bekanntermaßen guten Build, wie durch das manifest-server Element im aktuellen Manifest angegeben.

hochladen

repo upload [project-list]

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

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

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 zu einem einzigen Commit zu kombinieren, verwenden Sie git rebase -i bevor Sie den Upload ausführen.

Wenn Sie den 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 Bearbeitungen abgeschlossen sind:

  • Stellen Sie sicher, dass der aktualisierte Branch der aktuell ausgecheckte Branch ist.
  • Geben Sie für jeden Commit in der Serie die Gerrit-Change-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 replacments
    # Insert change numbers in the brackets to add a new patch set.
    # To create a new change record, leave the brackets empty.
    

Nachdem der Upload abgeschlossen ist, verfügen die Änderungen über ein zusätzliches Patch-Set.

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

unterschied

repo diff [project-list]

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

herunterladen

repo download target change

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

Um beispielsweise die Änderung 23823 in Ihr Plattform-/Build-Verzeichnis herunterzuladen:

repo download platform/build 23823

Die repo sync entfernt alle Commits, die mit dem repo download abgerufen wurden. Oder Sie können den Remote-Zweig mit git checkout m/master .

Hinweis: Es gibt Replikationsverzögerungen auf allen Servern weltweit, daher gibt es eine leichte Spiegelungsverzögerung zwischen dem Zeitpunkt, an dem eine Änderung im Web in Gerrit sichtbar ist und dem repo download die Änderung für alle Benutzer findet.

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 fernen Systems aus dem Manifest.

  • REPO_LREV ist der Name der Revision aus dem Manifest, übersetzt in einen lokalen Tracking-Zweig. Verwenden Sie dies, wenn Sie die Manifest-Revision 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 : auszuführender Befehl und Argumente. Der Befehl wird über /bin/sh ausgewertet und alle Argumente danach werden als Shell-Positionsparameter übergeben.

  • -p : Projektheader vor der Ausgabe des angegebenen Befehls anzeigen. Dies wird erreicht, indem Pipes an die Streams stdin, stdout und sterr des Befehls gebunden werden und die gesamte Ausgabe in einen kontinuierlichen Stream geleitet wird, der in einer einzelnen Pager-Sitzung angezeigt wird.

  • -v : Nachrichten -v , die der Befehl in stderr schreibt.

Pflaume

repo prune [project-list]

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

Start

repo start
branch-name [project-list]

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

Das Argument BRANCH_NAME enthält eine kurze Beschreibung der Änderung, die Sie an den Projekten vornehmen BRANCH_NAME . Wenn Sie es nicht wissen, sollten Sie den Namen default .

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

Hinweis: Ein Punkt ( . ) steht für das Projekt im aktuellen Arbeitsverzeichnis.

Status

repo status [project-list]

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

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

In der ersten Spalte zeigt ein Großbuchstabe an, wie sich die Staging-Area vom letzten festgeschriebenen Zustand unterscheidet.

Brief Bedeutung Beschreibung
- Keine Änderung Gleich in HEAD und Index
EIN Hinzugefügt Nicht im HEAD, im Index
M Geändert In HEAD, im Index geändert
D Gelöscht Im HEAD, nicht im Index
R Umbenannt Nicht im HEAD, Pfad im Index geändert
C Kopiert Nicht im 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 zeigt ein Kleinbuchstabe an, wie sich das Arbeitsverzeichnis vom Index unterscheidet.

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