Что такое Repo и почему Google его использует?

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


person Osama Gamal    schedule 15.03.2010    source источник


Ответы (5)


Репо и git — что это такое и для чего они нужны — объясняется на source.android.com.

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

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

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

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

person brabster    schedule 15.03.2010
comment
source.android.com/source/developing.html: правильный URL на момент публикации. свидание - person RichieHH; 10.11.2013
comment
@eibrahim, не могли бы вы уточнить? (Я заинтересован в использовании Repo для своего собственного проекта, хотел бы услышать отзывы...) - person Zvika; 29.02.2016
comment
Я не эксперт в этом. Я присоединился к проекту, который его использует. кривая обучения крутая, а то, как все устроено, очень нелогично и кажется слишком продуманным. Может быть, это то, как мы его используем, но мне это действительно не нравится, и кажется, что другие разработчики разделяют мое мнение. Я бы порекомендовал просто git и, возможно, подмодули, если у вас несколько репозиториев. извините, что не слишком конкретно, но, как я уже сказал, я не эксперт - просто недовольный пользователь/разработчик. - person Emad; 29.02.2016
comment
Я окончательно подтверждаю мнение Эйбрагима. repo добавляет уровень сложности к git, который и без того очень сложен. Более того, многие базовые команды не реализованы в repo (типа log или rebase) и вам придется писать свои скрипты выше repo, если вы хотите нормально работать (с git делать синхронизацию с локальными изменениями сложно, с repo это ВОВ ). Другой пример: repo переведет мерзавцев в отсоединенное состояние, что затруднит управление ими. - person calandoa; 01.06.2016

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

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

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

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

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

person Matias Burni    schedule 15.11.2012

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

person Jordan Craig    schedule 29.12.2011

Go to:

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

person Community    schedule 08.03.2011
comment
Он написан на Python, а не на bash. Ваш пс тоже это показывает. - person claus; 02.09.2015

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

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

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

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

person user3913384    schedule 11.11.2015