Ответ 1
Если вы запустите repo init
второй раз с другой ветвью, вы можете просто repo sync
и он не будет загружать весь исходный код еще раз.
Я чувствую, что у меня довольно хорошее понимание git, но когда дело доходит до команды repo, я теряюсь. Я читал о команде repo, но я все еще не уверен, как все это связывает.
Мой самый большой вопрос: могу ли я изменить свои текущие ветки от пряников на ICS и, возможно, вернуться?
Я вижу команду:
repo init -u https://android.googlesource.com/platform/manifest
По моему мнению, это создаст репо с главной ветвью. Если я хочу указать ветку, я могу сделать:
repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
Загрузка примерно в 8 Гб, я считаю, поэтому я не хочу, чтобы я удалял свой репо, если они разделяют код. есть ли способ переключения ветвей в репо?
Если вы запустите repo init
второй раз с другой ветвью, вы можете просто repo sync
и он не будет загружать весь исходный код еще раз.
Параметр repo -b указывает ветку репозитория .repo/manifestests git, который должен быть извлечен. Файл default.xml в этом репозитории определяет, какая ветка должна быть включена в каждую из других git repositiories (projects).
Кажется, что репо написано таким образом, что если вы проверите другую ветвь манифеста, повторите синхронизацию с репо, он снова потянет весь код по сети.
Вы можете запустить repo forall -c 'git checkout branch_name'
, который будет проверять указанную ветку для всех проектов, объявленных в вашем текущем манифесте, но если есть проекты, добавленные/удаленные между пряниками и ics (которые есть), то вы не получите кода для этих проектов.
Запуск git checkan branchname в репозитории .repo/manifestests, тогда выполнение синхронизации репо может позволить вам сохранить некоторые сетевые издержки.
В противном случае, из-за ограничений репо, единственный реальный способ сделать это - сохранить две рабочие копии aosp или подготовиться к повторной синхронизации.