Рубрики
git

google repo

Ссылка:

https://gerrit.googlesource.com/git-repo
https://source.android.com/docs/setup/reference/repo?hl=ru
https://source.android.com/docs/setup/reference/repo

Установка из пакетов:

Repo дополняет Git, упрощая работу с несколькими репозиториями. 

# Debian/Ubuntu.
$ sudo apt-get install repo

# Gentoo.
$ sudo emerge dev-vcs/repo
You can install it manually as well as it's a single script.

Установка:

$ mkdir -p ~/.bin
$ PATH="${HOME}/.bin:${PATH}"
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.bin/repo
$ chmod a+rx ~/.bin/repo

Использование:

Использование репо принимает следующую форму:
repo command options

Необязательные элементы показаны в скобках []. 
Например, многие команды принимают project-list в качестве аргумента. 
Вы можете указать project-list как список имен или список путей к локальным исходным каталогам проектов:

repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]




repo init -u url [options] - Устанавливает Repo в текущий каталог. 
Эта команда создает каталог .repo/ с репозиториями Git для исходного кода Repo и стандартных файлов манифеста Android.
Параметры:
-u : укажите URL-адрес, по которому нужно получить репозиторий манифестов. 
     Общий манифест находится по адресу https://android.googlesource.com/platform/manifest 
-m : выбрать файл манифеста в репозитории. 
     Если имя манифеста не выбрано, по умолчанию используется default.xml
-b : указать ревизию, то есть конкретную manifest-branch




Синхронизировать:

repo sync [project-list]
Загружает новые изменения и обновляет рабочие файлы в вашей локальной среде, по сути выполняя git fetch во всех репозиториях Git. 
Если вы запустите repo sync без аргументов, она синхронизирует файлы для всех проектов.
Когда вы запускаете repo sync , происходит вот что:
Если проект никогда не синхронизировался, то repo sync эквивалентна git clone ; все ветки удаленного репозитория копируются в локальный каталог проекта.
Если проект уже был синхронизирован ранее, то repo sync эквивалентна:
git remote update
git rebase origin/branch
Где branch — это текущая извлеченная ветка в локальном каталоге проекта. 
Если локальная ветка не отслеживает ветку в удаленном репозитории, синхронизация проекта не происходит.
Ключевые параметры:
-c : получить с сервера только текущую ветку манифеста.
-d : переключить указанные проекты обратно на версию манифеста. 
     Эта опция полезна, если проект находится в тематической ветке, но версия манифеста необходима временно.
-f : продолжить синхронизацию других проектов, даже если проект не удалось синхронизировать.
threadcount : разделите синхронизацию между потоками для более быстрого завершения. 
              Убедитесь, что вы не перегружаете свою машину — оставьте часть процессора зарезервированной для других задач. 
              Чтобы увидеть количество доступных процессоров, сначала запустите nproc --all.
-q : работать тихо, подавляя сообщения о состоянии.
-s : синхронизировать с заведомо исправной сборкой, указанной в элементе manifest-server в текущем манифесте.
Чтобы получить дополнительные параметры, запустите repo help sync.

загрузить


repo upload [project-list]
Загружает изменения на сервер проверки. 
Для указанных проектов Repo сравнивает локальные ветки с удаленными ветвями, обновленными во время последней синхронизации Repo. 
Репо предложит вам выбрать одну или несколько веток, которые не были загружены на проверку.

Все коммиты в выбранных ветках затем передаются в Gerrit через соединение HTTPS. 
Вам необходимо настроить пароль HTTPS, чтобы включить авторизацию загрузки. 
Чтобы создать новую пару имени пользователя и пароля для использования через HTTPS, посетите генератор паролей .

Когда Gerrit получает данные объекта через свой сервер, он превращает каждый коммит в изменение, чтобы рецензенты могли прокомментировать конкретный коммит. 
Чтобы объединить несколько коммитов контрольных точек в один, используйте git rebase -i перед запуском загрузки.

Если вы запускаете repo upload без аргументов, он ищет во всех проектах изменения для загрузки.

Чтобы редактировать изменения после их загрузки, используйте такой инструмент, как git rebase -i или git commit --amend чтобы обновить локальные коммиты. 

После завершения редактирования:
Убедитесь, что обновленная ветка является текущей извлеченной веткой.
Используйте repo upload --replace PROJECT , чтобы открыть редактор сопоставления изменений.
Для каждого коммита в серии введите идентификатор изменения Gerrit в скобках.

После завершения загрузки изменения имеют дополнительный набор патчей.
Если вы хотите загрузить только извлеченную в данный момент ветку Git, используйте флаг --current-branch (или --cbr для краткости).

разница

repo diff [project-list]
Показывает существенные изменения между фиксацией и рабочим деревом с помощью "git diff"

скачать

repo download target change

Загружает указанное изменение из системы проверки и делает его доступным в локальном рабочем каталоге вашего проекта.
Например, чтобы загрузить изменение 23823 в каталог вашей platform/build :
repo download platform/build 23823

Запуск repo sync удаляет все коммиты, полученные при "repo download". 
Или вы можете проверить удаленную ветку, используя git checkout m/main