Команды Android-репо и переключение веток - PullRequest
20 голосов
/ 01 февраля 2012

Я чувствую, что хорошо разбираюсь в git, но когда дело доходит до команды репо, я заблудился.Я читал о команде репо, но я все еще не уверен, как она связывает все воедино.

Мой самый большой вопрос - могу ли я изменить текущие ветви с пряников на 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 ГБ, я считаю, поэтому я не хочу, чтобы мой репо удалялся, если они делятся кодом.Есть ли способ переключения филиалов в репо?

Ответы [ 2 ]

44 голосов
/ 17 июля 2012

Если вы запускаете repo init второй раз с другой веткой, вы можете просто repo sync, и он не будет загружать весь исходный код снова.

5 голосов
/ 24 февраля 2012

Параметр repo -b указывает ветку git-репозитория .repo / manifest, которую необходимо извлечь.Файл default.xml в этом репозитории определяет, в какую ветвь должен быть включен каждый из других git-репозиториев (проектов).

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

Вы можете запустить repo forall -c 'git checkout branch_name', который будет извлекать указанную ветку для всех проектов, которые объявлены в вашем текущем манифесте, но если есть проекты, добавленные / удаленные междуgingerbread и ics (которые есть), тогда вы не получите код для этих проектов.

Запуск git checkout branchname в репозитории .repo / manifest, а затем запуск синхронизации repo может позволить вам сэкономить некоторые сетевые издержки.

В противном случае, из-за ограничений репо, единственный реальный способ сделать это - сохранить две рабочие копии aosp или быть готовыми к повторной синхронизации.

...