Лучший способ эффективного изменения версий хранилища Android после загрузки с помощью repo / git - PullRequest
8 голосов
/ 16 ноября 2011

У меня возникла ситуация, когда мне нужно собрать набор статических копий исходного кода Android разных версий выпуска.

Простое выполнение repo init -b $version; repo sync будет длиться вечно (init требует взаимодействия, и синхронизация будет бесполезно расходовать мою пропускную способность между версиями).

Моя текущая настройка заключается в том, чтобы загрузить одну базовую версию (скажем, 1.6_r1), скопировать ее в новую папку (android-1.6_r2), а затем повторно запустить init и выполнить синхронизацию (repo init -b android-1.6_r2; repo sync).Однако иногда происходит сбой синхронизации с такими ошибками:

ndk / build / platform / android-3 / arch-arm / usr / incl
Прерывание
Синхронизация рабочего дерева: 100% (153/153), сделано.

ошибка: разработка /: платформа / проверка разработки caf83cb2b0ffde1a4cfb7cb258cbe012e283d9e1 Синхронизация репо вернула FAIL на android-2.1_r2.1s

Я нашел несколько сообщений с похожими ошибками, которые указывают, что это может бытьвызвано тем, что репо не синхронизировано с «измененными» файлами в файловой системе, но мне интересно, вызваны ли мои ошибки изменением версий под носом репо.

Это правильный путь для изменения версий репозитория?В более общем смысле, есть ли эффективный по времени / пропускной способности способ превратить репозиторий android-1.6_r1 в android-1.6_r2?

Ответы [ 2 ]

9 голосов
/ 16 ноября 2011

( ОБНОВЛЕНИЕ : мой первоначальный ответ подразумевает, что мы можем постепенно инициировать новый репо из предыдущего, например, с 1.6_r1 до 1.6_r2, но в правильной настройке должно быть одно локальное "главное зеркало" "Репо, где мы можем указать ссылку при запуске нового init. Я изменил текст ниже, чтобы избежать неверного значения.)

Вместо копирования попробуйте добавить --reference=/path/to/main/repo к вашей команде repo init в новом каталоге.

Например, если у вас уже есть репозиторий в каталоге /repos/aosp-main, загруженном ранее (и синхронизированном с googlesource.com), вы можете сделать:

$ 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

И затем, если вы хотите другую версию:

$ 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

Таким образом, нам нужно синхронизироваться с адресом googlesource.com только тогда, когда есть новые материалы, которые мы еще не загрузили, и он должен просто использовать уже синхронизированный основной репо для локальной инициализации дополнительных репо.

0 голосов
/ 16 ноября 2011

Вы уверены, что обновили скрипт репо просто для уверенности?

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