Wie verwende ich "Repo", um die minimale Android-Quelle zu klonen?

8

Ich kann den Android-Quellcode mit dem "Repo" -Tool klonen. Was ich jedoch tun möchte, ist, den Quellcode auf eine minimale Art und Weise zu klonen, als einen 11GB-Fußabdruck zu haben. Es scheint Dinge herunterzuladen, die mit jedem Android-Gerät und jeder früheren Version zusammenhängen. Ich habe versucht, ich könnte dies reduzieren, indem ich einen bestimmten Zweig wie folgt auschecke:

%Vor%

Was aber letztendlich passiert ist, dass ich immer noch alles involviert habe, nur an einem bestimmten Schnappschuss (verständlich). Aber gibt es eine Möglichkeit, die Menge, die geklont wird, zu begrenzen?

    
gnychis 12.04.2012, 03:50
quelle

2 Antworten

4

Der androide Source-Tree besteht aus vielen separaten Git-Repositories, die alle von Repo verwaltet werden. Sie können die Datenmenge, die für ein bestimmtes Git-Repository heruntergeladen wird, nicht wirklich reduzieren.

Sie können jedoch nur eine Teilmenge der verfügbaren Git-Repos herunterladen, indem Sie repo sync <project> verwenden. I.e. Wenn du nur das Frameworks / Base-Paket haben willst, solltest du repo sync frameworks/base machen können, nachdem du das erste repo init gemacht hast.

Wenn Sie tatsächlich die Quelle erstellen möchten, möchten Sie wahrscheinlich das vollständige.

Sie können möglicherweise ein oder zwei Gigs speichern, indem Sie die nicht benötigten Geräte-Repositorys entfernen. Sie können dies tun, indem Sie & lt; source & gt; /. Repo / manifest.xml bearbeiten und die Repositories für die Geräte entfernen, die Sie nicht möchten.

    
JesusFreke 12.04.2012, 04:16
quelle
3

Es gibt eine Reihe von Dingen, die Sie tun können. Erstens wird "repo sync" mit einem Argument -c die ausgecheckte Sandbox auf den Zweig "current" beschränken. Die Repo-Synchronisierung wird kein Material für andere Zweige herunterladen.

Sie können auch das Manifest .repo / manifests / default.xml bearbeiten. Ich mache eine Sicherungskopie wie "default.bak" und entferne dann die Zeilen aus der default.xml-Datei, die ich nicht brauche. Da ich nicht auf einem Macintosh aufbaue, weiß ich, dass ich keines der "Darwin" -Tools brauche, also entferne ich jede Zeile, die "Darwin" enthält. Dann "repo sync" lädt keine Darwin-Projekte oder installiert den Quellcode in der Sandbox.

Wenn Sie bereits eine Sandbox synchronisiert haben und deren Größe anpassen möchten, können Sie Projekte wie oben beschrieben entfernen und dann "repo sync -c -l" ausführen. Die Repo-Synchronisierung entfernt nur die Verzeichnisse, die Sie gerade entfernt haben . Das Flag -l führt nur den lokalen Teil der Synchronisierung aus, dh es synchronisiert nur die lokalen Git-Projekte mit dem Quellbaum. Das Netzwerk wird nicht verwendet. Siehe "-n" -Flag für die andere Hälfte einer normalen Synchronisierung, die die Netzwerk-Synchronisierung durchführt, um die lokalen Git-Projekte mit dem Upstream-Repository zu aktualisieren.

Um auch die Git-Backing-Objektspeicher für die unerwünschten Projekte zu entfernen (die viel Platz beanspruchen) verwende ich dies:

%Vor%

Dadurch werden alle Projekte gefunden, die sich in Ihrem Backup-Manifest befinden, aber aus Ihrem aktiven Manifest entfernt wurden, und entfernt die Git-Projekte und alle zugehörigen Backing-Daten. Dies gewinnt viel Platz.

Wenn Sie zu viel entfernen, stellen Sie einfach die Projektlinie aus Ihrem Backup-Manifest wieder her und fügen Sie sie in Ihr aktives Manifest zurück. Dann wird eine Reposynchronisation Ihre Git Projekte und Ihre Sandbox wieder in Ordnung bringen. Sie können den Build testen, um zu sehen, ob Sie zu viel entfernt haben, indem Sie "mma -B -n" in Ihrem Projektverzeichnis ausführen. Dies wird versuchen, eine vollständige Abhängigkeit von Ihrem Ziel aufzubauen, indem alle Ziele gezwungen werden, selbst dann zu bauen, wenn sie es nicht brauchen, und es wird als Trockenlauf ausgeführt. Wenn der Build fehlschlägt, haben Sie etwas entfernt, das Ihr Projekt benötigt.

Sie können auch eine lokale Spiegel-Sandbox einrichten und kleine funktionierende Referenz-Sandboxen von Ihrem Spiegelserver erstellen. Die funktionierenden Sandboxen enthalten keine Git-Objektspeicher, beziehen sich jedoch auf die zentralen im Spiegel. Verwenden Sie "repo init -u ... --spiegel", um den Spiegel einzurichten, und "repo init --reference = ~ / android-mirror -u ...", um auf den Spiegel zu verweisen. Das -u-Flag in letzterem ermöglicht die Verwendung eines echten Upstream-Repositorys als Autorität, während die Mirror-Referenz als lokaler Cache verwendet wird. Lokale Spiegelungen verhindern auch das vom AOSP-Projekt erzwungene Download-Kontingent, mit dem sie schneller synchronisiert werden können.

    
DrChandra 29.01.2015 14:23
quelle

Tags und Links