Миграция с 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
  • Скачайте репозиторий на свой компьютер:
    1git clone https://github.com/dprandzioch/bitbucket-to-gitea-migrator.git
    
  • Создайте конфигурационный файл:
    1cd bitbucket-to-gogs-migrator
    2cp config.json.example config.json
    
  • Отредактируйте файл 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
    

Links to this note

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

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

Похожие