Когда я хотел получить исходный код Android, я знал, что мне нужно использовать "репо". Итак, что такое репо? Почему они используют репо, а не просто используют GIT?, и есть ли графический интерфейс для репо, что позволяет мне приостанавливать/возобновлять синхронизацию, потому что каждый раз, когда я иногда отключается, кажется, что репо начинает синхронизацию с самого начала!
Что такое репо и почему Google использует его?
Ответ 1
Репо и git - то, чем они являются, для чего они предназначены - объясняются на source.android.com
Чтобы работать с кодом Android, вы необходимо будет использовать как git, так и Repo.
Git - это система управления версиями с открытым исходным кодом, предназначенная для обрабатывать очень большие проекты, которые распределены по нескольким Хранилища. В контексте Android, мы используем git для локального такие как локальное ветвление, фиксирует, изменяет и редактирует.
Репо - это инструмент, который мы построили поверх Git. Репо помогает нам управлять много репозиториев git, делает загружается в наш контроль версий системы и автоматизирует части Рабочий процесс разработки Android. Репо не предназначен для замены Git, только чтобы сделать легче работать с git в контекст Android. Команда repo является исполняемым Python script, который вы можете поместить все в свой путь.
Нет никакого GUI для Repo, насколько я могу судить, но на сайте выше достаточно немного указаний для управления тем, что Repo делает из командной строки.
Ответ 2
Как упоминается на веб-странице Android, repo
не заменяет git
. Это всего лишь инструмент над git
и помогает вам управлять несколькими хранилищами git.
Например, предположим, что у меня есть большой проект с множеством функций, и у меня есть несколько команд, работающих над каждой функцией, и я создал один репозиторий для каждой функции. Например, предположим, что мои репозитории wifi
, telephony
, power management
и т.д. Это действие имеет смысл, когда ваши функции имеют разные жизненные циклы. Например, если я не коснусь функции wifi
в моей следующей версии, но я изменю все остальное. Поэтому в этом сценарии мой проект или продукт распространяется в нескольких разных хранилищах git.
Итак, чтобы получить централизованное фото моего проекта (один конкретный момент моего проекта, например, веху), мне нужно получить ревизию (git хэш или тег) каждого репозитория. Помните, что у нас есть один репозиторий для каждой функции. Вручную я мог бы это сделать, но мог бы быть очень болезненным. Таким образом, с репо вы можете иметь один MANIFEST
, который связывается со всеми ревизиями каждого репозитория git (по одному для каждой функции) и имеет конкретную картину всего моего проекта.
Просто я могу сказать, что это способ управления централизованными несколькими репозиториями git, которые децентрализованы.
С репо у вас есть больше возможностей, а не только для проверки в определенной точке. Для получения дополнительной информации перейдите в http://source.android.com/source/using-repo.html.
Ответ 3
Относительно точки паузы и перезапуска, в то время как в окне терминала, выполняющем синхронизацию репо, вы можете нажать "ctrl + z", чтобы приостановить синхронизацию репо. Для перезапуска просто введите "fg" в одно и то же окно.
Ответ 4
Перейдите к:
http://source.android.com/source/git-repo.html
и вы можете загрузить repo
script. Это Python script, который использует команду git
для выполнения распределенной ревизии исходного кода.
После выполнения repo sync
выполните ps -auwf
, чтобы увидеть процессы:
Для меня я увидел:
\_ python -E /sde3/root/download/android/android/.repo/repo/main.py --rep \_ git fetch korg \_ git fetch korg \_ git index-pack --stdin -v --fix-thin --keep=fetch-pack 5227 on
Да, repo sync
часто ломается. Но он надежный, просто перезапустите команду, и он снова возобновит синхронизацию - те, которые были обновлены, не будут повторно применены, поэтому они пропустят их и продолжат с остальными.
Ответ 5
Репо sync имеет различные полезные опции:
-f восстанавливается из разъединений
-c просто загружает ветку, которую вы просили
-j < #CPUS > ускоряет синхронизацию, увеличивая количество процессоров, используемых командой