Comments 5
Работает! Мигрировал 4 репа из GitLab в Gogs. Спасибо! 👍
Спасибо за идеи. Сейчас gitea использую, но тоже перейду на Gogs, т.к. в реальности Gitea намного больше нагружает CPU. Под полночь вижу gitea нагружает на 100% все восемь потоков в простое на почти пустом репо.
Статья полезна как Proof-of-Concept для миграции репозиториев, но... все-таки данное решение не должно восприниматься как "полная миграция" или как решение для безопасности.
В статье честно описаны некоторые "ограничения" подхода, но все-таки не все, а они значительные:
Переносятся только история коммитов, ветки и теги (базовая функциональность Git)
НЕ переносятся Merge Requests — это упоминается в разделе "A. Поддержка Merge Request при миграции"
НЕ переносятся Issues
НЕ переносятся CI/CD pipelines (кроме их истории в репозитории)
НЕ переносятся все настройки доступа и permissions
НЕ переносятся webhook'и, custom hooks, protected branch rules
Это значит, что рабочий процесс команды (approval rules, CI/CD конфигурация, issue tracking) остаётся невостребованной на новой платформе.
ПО-поводу безопасности. Тут делает упор на "безопасность" и "избежание утечек", но:
НЕ обсуждается, что self-hosted GitLab сам по себе требует серьёзного hardening (Cycode обнаружил, что /explore endpoint экспонирует данные даже за SSO)
НЕ упоминается, что токены и secrets в git истории это не проблема self-hosted — это проблема практик разработки (Red Hat утечка 28k репозиториев)
НЕ рассматривается угроза инсайдеров — локальный сервер не защищает от администраторов с плохими намерениями
И, пожалуй, самая критическая ошибка в контексте безопасности: CVE-2025-8110 (Gogs RCE Zero-day)
По состоянию на январь 2026, в Gogs существует неисправленная уязвимость, позволяющая удалённое выполнение кода
700+ instансов скомпрометировано в интернете (по данным Wiz Research)
Уязвимость: improper symlink handling в file update API
Позволяет перезаписать
.git/configи получить SSH access к серверуТребует только прав на создание репозитория
Patch был выпущен только в версии v0.13.4 (23 января 2026)
Это означает, "мы боремся за безопасночть" и рекомендуем :) систему с критической RCE уязвимостью?
Что касается предлагаемого скрипта - тут пара советов (хотя вангую, что автор и сам догадывается "просто руки не дошли")
- опять-таки проблемы с безопасностью - файл settings.ini содержит credentials в plaintext. Рекомендации:
Использовать все-таки переменные окружения или key management service
особо напрягает - надо следить, чтобы случайно не закоммитить
settings.iniв gitРотировать токены после миграции
Автор "костылит" миграцию аватаров, обращаясь напрямую к SQLite БД Gogs вместо использования API. Это проблематично потому что:
Привязывает скрипт к конкретной версии и конфигурации Gogs
Если БД находится на удалённом сервере — не будет работать (автор добавил проверку, но это костыль)
Нарушает принцип использования только API
Мне очень показалось, что комментарий написан ИИ.
НЕ переносятся Merge Requests, Issues, настройки доступа и permissions , CI/CD , webhook'и, custom hooks, branch rules
Да, это относится к функциональности Gitlab платформы.
Была задумка перенести все что можно, но в реальности gitlab и gogs - большая разница. Да и вопрос - поддерживает ли Gogs функциональность Gitlab?
- CI/CD: в gogs нет встроенного CI/CD. Есть какие то внешние тулзы.
- Webhooks: Gogs поддерживает, можно вручную, копия файлов в директорию репо.
- Branch Rules: В GitLab все наворочено.(несколько аппрувов, Push Rules) - думаю не перенесутся.
Теперь по переносу , связанному с несколькими пользователями. У меня один пользователь - я сам. Поэтому я посмотрел на это .. хм.. :-) и написал в статье про "Merge Requests - мне не нужно (у меня приватные пет проекты)". Тоже самое про Issues и Permissions
ПО-поводу безопасности ... CVE-2025-8110
Вопрос точно ко мне?
токены в settings.ini заменить на переменные окружения для однократной миграции - дело вкуса.
Автор "костылит" миграцию аватаров
Да, и мне тоже не понравилось "костылить", но через API не получилось. С удовольствием бы подсмотрел ваше решение.
Хорошее дополнение к статье, спасибо
Скрипт полной миграции из GitLab на свой сервер и настройка Git для одновременного fetch/push в несколько remotes