Миграция с bitbucket на gitea

Миграция с bitbucket на gitea.

Содержание

1 Пролегомены

  • В связи с тем, что Bitbucket начал блокировать учётные записи, было принято решение перейти на другой хостинг.
  • Поскольку однозначный выбор хостинга не удалось сделать, было решено:
    • поднять свой хостинг git (см. Установка gitea);
    • перенести все репозитории;
    • перенести или пересоздать команды.

2 Необходимая информация для миграции

2.1 Gitea

2.2 Bitbucket

  • Имя пользователя BitBucket:
    • это не почтовый адрес, по которому вы подключаетесь к BitBucket, а заданное в настройках имя;
    • https://bitbucket.org/account/settings/
  • Пароль BitBucket:
  • Название группы, если вы переносите команду.

3 Варианты миграции

3.1 gickup

3.1.1 Проблемы

  • Репозитории просто не скачивались.
  • Хотя программы писала, что всё сделано.

3.2 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
    

Links to this note

Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие