Repo ergänzt Git, indem es die Arbeit über mehrere Repositorys hinweg vereinfacht. Siehe Quelle Control Tools für eine Erklärung der Beziehung zwischen Repo und Git. Für weitere Einzelheiten über Repo finden Sie in der Repo README .
Die Repo-Nutzung hat die folgende Form:
repo command options
Optionale Elemente werden in Klammern [ ] angezeigt. Zum Beispiel sind viele Befehle nehmen project-list als Argument. Sie können angeben , project-list als eine Liste von Namen oder eine Liste von Pfaden zu lokalen Quellverzeichnisse für die Projekte:
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
Zum Beispiel ergibt der folgende Befehl eine Beschreibung und eine Liste der Optionen für das init
Argument von Repo, die den 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 --helpZum Beispiel:
repo init --help
drin
repo init -u url [options]
Installiert Repo im aktuellen Verzeichnis. Dadurch entsteht ein .repo/
Verzeichnis mit Git - Repositories für den Repo - Quellcode und die Standard - Android - Manifest - Dateien.
Optionen:
-
-u
: Geben Sie eine URL , von der ein Manifest Repository abgerufen werden . Der gemeinsame Manifest wird bei gefundenhttps://android.googlesource.com/platform/manifest
. -
-m
: Wählen Sie eine Manifest - Datei im Repository. Wenn kein offensichtlicher Name ausgewählt wird, ist der Standarddefault.xml
. -
-b
: Geben Sie eine Revision, die eine besondere ist manifest-branch .
Hinweis: Für alle übrigen Repo Befehle muss das aktuelle Arbeitsverzeichnis entweder das übergeordnete Verzeichnis von .repo/
oder ein Unterverzeichnis des übergeordneten Verzeichnisses.
synchronisieren
repo sync [project-list]
Downloads neue Änderungen und Updates , die Arbeitsdateien in Ihrer lokalen Umgebung, im Wesentlichen erreicht git fetch
über alle Git - Repositories. Wenn Sie laufen repo sync
- repo sync
ohne Argumente, synchronisiert er die Dateien für alle Projekte.
Beim Ausführen von repo sync
- repo sync
, das ist , was passiert:
Wenn das Projekt noch nie synchronisiert wurden, dann
repo sync
entsprichtgit clone
. Alle Zweige im Remote-Repository werden in das lokale Projektverzeichnis kopiert.Wenn das Projekt vor synchronisiert wurde, dann
repo sync
ist äquivalent zu:git remote update git rebase origin/branch
wo
branch
ist der derzeit abgemeldeten Zweig im lokalen Projektverzeichnis. Wenn die lokale Verzweigung keine Verzweigung im Remote-Repository verfolgt, erfolgt keine Synchronisierung für das Projekt.Wenn die Git Operationsergebnisse in merge Konflikte rebase, verwenden Sie die normalen Git - Befehle (zB
git rebase --continue
) , um die Konflikte zu lösen.
Nach einem erfolgreichen Lauf von repo sync
- repo sync
, wird der Code in spezielle Projekte auf dem Laufenden und mit dem Code im Remote - Repository synchronisiert.
Hier sind die wichtigsten Optionen. Siehe repo help sync
- repo help sync
- repo help sync
für mehr:
-c
: Fetch nur den aktuellen Manifest Zweig vom Server.-d
: Switch speziellen Projekte zurück zu der offensichtlichen Revision. Dies ist hilfreich, wenn sich das Projekt derzeit in einem Themenzweig befindet, die Manifestüberarbeitung jedoch vorübergehend benötigt wird.-f
: Fahren Sie mit dem Synchronisieren von anderen Projekten , auch wenn ein Projekt für die Synchronisierung fehlschlägt.-j threadcount
: Split die Synchronisierung über Threads für eine schnellere Fertigstellung. Stellen Sie sicher, dass Sie Ihren Computer nicht überfordern – lassen Sie etwas CPU für andere Aufgaben reserviert. Um zu sehen, die Anzahl der verfügbaren CPUs, zum ersten Mal ausgeführt:nproc --all
-q
: Führen Sie ruhig durch Statusmeldungen zu unterdrücken.-s
: Sync zu einem bekannten guten Aufbau , wie durch das angegebene manifest-server - Element im aktuellen manifest.
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 Passwort - Generator ein neues Benutzername / Passwort - Paar zu erzeugen , die Verwendung von HTTPS über.
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. So kombinieren mehrere Checkpoints Commits in einem einzigen commit verwenden git rebase -i
, bevor Sie den Upload laufen.
Wenn Sie laufen repo upload
- repo upload
ohne Argumente, sucht es alle Projekte für Änderungen hochladen.
Zum Bearbeiten Änderungen , nachdem sie hochgeladen habe, verwenden Sie ein Tool wie git rebase -i
oder git commit --amend
zu Ihrem 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, haben die Änderungen ein zusätzliches Patch-Set.
Wenn Sie nur die aktuell ausgecheckt Git - Zweigs hochladen möchten, verwenden Sie das Flag --current-branch
(oder --cbr
kurz).
unterschied
repo diff [project-list]
Zeigt ausstehende Änderungen zwischen dem Commit und der Arbeits Baum 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.
Zum Beispiel zum Download Änderung 23823 in Ihre Plattform / Build - Verzeichnis:
repo download platform/build 23823
Laufende repo sync
entfernt alle Commits abgerufene mit repo download
. Oder Sie können den Remote - Zweig mit Check - out git checkout m/master
.
Hinweis: Es gibt Replikationsverzögerungen zu allen weltweiten Servern, so dass es eine leichte Verzögerung zwischen Spiegeln , wenn eine Änderung auf der Bahn in sichtbar ist Gerrit und als repo download
- repo download
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 zur Verfügung gestellt repo forall
:
REPO_PROJECT
ist mit dem eindeutigen Namen des Projektes festgelegt.REPO_PATH
ist der Pfad relativ zu der Wurzel des Client.REPO_REMOTE
ist der Name des entfernten Systems aus dem Manifest.REPO_LREV
ist der Name der Revision aus dem Manifest, zu einem lokalen Tracking - Zweig übersetzt. 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 auszuführen. Der Befehl wird durch ausgewertet/bin/sh
und alle Argumente , nachdem es als Schalenpositionsparameter durchgeleitet.-p
: Show - Projekt - Header vor der Ausgabe des angegebenen Befehls. 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 anzeigen , schreibt der Befehl an stderr.
Pflaume
repo prune [project-list]
Beschneidet (löscht) Themen, die bereits zusammengeführt wurden.
Anfang
repo start branch-name [project-list]
Startet einen neuen Branch für die Entwicklung, beginnend mit der im Manifest angegebenen Revision.
Das BRANCH_NAME
Argument liefert eine kurze Beschreibung der Änderung zu den Projekten machen Sie versuchen. Wenn Sie nicht wissen, sollten Sie den Namen mit default
.
Die project-list
Argument legt fest , welche Projekte in diesem Thema Zweig teilnehmen.
Hinweis: (.) Eine Periode 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 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 zu sehen , den Status nur den aktuellen Zweig, laufen repo status .
- 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 |
m | Geändert | Im Index, im Arbeitsbaum, geändert |
D | Gelöscht | Im Index, nicht im Arbeitsbaum |
Umgang mit 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
den repo start
repo: error: no branches ready for upload
erscheinen , wenn der Befehl repo start
- repo start
nicht zu Beginn der Sitzung ausgeführt wurde. Zur Wiederherstellung können Sie die Commit-ID überprüfen, einen neuen Branch starten und ihn dann zusammenführen.