Примите участие в нашем опросе о юзабилити, чтобы улучшить этот сайт.
Эта страница переведена с помощью Cloud Translation API.
Switch to English

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

Repo дополняет Git, упрощая работу с несколькими репозиториями. См. Раздел Инструменты управления версиями для объяснения взаимосвязи между Repo и Git. Дополнительные сведения о репо см. В 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 в текущем каталоге. (Подробнее см. В init .)

repo help init

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

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

в этом

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 текущий рабочий каталог должен быть либо родительским каталогом для .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 rebase приводит к конфликтам слияния, используйте обычные команды Git (например, git rebase --continue ) для разрешения конфликтов.

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

Вот ключевые варианты. Дополнительную информацию см. В разделе « repo help sync :

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

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

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

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

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

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

загрузить

repo upload [project-list]

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

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

Когда Геррит получает данные объекта через свой сервер, он превращает каждую фиксацию в изменение, чтобы рецензенты могли комментировать конкретную фиксацию. Чтобы объединить несколько фиксаций контрольной точки в одну фиксацию, используйте 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.
    

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

Если вы хотите загрузить только --current-branch 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 .

Примечание. Имеются задержки репликации на все серверы по всему миру, поэтому существует небольшая задержка при зеркалировании между тем, когда изменение отображается в Интернете в Gerrit, и когда 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 : Показать сообщения, которые команда записывает в stderr.

чернослив

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 Удалено В индексе, а не в дереве работы