Codeänderungen senden

Auf dieser Seite wird der gesamte Prozess zum Einreichen einer Codeänderung für das Android Open Source Project (AOSP) beschrieben, einschließlich der Schritte zum Anfordern einer Überprüfung und zum Nachverfolgen Ihrer Änderungen.

AOSP basiert auf Gerrit, einem webbasierten Code-Review-System für Projekte, die Git verwenden.

Lizenzvereinbarungen für Mitwirkende unterzeichnen

Bevor Sie Codeänderungen für AOSP beitragen, müssen Sie die Beitragenden-Lizenzvereinbarungen und Header lesen und eine der folgenden Vereinbarungen unterzeichnen:

Branch erstellen

Führen Sie für jede Codeänderung, die Sie vornehmen möchten, die folgenden Schritte aus:

  1. Starten Sie einen neuen Branch im entsprechenden Git-Repository. Ein Branch ist keine Kopie der Originaldateien, sondern ein Zeiger auf einen bestimmten Commit. Daher ist das Erstellen lokaler Branches und das Wechseln zwischen ihnen ein unkomplizierter Vorgang. Mithilfe von Branches können Sie Änderungen voneinander abgrenzen. Führen Sie diesen Befehl aus, um einen Branch zu starten:

    repo start BRANCH_NAME

    Sie können mehrere unabhängige Branches gleichzeitig im selben Repository starten. Der Branch BRANCH_NAME ist lokal in Ihrem Arbeitsbereich und ist weder in Gerrit noch im endgültigen Quellbaum enthalten. Branches sind auch spezifisch für das Projekt, in dem Sie sich befinden. Wenn Sie also Dateien in verschiedenen Projekten im Rahmen derselben Änderung ändern müssen, benötigen Sie in jedem Projekt, in dem Sie Dateien ändern, einen Branch.

  2. (Optional) Prüfen Sie, ob der Branch erstellt wurde:

    repo status .

    Der neu erstellte Branch sollte angezeigt werden. Beispiel:

    project frameworks/native/                      branch mynewbranch

Änderung vornehmen und testen

So nehmen Sie die Änderung vor und testen sie:

  1. Um sicherzugehen, dass Sie mit der aktuellen Codebasis arbeiten, synchronisieren Sie die gesamte Codebasis:

    repo sync

    Wenn während der Synchronisierung Konflikte auftreten, folgen Sie den Schritten 2 bis 4 unter Synchronisierungskonflikte beheben.

  2. Suchen Sie den Code, den Sie ändern möchten. Wenn Sie Code suchen möchten, können Sie Android Code Search verwenden. Mit Android Code Search können Sie den AOSP-Quellcode so ansehen, wie er bei der tatsächlichen Verwendung dargestellt wird. Weitere Informationen finden Sie unter Erste Schritte mit Code Search. Wenn Sie den gesamten Code im neuesten AOSP-Release-Branch in Android Code Search aufrufen möchten, rufen Sie https://cs.android.com/android/platform/superproject/ auf.

  3. Quelldateien ändern oder hinzufügen Bei allen vorgenommenen Änderungen:

  4. Build Android

  5. Build testen

Änderung stagen und committen

Ein Commit ist die Grundeinheit der Versionskontrolle in Git und besteht aus einem Snapshot der Verzeichnisstruktur und des Dateiinhalts für das gesamte Projekt. So übernehmen Sie die Änderung:

  1. Standardmäßig registriert Git die Änderungen, die Sie vornehmen, verfolgt sie aber nicht. Damit Git Ihre Änderungen verfolgt, müssen Sie sie markieren oder für die Aufnahme in ein Commit bereitstellen. Führen Sie diesen Befehl aus, um die Änderung zu stagen:

    git add -A

    Mit diesem Befehl werden Änderungen nachverfolgt, die Sie an Dateien vorgenommen haben.

  2. Nehmen Sie die Dateien im Staging-Bereich und führen Sie einen Commit durch oder speichern Sie sie in Ihrer lokalen Datenbank:

    git commit -s

    Standardmäßig wird ein Texteditor geöffnet und Sie werden aufgefordert, eine Commit-Nachricht anzugeben.

  3. Geben Sie eine Commit-Nachricht im folgenden Format an:

    • Zeile 1: Überschrift. Geben Sie eine einzeilige Zusammenfassung der Änderung an (maximal 50 Zeichen). Verwenden Sie Präfixe, um den Bereich zu beschreiben, den Sie geändert haben. Geben Sie dann eine Beschreibung der Änderung an, die Sie in diesem Commit vorgenommen haben. Hier ist ein Beispiel für eine Änderung der Benutzeroberfläche:

      ui: Removes deprecated widget
      
    • Zeile 2: Leere Zeile. Lassen Sie nach der Überschrift eine leere Zeile.

    • Zeile 3: Body. Geben Sie eine lange Beschreibung an, die maximal 72 Zeichen pro Zeile umfasst. Beschreiben Sie, welches Problem durch die Änderung behoben wird und wie. Der Textkörper ist zwar optional, aber für andere Nutzer, die sich die Änderung noch einmal ansehen müssen, ist er hilfreich. Fügen Sie unbedingt eine kurze Notiz mit allen Annahmen oder Hintergrundinformationen hinzu, die wichtig sein könnten, wenn ein anderer Mitwirkender an dieser Funktion arbeitet.

    Einen Blogbeitrag mit Beispielen für gute Commit-Beschreibungen finden Sie unter How to Write a Git Commit Message.

  4. Speichern Sie den Commit.

Eine eindeutige Änderungs-ID sowie Ihr Name und Ihre E-Mail-Adresse, die während repo init angegeben wurden, werden automatisch in Ihre Commit-Nachricht eingefügt.

Änderung zur Überprüfung hochladen

Nachdem Sie Ihre Änderung in Ihrem persönlichen Git-Verlauf gespeichert haben, laden Sie sie in Gerrit hoch:

  1. Führen Sie den folgenden Befehl aus, um alle Ihre Commits in allen Ihren Projekten hochzuladen:

    repo upload

    Alle Änderungen in allen Projekten sind im Upload enthalten.

    .

    Sie werden aufgefordert, Hook-Skripts auszuführen.

  2. Drücken Sie A und dann die Eingabetaste.

    Sie werden aufgefordert, den Upload zu genehmigen:

    Upload project frameworks/native/ to remote branch android16-release:
    branch BRANCH_NAME ( 1 commit, Wed Aug 7 09:32:33 2019 -0700):
           ff46b36d android codelab change
    to https://android-review.googlesource.com/ (y/N)?
    
  3. Drücken Sie y und dann die Eingabetaste, um den Upload zu genehmigen.

Sie sollten eine Nachricht ähnlich der folgenden erhalten: remote: SUCCESS.

Überprüfung beantragen

Nach einem erfolgreichen Upload stellt Repo einen Link zu Ihren Änderungen in Gerrit bereit. Klicken Sie auf den Link, um Ihre Änderungen auf dem Überprüfungsserver anzusehen, Kommentare hinzuzufügen oder bestimmte Prüfer für Ihre Änderung anzufordern. Alle Änderungen am Code müssen von den entsprechenden Code-Inhabern überprüft werden.

So beantragen Sie eine Überprüfung:

  1. Klicken Sie in Gerrit auf SUGGEST OWNERS (Inhaber vorschlagen):

    Inhaberlink in Gerrit vorschlagen

    Abbildung 1: In Gerrit einen Link zu den Eigentümern vorschlagen.

    Das Dialogfeld für den Prüfer wird angezeigt. Dieses Dialogfeld enthält eine Liste der Code-Inhaber, die Ihre Änderung überprüfen können.

  2. Klicken Sie auf einen Code-Inhaber, um ihn Ihrer Überprüfung hinzuzufügen.

    Die Schaltfläche SENDEN ist aktiviert.

  3. Optional: Geben Sie die E‑Mail-Adresse einer anderen Person ein, die Ihre Änderung prüfen soll.

  4. Klicken Sie auf SENDEN, um die Änderung zur Überprüfung zu senden.

Code-Inhaber prüfen Ihre Codeänderungen. Wenn sie akzeptiert werden, wird die Änderung per Cherry-Picking übernommen und in den internen Entwicklungszweig eingefügt.

Status der Änderung ermitteln

So ermitteln Sie den Status der Dateien in Ihrer Änderung:

  • (Häkchen): Vom Code-Inhaber genehmigt
  • (Kreuzsymbol): Nicht vom Code-Inhaber genehmigt
  • (Uhr-Symbol): Genehmigung durch Codeinhaber ausstehend

In der folgenden Abbildung sind diese Statussymbole für Dateien in einer Änderung dargestellt:

Beispiel für Dateien mit Symbolen, die die Genehmigung durch den Code-Inhaber zeigen

Abbildung 2: Beispiel für Dateien mit Symbolen, die die Genehmigung des Codeinhabers zeigen.

Feedback berücksichtigen und Ersatzänderung hochladen

Wenn ein Prüfer eine Änderung an Ihrem Update anfordert, können Sie Ihr Commit in Git ändern. Dadurch wird ein neues Patchset für dieselbe Änderung erstellt.

zu diesem Branch wechseln.

So reagieren Sie auf Feedback und ändern Ihre Änderung:

  1. Führen Sie die Schritte 2 bis 4 unter Änderung vornehmen und testen aus.

  2. Führen Sie die folgenden Befehle aus, um Ihre Änderung zu korrigieren:

    git add -A
    git commit --amend
  3. Änderung hochladen

Wenn Sie die geänderte Änderung hochladen, wird das Original sowohl in Gerrit als auch in Ihrem lokalen Git-Verlauf ersetzt.

Synchronisierungskonflikte beheben

Wenn andere Änderungen am Quellbaum eingereicht werden, die mit Ihren Änderungen in Konflikt stehen, erhalten Sie eine entsprechende Meldung. So beheben Sie die Konflikte:

  1. So stellen Sie sicher, dass Sie mit dem aktuellen Code arbeiten:

    repo sync .

    Mit dem Befehl repo sync werden die Updates vom Quellserver abgerufen und dann wird versucht, Ihr HEAD automatisch auf das neue Remote-HEAD zu rebasen.

  2. Wenn die automatische Rebase-Operation nicht erfolgreich ist, führen Sie eine manuelle Rebase-Operation durch:

    repo rebase .
  3. Lösen Sie Zusammenführungskonflikte. Wenn Sie keine bevorzugte Methode zum Beheben von Merge-Konflikten haben, können Sie git mergetool verwenden, um Konflikte zwischen Dateien manuell zu beheben.

  4. Wenn Sie die Konflikte in den Dateien behoben haben, führen Sie diesen Befehl aus, um die neuen Commits anzuwenden:

    git rebase --continue

Änderung senden

Nachdem ein Beitrag den Überprüfungs- und Bestätigungsprozess durchlaufen hat, reicht der Codeinhaber den Code für Sie ein, entweder im Zweig, in dem die Änderung überprüft wurde, oder in einem internen Zweig.

Nachdem Ihr Beitrag zusammengeführt wurde, können Sie im Android Continuous Integration-Dashboard nachsehen, wann Ihre Beiträge in den Baum integriert werden.