Die Arbeit mit Android-Code erfordert die Verwendung von Git (ein Open-Source-Versionskontrollsystem) und Repo (ein von Google entwickeltes Repository-Verwaltungstool, das auf Git läuft). Eine Erläuterung der Beziehung zwischen Repo und Git sowie Links zur unterstützenden Dokumentation für jedes Tool finden Sie unter Quellcodeverwaltungstools .
Fließen
Die Android-Entwicklung umfasst den folgenden grundlegenden Arbeitsablauf:
- Starten Sie einen neuen Themenzweig mit
repo start
. - Bearbeiten Sie die Dateien.
- Bühnenänderungen mit
git add
. - Übernehmen Sie Änderungen mit
git commit
. - Laden Sie Änderungen mithilfe des
repo upload
auf den Überprüfungsserver hoch.
Aufgaben
Die Arbeit mit Git und Repo in den Android-Code-Repositorys umfasst die Durchführung der folgenden allgemeinen Aufgaben.
Befehl | Beschreibung |
---|---|
repo init | Initialisiert einen neuen Client. |
repo sync | Synchronisiert den Client mit den Repositorys. |
repo start | Startet einen neuen Zweig. |
repo status | Zeigt den Status des aktuellen Zweigs an. |
repo upload | Lädt Änderungen auf den Überprüfungsserver hoch. |
git add | Stellt die Dateien bereit. |
git commit | Überträgt die bereitgestellten Dateien. |
git branch | Zeigt die aktuellen Zweige an. |
git branch [branch] | Erstellt einen neuen Themenzweig. |
git checkout [branch] | Wechselt HEAD zum angegebenen Zweig. |
git merge [branch] | Führt [branch] mit dem aktuellen Zweig zusammen. |
git diff | Zeigt den Unterschied der nicht bereitgestellten Änderungen an. |
git diff --cached | Zeigt Unterschiede der bereitgestellten Änderungen an. |
git log | Zeigt den Verlauf des aktuellen Zweigs an. |
git log m/[codeline].. | Zeigt die Commits an, die nicht gepusht werden. |
Informationen zur Verwendung von Repo zum Herunterladen der Quelle finden Sie unter Herunterladen der Quelle und in der Repo-Befehlsreferenz .
Clients synchronisieren
So synchronisieren Sie die Dateien für alle verfügbaren Projekte:
repo sync
So synchronisieren Sie die Dateien für ausgewählte Projekte:
repo sync PROJECT0 PROJECT1 ... PROJECTN
Themenzweige erstellen
Starten Sie einen Themenzweig in Ihrer lokalen Arbeitsumgebung, wenn Sie mit einer Änderung beginnen, beispielsweise wenn Sie mit der Arbeit an einem Fehler oder einer neuen Funktion beginnen. Ein Themenzweig ist keine Kopie der Originaldateien; Es ist ein Zeiger auf einen bestimmten Commit, was das Erstellen lokaler Zweige und das Wechseln zwischen ihnen zu einem einfachen Vorgang macht. Durch die Verwendung von Zweigen können Sie einen Aspekt Ihrer Arbeit von den anderen isolieren. Einen interessanten Artikel über die Verwendung von Topic-Branches finden Sie unter Trennen von Topic-Branches .
Um einen Themenzweig mit Repo zu starten, navigieren Sie zum Projekt und führen Sie Folgendes aus:
repo start BRANCH_NAME .
Der abschließende Punkt ( .
) stellt das Projekt im aktuellen Arbeitsverzeichnis dar.
So überprüfen Sie, ob der neue Zweig erstellt wurde:
repo status .
Verwendung von Themenzweigen
So weisen Sie den Zweig einem bestimmten Projekt zu:
repo start BRANCH_NAME PROJECT_NAME
Eine Liste aller Projekte finden Sie unter android.googlesource.com . Wenn Sie bereits zum Projektverzeichnis navigiert sind, verwenden Sie einfach einen Punkt, um das aktuelle Projekt darzustellen.
So wechseln Sie zu einem anderen Zweig in Ihrer lokalen Arbeitsumgebung:
git checkout BRANCH_NAME
So zeigen Sie eine Liste vorhandener Zweige an:
git branch
oder
repo branches
Beide Befehle geben die Liste der vorhandenen Zweige mit dem Namen des aktuellen Zweigs und einem vorangestellten Sternchen (*) zurück.
Staging-Dateien
Standardmäßig bemerkt Git die Änderungen, die Sie in einem Projekt vornehmen, verfolgt sie jedoch nicht. Um Git anzuweisen, Ihre Änderungen beizubehalten, müssen Sie diese Änderungen für die Aufnahme in einen Commit markieren oder bereitstellen .
So stellen Sie Änderungen bereit:
git add
Dieser Befehl akzeptiert Argumente für Dateien oder Verzeichnisse im Projektverzeichnis. Trotz des Namens fügt git add
nicht nur Dateien zum Git-Repository hinzu; Es kann auch zum Vorführen von Dateiänderungen und -löschungen verwendet werden.
Kundenstatus anzeigen
So listen Sie den Status von Dateien auf:
repo status
So zeigen Sie nicht festgeschriebene Änderungen an (lokale Änderungen, die nicht zum Festschreiben markiert sind):
repo diff
Um festgeschriebene Änderungen anzuzeigen (gefundene Änderungen, die zum Festschreiben markiert sind ), stellen Sie sicher, dass Sie sich im Projektverzeichnis befinden, und führen Sie dann git diff
mit dem cached
Argument aus:
cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached
Änderungen vornehmen
Ein Commit ist die Grundeinheit der Revisionskontrolle in Git und besteht aus einer Momentaufnahme der Verzeichnisstruktur und des Dateiinhalts für das gesamte Projekt. Verwenden Sie diesen Befehl, um ein Commit in Git zu erstellen:
git commit
Wenn Sie zur Eingabe einer Commit-Nachricht aufgefordert werden, geben Sie eine kurze (aber hilfreiche) Nachricht für an AOSP übermittelte Änderungen ein. Wenn Sie keine Commit-Nachricht hinzufügen, schlägt das Commit fehl.
Änderungen an Gerrit werden hochgeladen
Aktualisieren Sie auf die neueste Version und laden Sie dann die Änderung hoch:
repo sync
repo upload
Diese Befehle geben eine Liste der von Ihnen festgeschriebenen Änderungen zurück und fordern Sie auf, die Zweige auszuwählen, die auf den Überprüfungsserver hochgeladen werden sollen. Wenn es nur einen Zweig gibt, wird eine einfache y/n
Eingabeaufforderung angezeigt.
Synchronisierungskonflikte lösen
Wenn der repo sync
Synchronisierungskonflikte zurückgibt:
- Zeigen Sie die nicht zusammengeführten Dateien an (Statuscode = U).
- Bearbeiten Sie die Konfliktregionen nach Bedarf.
- Wechseln Sie in das entsprechende Projektverzeichnis. Fügen Sie die betroffenen Dateien hinzu, übertragen Sie sie und führen Sie dann ein Rebasing der Änderungen durch:
git add .
git commit
git rebase --continue
- Nachdem das Rebase abgeschlossen ist, starten Sie die gesamte Synchronisierung erneut:
repo sync PROJECT0 PROJECT1 ... PROJECTN
Aufräumen von Kunden
Nachdem Sie die Änderungen an Gerrit zusammengeführt haben, aktualisieren Sie Ihr lokales Arbeitsverzeichnis und verwenden Sie dann repo prune
, um veraltete Themenzweige sicher zu entfernen:
repo sync
repo prune
Kunden löschen
Da alle Statusinformationen in Ihrem Client gespeichert sind, müssen Sie nur das Verzeichnis aus Ihrem Dateisystem löschen:
rm -rf WORKING_DIRECTORY
Durch das Löschen eines Kunden werden alle Änderungen, die Sie nicht zur Überprüfung hochgeladen haben , dauerhaft gelöscht .