Я хочу сделать форк проекта, состоящего из нескольких репозиториев .git, переместив их все в разные (локальные) репозитории, но сохраняя точно такой же набор ветвей и тегов для каждого отдельного репозитория git.
Этот проект изначально загружается с помощью инструмента «репо». Существует файл manifest.xml, описывающий расположение каждого отдельного репозитория .git, загруженный с помощью репозитория init, а затем синхронизация репо клонирует все репозитории git.
В этом примере я буду использовать bitbucket.com, но не заостряйте внимание на битбакете, это всего лишь пример.
Вот шаги, которые я делаю прямо сейчас:
Создайте пустой репозиторий manifest.git в битбакете. Затем:
cd existing-manifest.git git remote set-url origin ssh://[email protected]/project/manifest.git git push -u origin --all git push origin --tags
Создайте набор репозиториев git вручную внутри bitbucket. Затем:
#! /bin/sh for LINE in $(repo forall -c 'echo ${REPO_PROJECT}":"${REPO_PATH}') do REPO_PROJECT=$(echo $LINE | cut -f 1 -d ":") REPO_PATH=$(echo $LINE | cut -f 2 -d ":") pushd $REPO_PATH git remote add origin ssh://[email protected]/project/${REPO_PROJECT}.git git push -u origin --all git push origin --tags popd done
После этого отредактируйте файл manifest.xml вручную, чтобы изменить удаленный объект по умолчанию для каждого проекта, и зафиксируйте новый файл manifest.xml в моем пользовательском репозитории.
Это очень ручной процесс, не очень дружелюбный. Итак, мои вопросы:
- Можно ли как-то улучшить этот процесс?
- Возможно ли просто использовать инструмент «репо»?