Что такое репо и почему Google использует его? - PullRequest
34 голосов
/ 16 марта 2010

Когда я хотел получить исходный код Android, я знал, что должен использовать «репо». Так что же такое репо? Почему они используют репо, а не только GIT? И есть графический интерфейс для репо, который позволяет мне приостанавливать / возобновлять синхронизацию, потому что каждый раз, когда я иногда отключаюсь, кажется, что репо начинает синхронизироваться с самого начала!

Ответы [ 5 ]

20 голосов
/ 16 марта 2010

Репо и мерзавцы - кто они, для чего они - объяснены на source.android.com

Для работы с кодом Android вы нужно будет использовать как Git, так и Repo.

Git - это система контроля версий с открытым исходным кодом, предназначенная для обрабатывать очень большие проекты, которые распределены по нескольким Хранилища. В контексте Android, мы используем Git для локальных такие операции, как локальное ветвление, коммиты, различия и правки.

Репо - это инструмент, который мы создали поверх Git. Репо помогает нам управлять многие репозитории Git, делает загружает в наш контроль версий система, и автоматизирует части Рабочий процесс разработки Android. Репо не предназначен для замены Git, только чтобы проще работать с Git в контекст Android. Команда репо это исполняемый скрипт Python, который Вы можете положить в любом месте на вашем пути.

Насколько я могу судить, для Repo нет графического интерфейса, но на приведенном выше сайте довольно много советов по управлению действиями Repo из командной строки.

19 голосов
/ 15 ноября 2012

Как упоминается на веб-странице Android, repo не заменяет git. Это просто инструмент над git, который помогает вам управлять несколькими git-репозиториями.

Например, предположим, у меня большой проект, который имеет много функций, и у меня есть несколько команд, работающих над каждой функцией, и я создал один репозиторий для каждой функции. Например, предположим, что мои репозитории wifi, telephony, power management и т. Д. Это действие имеет смысл, когда ваши функции имеют разные жизненные циклы. Например, если я не буду касаться функции wifi в моем следующем выпуске, но я изменю все остальное. Таким образом, в этом сценарии мой проект или продукт распространяется в нескольких различных репозиториях git.

Итак, чтобы получить централизованную фотографию моего проекта (один конкретный момент моего проекта, например, этап), мне нужно получить ревизию (git hash или tag) каждого репозитория. Помните, что у нас есть один репозиторий для каждой функции. Вручную я мог сделать это, но мог быть очень болезненным. Таким образом, с репо вы можете иметь один MANIFEST, который связан со всеми ревизиями каждого git репо (по одному для каждой функции) и иметь конкретную картину всего моего проекта.

Проще говоря, я могу сказать, что это способ управления централизованными репозиториями с несколькими git, которые децентрализованы.

С репо у вас есть больше возможностей, а не только оформить заказ в определенный момент. Для получения дополнительной информации перейдите на http://source.android.com/source/using-repo.html.

3 голосов
/ 29 декабря 2011

Относительно точки паузы и перезапуска, пока в окне терминала выполняется синхронизация репо, вы можете нажать "ctrl + z", чтобы приостановить синхронизацию репо. Для перезапуска просто введите «fg» в том же окне.

2 голосов
/ 11 ноября 2015

Синхронизация репо имеет различные полезные опции:

-f восстанавливается после отключений

-c просто загружает ветку, которую вы просили

-j <#CPUS> ускоряет синхронизацию, увеличивая число процессоров, используемых командой

2 голосов
/ 08 марта 2011

Перейти к:

http://source.android.com/source/git-repo.html

и вы можете скачать скрипт repo. Это скрипт Python, использующий команду 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 часто ломается. Но это надежно, просто перезапустите команду, и она возобновит синхронизацию снова - те, которые были обновлены, не будут повторно применены, поэтому он пропустит их и продолжит выполнение остальных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...