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