Situation:
Du hast eine eigene Entwicklungsumgebung, um ein ROM zu bauen. Auf dem entsprechenden Code-Review Gerrit (z.B. das Code-Review Gerrit von LineageOS ) siehst Du ein Thema (z.B. die neuesten ASB Sicherheits-Patches), welches noch nicht im Status "merged" ist. Diese Änderungen sind bekanntlich noch nicht auf den entsprechenden Github-Repositories verfügbar, um sie z.B. mit repo sync zu ziehen.
Du möchtest diese Patches gerne auf der eigenen Entwicklungsumgebung einspielen und testen.
Hinweis:
Bekanntlich führen "viele Wege nach Rom" - es gibt von daher auch unterschiedliche Herangehensweisen, ich führe eine davon auf - so ein Thema lebt natürlich von der Diskussion und Anmerkungen . . .
Vorgehensweise:
- Im Wurzelverzeichnis der Entwicklungsumgebung (also dort, wo normalerweise das Kommando repo sync aufgerufen wird), wird zunächst die Entwicklungsumgebung mit source build/envsetup.sh initialisiert.
- Nehmen wir an, das Gerrit Thema heißt 'Q_asb_2023-02' (das war das ASB-Sicherheits-Bulletin 02.2023 für LineageOS 17.1, dies ist mittlerweile eingespielt, aber es geht hier um ein Beispiel).
Wir geben nun das Kommando repopick -it Q_asb_2023-02 ein, und es werden alle Patches aus dem Gerrit gezogen und eingespielt. - Hat man in seiner Entwicklungsumgebung für ein bestimmtes Repository (z.B. frameworks/base) einen eigenen Fork oder ist eine Manifest-Änderung Bestandteil des Themas, so erscheint für das betreffende Repository eine Fehlermeldung der Art "WARNING: Skipping 348877 since there is no project directory for: LineageOS/android_frameworks_base"
In diesem Fall muss man den oder die Patch(es) manuell einpielen - gehen wir also im gezeigten Beispiel davon aus, dass es einen eigenen Fork for frameworks/base gibt und deshalb die Patches 348875, 348876, 348877 und 348878 aus dem besagten Thema mit der o.a. Fehlermeldung nicht eingespielt werden konnten. Dann spielt man diese für das Verzeichnis frameworks/base wie folgt ein: repopick 348875 348876 348877 348878 -P frameworks/base gleiches gilt analog für andere Problemfälle. - Ergänzung: Mit dem -e Parameter kann man einzelne Patches aus einem Thema ausschließen, z.B. repopick -it P_asb_2023-02 -e 349337
Viel Erfolg!