Workflow für die Quellcodeverwaltung

Die Arbeit mit Android-Code erfordert die Verwendung von Git (einem Open-Source-Versionskontrollsystem) und Repo (einem von Google entwickelten Repository-Verwaltungstool, das auf Git aufsetzt). Siehe Source Control Tools für eine Erläuterung der Beziehung zwischen Repo und Git und Links zu unterstützender Dokumentation für jedes Tool.

Fließen

Die Android-Entwicklung umfasst den folgenden grundlegenden Arbeitsablauf:

  1. Starten Sie einen neuen Themenzweig mit repo start .
  2. Bearbeiten Sie die Dateien.
  3. Stufenänderungen mit git add .
  4. Committen Sie Änderungen mit git commit .
  5. Laden Sie Änderungen mithilfe von 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 Repositories.
repo start Startet einen neuen Zweig.
repo status Zeigt den Status der aktuellen Verzweigung 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 Branches an.
git branch [branch] Erstellt einen neuen Themenzweig.
git checkout [branch] Schaltet HEAD auf den angegebenen Zweig um.
git merge [branch] Führt [branch] in den aktuellen Zweig zusammen.
git diff Zeigt den Unterschied der nicht inszenierten Änderungen an.
git diff --cached Zeigt den Unterschied der gestuften Änderungen an.
git log Zeigt den Verlauf des aktuellen Zweigs an.
git log m/[codeline].. Zeigt die Commits, die nicht gepusht werden.

Informationen zur Verwendung von Repo zum Herunterladen von Quellen 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

Erstellen von Themenzweigen

Starten Sie einen Themenzweig in Ihrer lokalen Arbeitsumgebung, wenn Sie mit einer Änderung beginnen, z. B. 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 ein bestimmtes Commit, was das Erstellen lokaler Zweige und das Wechseln zwischen ihnen zu einer leichten Operation macht. Durch die Verwendung von Verzweigungen können Sie einen Aspekt Ihrer Arbeit von den anderen isolieren. Einen interessanten Artikel über die Verwendung von Themenzweigen finden Sie unter Trennen von Themenzweigen .

Um einen Themenzweig mit Repo zu starten, navigieren Sie zum Projekt und führen Sie Folgendes aus:

repo start BRANCH_NAME .

Der nachgestellte Punkt ( . ) steht für das Projekt im aktuellen Arbeitsverzeichnis.

So überprüfen Sie, ob der neue Zweig erstellt wurde:

repo status .

Verwenden von Themenzweigen

So weisen Sie die Verzweigung 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 bestehender Branches an:

git branch

oder

repo branches

Beide Befehle geben die Liste der vorhandenen Zweige mit dem Namen des aktuellen Zweigs zurück, dem ein Sternchen (*) vorangestellt ist.

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 ein Commit markieren oder bereitstellen .

Um Änderungen vorzunehmen:

git add

Dieser Befehl akzeptiert Argumente für Dateien oder Verzeichnisse innerhalb des Projektverzeichnisses. Trotz des Namens git add nicht nur Dateien zum Git-Repository hinzu; Es kann auch verwendet werden, um Dateiänderungen und -löschungen zu inszenieren.

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 (lokalisierte Ä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 festschreiben

Ein Commit ist die grundlegende Einheit 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 nach einer Commit-Nachricht gefragt werden, geben Sie eine kurze (aber hilfreiche) Nachricht für Änderungen ein, die an AOSP übermittelt werden. Wenn Sie keine Commit-Nachricht hinzufügen, schlägt das Commit fehl.

Änderungen werden auf Gerrit hochgeladen

Aktualisieren Sie auf die neueste Version und laden Sie dann die Änderung hoch:

repo sync
repo upload

Diese Befehle geben eine Liste der Änderungen zurück, die Sie festgeschrieben haben, und fordern Sie auf, die Zweige auszuwählen, die auf den Überprüfungsserver hochgeladen werden sollen. Wenn es nur einen Zweig gibt, sehen Sie eine einfache y/n -Eingabeaufforderung.

Synchronisierungskonflikte lösen

Wenn der repo sync zurückgibt:

  1. Zeigen Sie die nicht zusammengeführten Dateien an (Statuscode = U).
  2. Bearbeiten Sie die Konfliktregionen nach Bedarf.
  3. Wechseln Sie in das entsprechende Projektverzeichnis. Fügen Sie die betroffenen Dateien hinzu und schreiben Sie sie fest, dann rebasen Sie die Änderungen:
    git add .
    git commit
    git rebase --continue
    
  4. Nachdem die Rebase abgeschlossen ist, starten Sie die gesamte Synchronisierung erneut:
    repo sync PROJECT0 PROJECT1 ... PROJECTN
    

Kunden aufräumen

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

Mandanten 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 Clients werden alle Änderungen, die Sie nicht zur Überprüfung hochgeladen haben, dauerhaft gelöscht .