repo
в repo init
и repo sync
- это сценарий запуска. Вы можете узнать, что это такое which repo
.
repo init
создает .repo
в текущей папке, клонирует репозиторий репозитория с URL-адреса на .repo/repo
и проверяет его ветку. URL-адрес и ветвь указываются REPO_URL
и REPO_REV
в панели запуска или параметрами --repo-url
и --repo-branch
. Репозиторий инструмента репозитория содержит пусковую установку и другие сценарии подкоманд.
repo init
принимает параметры -u <url_to_manifest_repository>
, -b <branch>
и -m <manifest>
. -u
указывает репозиторий, содержащий манифесты. -b
указывает ветку репозитория, а -m
указывает, какой манифест использовать. <branch>
по умолчанию master
и <manifest>
по умолчанию default.xml
. Репозиторий манифеста клонируется в .repo/manifest.git
, а его рабочее дерево - .repo/manifests
.
Манифест, указанный в -m
, указывает repo sync
на выборку метаданных определенных репозиториев. Метаданные хранятся в .repo/project-objects
и .repo/projects
. После получения метаданных коды задействованных репозиториев извлекаются по путям, указанным в манифесте. Пути также относятся к репозиториям git, но их папки .git
связаны с .repo/projects
и .repo/project-objects
.
Вы хотите поместить sh все репозитории в Gitlab. Сначала создайте репозитории Gitlab для всех синхронизированных репозиториев. Во-вторых, создайте локальные сиротские ветки, если вы не хотите сохранять исходную историю. В-третьих, pu sh локальные ветки для репозиториев Gitlab.
Инструмент репо имеет подкоманду forall
. repo forall
выполняет итерацию по всем репозиториям и запускает команды, указанные параметром -c <commands>
в каждом репозитории. Вы также можете проанализировать манифест и использовать al oop для выполнения той же работы, что является более гибким. -c
удобен для простой команды. Но для сложных команд лучше написать сценарий.
Предположим, что есть локальный репозиторий с именем foo.git
и путем foo
.
cd foo
# create an orphan branch if you don't want to keep the original history
git checkout --orphan <branch>
git commit
# create Gitlab repository with Gitlab API
# curl .....
# push the local revision to Gitlab repository
git push http://mygitlab.com/xxx/foo.git <branch>:refs/heads/<branch>
После того, как все репозитории загружены, вам необходимо создать манифест для записи репозиториев Gitlab, чтобы вы могли использовать инструмент репо для их загрузки из Gitlab. Исходя из исходного манифеста, вам необходимо изменить <remote/>
, <default/>
и <projects/>
в соответствии с репозиториями Gitlab. После этого загрузите манифест в свой собственный репозиторий манифестов. Для получения подробной информации о формате манифеста вы можете найти do c в .repo/repo/docs/manifest-format.txt
.