2011-11-15 11 views
8

Mam sytuację, w której muszę zbudować zestaw statycznych kopii kodu źródłowego Androida różnych wersji.Najlepszy sposób na zmianę wersji repozytorium androida po pobraniu za pomocą repo/git

prostu robi repo init -b $version; repo sync zajmie wieki (init wymaga interakcji oraz synchronizacje będzie marnotrawstwem mojego przepustowość całej wersjach).

Moja obecna konfiguracja jest pobranie jednej wersji podstawowej (słownie 1.6_r1), skopiować go do nowego folderu (Android 1.6_r2), a następnie uruchom ponownie init i synchronizację (repo init -b android-1.6_r2; repo sync). Synchronizacja nie powiedzie się czasami jednak z błędów, takich jak:

ndk/build/platforms/android-3/arch-arm/usr/incl
Aborting
Syncing work tree: 100% (153/153), done.

error: development/: platform/development checkout caf83cb2b0ffde1a4cfb7cb258cbe012e283d9e1 Repo sync returned FAIL on android-2.1_r2.1s

Znalazłem kilka postów o podobnych błędów, które wskazują na to może być spowodowane przez repo będącego zsynchronizowany z „przemienieni” plików w systemie plików, ale I” Zastanawiam się, czy moje błędy są spowodowane zmianą wersji pod nosem repo.

Czy to właściwy sposób na zmianę wersji repozytorium? Mówiąc bardziej ogólnie, czy istnieje efektywny czas/przepustowość, aby przekształcić repozytorium android-1.6_r1 w android-1.6_r2?

Odpowiedz

0

Czy masz pewność, aby zaktualizować skrypt repo tylko na pewno?

$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo 
$ chmod a+x ~/bin/repo 
+0

Tak - cała moja konfiguracja jest świeża w ciągu ostatnich 24 godzin. – bhoward

9

(UPDATE: moja pierwsza odpowiedź oznacza, że ​​możemy stopniowo startowych nowego repo z poprzedniej jednego, na przykład 1.6_r1 do 1.6_r2, ale poprawna konfiguracja powinna zostały posiadające jeden lokalny „głównego lustra "repo, w którym możemy wskazać odniesienie podczas uruchamiania nowego init. Zmodyfikowałem poniższy tekst, aby uniknąć nieprawidłowej implikacji.)

Zamiast kopiować, spróbuj dodać --reference=/path/to/main/repo do polecenia w nowym katalogu.

Na przykład, jeśli masz już repo /repos/aosp-main katalogu pobranego wcześniej (i synchronizowane do googlesource.com), można zrobić:

$ mkdir /repos/aosp-1.6_r1 
$ cd /repos/aosp-1.6_r1 
$ repo init -b android-1.6_r1 -u https://android.googlesource.com/platform/manifest --reference=/repos/aosp-main 
$ repo sync 

a następnie, jeśli chcesz inną wersję:

$ mkdir /repos/aosp-1.6_r2 
$ cd /repos/aosp-1.6_r2 
$ repo init -b android-1.6_r2 -u https://android.googlesource.com/platform/manifest --reference=/repos/aosp-main 
$ repo sync 

W ten sposób musimy tylko zsynchronizować się z adresem googlesource.com, gdy pojawią się nowe rzeczy, które nie zostały jeszcze pobrane, i należy użyć zsynchronizowanego głównego repo, aby zainicjować dodatkowe repozytorium lokalnie.