Repo ergänzt Git, indem es die Arbeit über mehrere Repositories hinweg vereinfacht. Siehe Source Control Tools für eine Erläuterung der Beziehung zwischen Repo und Git. Weitere Einzelheiten zu Repo finden Sie in der Repo-README .
Die Repo-Nutzung hat folgende Form:
repo command options
Optionale Elemente werden in Klammern [ ] angezeigt. Beispielsweise nehmen viele Befehle 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
Diese Seite hebt lediglich die wichtigsten Optionen hervor. 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 diesen 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
Oder um nur die Liste der verfügbaren Optionen anzuzeigen, führen Sie Folgendes aus:
repo command --helpZum Beispiel:
repo init --help
drin
repo init -u url [options]
Installiert Repo im aktuellen Verzeichnis. Dadurch wird ein .repo/
mit Git-Repositories für den Repo-Quellcode und die Standard-Android-Manifestdateien erstellt.
Optionen:
-
-u
: Geben Sie eine URL an, von der ein Manifest-Repository abgerufen werden soll. Das gemeinsame Manifest finden Sie unterhttps://android.googlesource.com/platform/manifest
. -
-m
: Wählen Sie eine Manifestdatei im Repository aus. Wenn kein Manifestname ausgewählt ist, ist der Standardwertdefault.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, wodurch im Wesentlichen ein git fetch
über alle Git-Repositories hinweg durchgeführt wird. 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, ist
repo sync
gleichbedeutend mitgit clone
. Alle Branches im Remote-Repository werden in das lokale Projektverzeichnis kopiert.Wenn das Projekt zuvor synchronisiert wurde, ist die
repo sync
äquivalent zu:git remote update git rebase origin/branch
Dabei ist
branch
der aktuell ausgecheckte Branch im lokalen Projektverzeichnis. Wenn der lokale Zweig keinen Zweig im Remote-Repository verfolgt, findet keine Synchronisierung für das Projekt statt.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 auf dem neuesten Stand und mit dem Code im Remote-Repository synchronisiert.
Hier sind die wichtigsten Optionen. Weitere Informationen finden Sie in repo help sync
:
-c
: Nur den aktuellen Manifest-Zweig vom Server abrufen.-d
: Angegebene Projekte zurück zur Manifest-Revision schalten. Dies ist hilfreich, wenn sich das Projekt derzeit in einem Themenzweig befindet, die Manifest-Revision jedoch vorübergehend benötigt wird.-f
: Mit der Synchronisierung anderer Projekte fortfahren, auch wenn ein Projekt nicht synchronisiert werden kann.-j threadcount
: Aufteilen der Synchronisierung auf Threads für eine schnellere Fertigstellung. Stellen Sie sicher, dass Sie Ihren Computer nicht überlasten – lassen Sie etwas CPU für andere Aufgaben reserviert. Um die Anzahl der verfügbaren CPUs anzuzeigen, führen Sie zuerst Folgendes aus:nproc --all
-q
: Leise ausführen, indem Statusmeldungen unterdrückt werden.-s
: Mit einem bekanntermaßen guten Build synchronisieren, wie vom manifest-server Element im aktuellen Manifest angegeben.
Hochladen
repo upload [project-list]
Für die angegebenen Projekte vergleicht Repo die lokalen Branches mit den Remote-Branches, die während der letzten Repo-Synchronisierung aktualisiert wurden. Repo fordert Sie auf, einen oder mehrere Branches auszuwählen, die noch nicht zur Überprüfung hochgeladen wurden.
Alle Commits auf den ausgewählten Branches werden dann über eine HTTPS-Verbindung an Gerrit übermittelt. Sie müssen ein HTTPS-Passwort konfigurieren, um die Upload-Autorisierung zu aktivieren. Besuchen Sie den Passwortgenerator , um ein neues Benutzername/Passwort-Paar zur 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 zusammenzufassen, 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 derzeit ausgecheckte Branch ist.
- Geben Sie für jeden Commit in der Reihe 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 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, haben die Änderungen einen zusätzlichen Patchsatz.
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
.
Download
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
Durch das Ausführen der repo sync
werden alle Commits entfernt, 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
, der die Änderung für alle Benutzer finden kann.
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-Branch. 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
: Befehl und Argumente zur Ausführung. Der Befehl wird über/bin/sh
ausgewertet und alle Argumente danach werden als Shell-Positionsparameter weitergegeben.-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 an stderr schreibt.
Pflaume
repo prune [project-list]
Beschneidet (löscht) bereits zusammengeführte Themen.
Anfang
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
enthält 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 project-list
gibt an, welche Projekte an diesem Themenzweig teilnehmen.
Hinweis: Ein Punkt ( . ) ist eine Abkürzung für das Projekt im aktuellen Arbeitsverzeichnis.
Status
repo status [project-list]
Vergleicht den Arbeitsbaum mit dem Staging-Bereich (Index) und dem letzten Commit auf diesem Zweig (HEAD) in jedem angegebenen Projekt. Zeigt eine Zusammenfassungszeile für jede Datei an, bei der ein Unterschied zwischen diesen drei Zuständen besteht.
Um nur den Status des aktuellen Zweigs anzuzeigen, führen Sie repo status .
. Die Statusinformationen werden nach Projekten 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 Bereitstellungsbereich vom letzten festgeschriebenen Zustand unterscheidet.
Brief | Bedeutung | Beschreibung |
---|---|---|
- | Keine Änderung | Dasselbe in HEAD und Index |
EIN | Hinzugefügt | Nicht in HEAD, im Index |
M | Geändert | In HEAD, geändert im Index |
D | Gelöscht | Im HEAD, nicht im Index |
R | Umbenannt | Nicht in HEAD, Pfad im Index geändert |
C | Kopiert | Nicht in HEAD, kopiert von einem anderen im Index |
T | Modus geändert | Gleicher Inhalt in HEAD und Index, Modus geändert |
U | 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 |
m | Geändert | Im Index, im Arbeitsbaum, geändert |
d | Gelöscht | Im Index, nicht im Arbeitsbaum |
Behandlung von Repo-Fehlern
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
erscheint, wenn der Befehl repo start
nicht zu Beginn der Sitzung ausgeführt wurde. Zur Wiederherstellung können Sie die Commit-ID überprüfen, einen neuen Zweig starten und ihn dann zusammenführen.