Миграция с 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
- Скачайте репозиторий на свой компьютер:
1git clone https://github.com/dprandzioch/bitbucket-to-gitea-migrator.git
- Создайте конфигурационный файл:
- Отредактируйте файл
config.json
:1{ 2 "base": { 3 "check_exists": false 4 }, 5 "gogs": { 6 "url": "URL-адрес экземпляра Gitea в формате hub.example.com", 7 "protocol": "http", 8 "token": "токен аутентификации Gitea", 9 "owner_id": 1 10 }, 11 "bitbucket": { 12 "user": "Имя пользователя BitBucket", 13 "password": "Пароль BitBucket", 14 "team": null 15 } 16}
- Установите необходимые пакеты:
1npm install
- Проведите миграцию:
1npm start
5 Репозитории у пользователей
- Для того, чтобы переключить репозитории пользователей (из команды) на новый хостинг, добавил в репозитории скрипт:
1#!/bin/bash 2 3change_remote() { 4 remote_orig=$(git remote get-url --all origin) 5 echo "$remote_orig" | grep bitbucket.org &> /dev/null 6 if [[ $? == 0 ]] 7 then 8 echo "Replace origin" 9 git remote add bitbucket $remote_orig 10 git remote set-url origin ${remote_orig/bitbucket.org/hub.example.com} 11 fi 12} 13 14change_remote 15 16git remote get-url --all bitbucket &> /dev/null 17if [[ $? == 0 ]] 18then 19 is_bitbucket=1 20fi 21 22[[ $is_bitbucket == 1 ]] && git pull bitbucket master 23git pull 24 25git add . 26git commit -am "chore(main): $(date)" 27git push --all 28[[ $is_bitbucket == 1 ]] && git push bitbucket 29 30# Сжатие git 31if [[ $1 == "compress" ]] 32 then 33 if [[ -d .git ]] 34 then 35 find . -type f -name "*Конфликтующая*" -delete 36 find . -type f -name "*conflicted*" -delete 37 find . -depth -path ./.stversions -prune -o -name ".syncthing.*.tmp" -delete 38 git fsck 39 git gc --prune=now 40 git gc --aggressive --prune=now 41 fi 42fi