Справочник команд репо

Repo дополняет Git, упрощая работу с несколькими репозиториями. См Инструменты управления Источник для объяснения взаимосвязи между Repo и Git. Для получения более подробной информации о Repo см Repo README .

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

repo command options

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

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

помощь

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

repo help

Вы можете увидеть подробную информацию о любой команде, запустив ее в дереве репо:

repo help command

Например, следующая команда дает описание и список опций для init аргумента Репо, который инициализирует Repo в текущем каталоге. (См инициализации для подробной информации).

repo help init

Или, чтобы увидеть только список доступных опций, запустите:

repo command --help
Например:
repo init --help

в этом

repo init -u url [options]

Устанавливает Repo в текущий каталог. Это создает .repo/ каталог с Git репозиториях исходного кода Репо и стандартных Android файлов манифеста.

Параметры:

  • -u : Укажите URL - адрес , с которого для получения манифеста хранилища. Распространенное манифеста находится в https://android.googlesource.com/platform/manifest .
  • -m : Выберите файл манифеста в репозитории. Если не выбрано манифест имени, по умолчанию default.xml .
  • -b : Укажите ревизию, то есть, конкретный manifest-branch .

Примечание: Для всех остальных команд Репо, текущий рабочий каталог должен быть родительский каталог .repo/ или подкаталог родительского каталога.

синхронизировать

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 находится в настоящее время извлеченная филиал в локальном каталоге проекта. Если локальная ветвь не отслеживает ветку в удаленном репозитории, то синхронизация проекта не выполняется.

  • Если Git перебазироваться результаты работы в слиянии конфликтов, использовать обычные команды Git (например, git rebase --continue ) для разрешения конфликтов.

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

Вот ключевые варианты. См repo help sync более:

  • -c : Fetch только текущий манифест ветви с сервера.

  • -d : Переключение указанных проектов обратно к манифесту пересмотру. Это полезно, если проект в настоящее время находится в тематической ветке, но временная версия манифеста необходима.

  • -f : Продолжить синхронизацию других проектов , даже если проект не синхронизированы.

  • -j threadcount : Сплит синхронизации между потоками для быстрого завершения. Убедитесь, что вы не перегружаете свою машину - оставьте часть процессора зарезервированной для других задач. Чтобы увидеть количество доступных процессоров, первого запуска: nproc --all

  • -q : Запуск тихо, подавляя сообщения о состоянии.

  • -s : Синхронизация с известной хорошей сборкой , как указано в manifest-server элементе в текущем манифесте.

загрузить

repo upload [project-list]

Для указанных проектов Repo сравнивает локальные ветки с удаленными ветвями, обновленными во время последней синхронизации Repo. Репо предлагает вам выбрать одну или несколько веток, которые не были загружены для проверки.

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

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

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

Для изменения редактирования после того как они были загружены, использовать такой инструмент , как git rebase -i или git commit --amend обновить коммиты. После того, как ваши правки будут завершены:

  • Убедитесь, что обновленная ветка - это текущая извлеченная ветвь.
  • Для каждого коммита в серии введите в скобках идентификатор изменения Gerrit:
    # Replacing from branch foo
    [ 3021 ] 35f2596c Refactor part of GetUploadableBranches to lookup one specific...
    [ 2829 ] ec18b4ba Update proto client to support patch set replacments
    # Insert change numbers in the brackets to add a new patch set.
    # To create a new change record, leave the brackets empty.
    

После завершения загрузки для изменений будет установлен дополнительный патч.

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

разница

repo diff [project-list]

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

скачать

repo download target change

Загружает указанное изменение из системы проверки и делает его доступным в локальном рабочем каталоге вашего проекта.

Например, чтобы загрузить изменения 23823 в каталог платформы / сборки:

repo download platform/build 23823

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

Примечание: Есть задержки репликации на все сервера по всему миру, так что есть небольшая задержка между зеркалированием , когда изменения видны в Интернете в Геррите и когда repo download можно найти изменение для всех пользователей.

для всех

repo forall [project-list] -c command

Выполняет заданную команду оболочки в каждом проекте. Следующие дополнительные переменные среды доступны по repo forall :

  • REPO_PROJECT устанавливается на уникальное имя проекта.

  • REPO_PATH путь относительно корня клиента.

  • REPO_REMOTE это имя удаленной системы из манифеста.

  • REPO_LREV это имя пересмотра с манифестом, в переводе с местного отделения слежения. Используйте это, если вам нужно передать версию манифеста локально выполняемой команде Git.

  • REPO_RREV это имя пересмотра из манифеста, точно так , как написано в манифесте.

Параметры:

  • -c : Команда и аргументы для выполнения. Команда оценивается через /bin/sh и любые аргументы после него пропускаются через , как оболочки позиционных параметров.

  • -p : Показать заголовки проекта до выхода указанной команды. Это достигается путем привязки каналов к командным потокам stdin, stdout и sterr и передачи всего вывода в непрерывный поток, который отображается в одном сеансе пейджера.

  • -v : Показать сообщения команда записывает в поток ошибок.

чернослив

repo prune [project-list]

Обрезает (удаляет) уже объединенные темы.

Начните

repo start
branch-name [project-list]

Начинает новую ветку для разработки, начиная с ревизии, указанной в манифесте.

BRANCH_NAME аргумент содержит краткое описание изменений вы пытаетесь сделать проекты. Если вы не знаете, используйте имя по default .

В project-list аргументов определяет , какие проекты участвуют в этой теме отрасли.

Примечание: (.) Период А сокращение для проекта в текущем рабочем каталоге.

положение дел

repo status [project-list]

Сравнивает рабочее дерево с промежуточной областью (индексом) и самой последней фиксацией в этой ветке (HEAD) в каждом указанном проекте. Отображает итоговую строку для каждого файла, в котором есть разница между этими тремя состояниями.

Чтобы увидеть статус только в текущей ветке, запустите repo status . . Информация о статусе указана по проектам. Для каждого файла в проекте используется двухбуквенный код.

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

Письмо Имея в виду Описание
- Без изменений То же самое в HEAD и index
А Добавлен Не в HEAD, а в индексе
M Изменено В HEAD, изменено в индексе
D Удалено В HEAD, а не в индексе
р Переименован Нет в HEAD, путь изменен в индексе
C Скопировано Не в HEAD, скопировано из другого в индексе
Т Режим изменен Тот же контент в HEAD и индексе, режим изменен
U Не объединенный Конфликт между HEAD и index; требуется разрешение

Во втором столбце строчная буква указывает, чем рабочий каталог отличается от индекса.

Письмо Имея в виду Описание
- Новое / неизвестное Не в индексе, а в дереве работ
м Изменено В индексе, в дереве работы, изменено
d Удалено В индексе, а не в дереве работ

Обработка ошибок репо

git commit -a # Commit local changes first so they aren't lost.
repo start branch-name # Start the branch
git reset --hard HEAD@{1} # And reset the branch so that it matches the commit before repo start
repo upload .

Ошибка repo: error: no branches ready for upload , когда команда появляется repo start не был запущен в начале сессии. Для восстановления вы можете проверить идентификатор фиксации, запустить новую ветку и затем объединить ее.