Миграция с bitbucket на gitea
Миграция с bitbucket на gitea.
Содержание
1 Пролегомены
- В связи с тем, что Bitbucket начал блокировать учётные записи, было принято решение перейти на другой хостинг.
- Поскольку однозначный выбор хостинга не удалось сделать, было решено:
- поднять свой хостинг git (см. Установка gitea);
- перенести все репозитории;
- перенести или пересоздать команды.
2 Необходимая информация для миграции
2.1 Gitea
- Адрес экземпляра Gitea
- Например: http://hub.example.com
- Токен аутентификации
2.2 Bitbucket
- Имя пользователя BitBucket:
- это не почтовый адрес, по которому вы подключаетесь к BitBucket, а заданное в настройках имя;
- https://bitbucket.org/account/settings/
- Пароль BitBucket:
- лучше использовать не пароль подключения к BitBucket, а создать для этого токен:
- https://bitbucket.org/account/settings/app-passwords/
- Название группы, если вы переносите команду.
3 Варианты миграции
3.1 gickup
- Универсальный фреймворк по переносу git-репозиториев.
- Репозиторий: https://github.com/cooperspencer/gickup
- Документация: https://cooperspencer.github.io/gickup-documentation/
- Пример файла конфигурации: https://github.com/cooperspencer/gickup/blob/main/conf.example.yml
3.1.1 Проблемы
- Репозитории просто не скачивались.
- Хотя программы писала, что всё сделано.
3.2 BitbucketToGitea
- Скрипт по переносу репозиториев BitBucket в Gitea.
- Репозиторий: https://github.com/sIspravnikov/BitbucketToGitea
3.2.1 Проблема
- Никак не удалось устранить проблемы при авторизации в BitBucket.
4 Реализация миграции
- Использовал набор скриптов.
- Репозиторий: https://github.com/dstapp/bitbucket-to-gitea-migrator
- Скачайте репозиторий на свой компьютер:
git clone https://github.com/dprandzioch/bitbucket-to-gitea-migrator.git
- Создайте конфигурационный файл:
cd bitbucket-to-gogs-migrator cp config.json.example config.json
- Отредактируйте файл
config.json
:{ "base": { "check_exists": false }, "gogs": { "url": "URL-адрес экземпляра Gitea в формате hub.example.com", "protocol": "http", "token": "токен аутентификации Gitea", "owner_id": 1 }, "bitbucket": { "user": "Имя пользователя BitBucket", "password": "Пароль BitBucket", "team": null } }
- Установите необходимые пакеты:
npm install
- Проведите миграцию:
npm start
5 Репозитории у пользователей
- Для того, чтобы переключить репозитории пользователей (из команды) на новый хостинг, добавил в репозитории скрипт:
#!/bin/bash change_remote() { remote_orig=$(git remote get-url --all origin) echo "$remote_orig" | grep bitbucket.org &> /dev/null if [[ $? == 0 ]] then echo "Replace origin" git remote add bitbucket $remote_orig git remote set-url origin ${remote_orig/bitbucket.org/hub.example.com} fi } change_remote git remote get-url --all bitbucket &> /dev/null if [[ $? == 0 ]] then is_bitbucket=1 fi [[ $is_bitbucket == 1 ]] && git pull bitbucket master git pull git add . git commit -am "chore(main): $(date)" git push --all [[ $is_bitbucket == 1 ]] && git push bitbucket # Сжатие git if [[ $1 == "compress" ]] then if [[ -d .git ]] then find . -type f -name "*Конфликтующая*" -delete find . -type f -name "*conflicted*" -delete find . -depth -path ./.stversions -prune -o -name ".syncthing.*.tmp" -delete git fsck git gc --prune=now git gc --aggressive --prune=now fi fi