GitHub-to-GitFlic Migrator
Скрипт для автоматического переноса задач (issues) и запросов на слияние (merge requests) из репозиториев GitHub в репозитории GitFlic.
Поддерживаемые данные
Перенос задач:
- Заголовок задачи
- Описание
- Статус задачи (OPEN, CLOSED, COMPLETED)
- Ответственные лица (Assignees)
Перенос запросов на слияние (Merge Requests):
- Заголовок
- Описание
- Исходная ветка (source branch)
- Целевая ветка (target branch)
Особенности
- Поддержка множественного переноса через файл
repos.txt
со списком репозиториев. - Возможность указать тип переноса: только задачи (issues), только запросы на слияние (mr), или всё сразу.
- Возможность указать URL для запросов к GitFlic API.
- Поддерживается настройка количества запросов в час для работы с GitFlic API, чтобы избежать ошибок превышения лимита.
- Автоматическое сопоставление статусов issue.
- Перенос информации об ответственных лицах issue (при наличии совпадения логинов).
- Скрипт на данный момент не переносит лейблы.
- API GitHub при получении issue отдает также и PRы, скрипт их пропускает при переносе.
- В GitFlic не поддерживаются проблемы с пустым описанием, поэтому в случаях, когда описание проблемы из GitHub пустое, оно заполняется заголовком проблемы.
- Скрипт извлекает из GitHub только те MR, ветки которых есть в проекте. Перед созданием MR скрипт также проверяет, существуют ли ветки (sourceBranch и targetBranch) в репозитории GitFlic. Если хотя бы одна ветка отсутствует, MR пропускается.
Требования
- Python 3.8 и выше
- Установленные зависимости (см. ниже)
- Доступ к API GitHub и GitFlic с действующими токенами доступа. Создать токен GitHub можно тут.
Установка и настройка
Клонируйте репозиторий
git clone https://gitflic.ru/project/dshitov/gh-to-gf-migrator.git cd gh-to-gf-migrator
Установите зависимости
pip install -r requirements.txt
Заполните файл config.txt
Заполните файл следующими данными:
GITHUB_TOKEN=ваш_токен_доступа_к_GitHub GITFLIC_TOKEN=ваш_токен_доступа_к_GitFlic GITFLIC_URL=https://api.gitflic.ru # URL для запросов в GitFlic API, пример для Self-Hosted GitFlic - http://localhost:8080/rest-api GITFLIC_RATE_LIMIT=500 # Максимальное количество запросов в час. 0 = без ограничений. TRANSFER_TYPE=all # Указываем что нужно переносить. Возможные значения: issues, mr, all
Заполните файл repos.txt
Укажите список репозиториев для переноса в формате:
алиас_владельца_репозитория_github/алиас_репозитория_github;алиас_владельца_репозитория_gitflic/алиас_репозитория_gitflic
Пример:
github_owner_alias/myrepo;gitflic_owner_alias/myrepo github_owner_alias/myrepo2;gitflic_owner_alias/myrepo2
Использование
Запустите скрипт:
python main.py
Описание
Скрипт для переноса проблем и запросов на слияние из GitHub в GitFlic