Nightbook

GitLab 6.0 проекты глобального пространства имен

Обновление GitLab-а 5.4-to-6.0 требует смены глобального пространства имен проектов в пользу пространству имен группы. Даже на пользователей создаются подобные группы. А проекты которые раньше были доступны из корня теперь перемещаются с помощью rake таски migrate_global_projects. У меня так получилось что один из проектов не сменил пространства имен, что в следствии вызывало 500 ошибку на страницах с задачами и самим проектом (теперь уже видимому только админу). Этот рассказ это простое решение системного администратора, без погружения в консоль rake и магии рельсов.

Опуская тему рельсов, рецепт переноса проекта состоит из двух пунктов:

Правка базы данных

Данные о базе данных мы берем в config/database.yml
Я использую PostgreSQL.

Поиск проблемных проектов

Подключаемся к сервер баз данных и в указанной базе. И смотрим у какого проекта пустое поле namespace_id

SELECT * FROM "projects" WHERE "projects"."namespace_id" IS NULL;

Поиск подходящего пространства имен

Смотрим таблицу namespaces

SELECT * FROM namespaces;

Запоминаем у нужного пространства значение поля id

Обновление информации о проекте

UPDATE projects set namespace_id=2 WHERE "projects"."path" = 'someglobalproject' AND "projects"."namespace_id" IS NULL;

Условия для WHERE можете выбрать сами. Я использовал ссылку на значение поля path равное названию моего проекта, но это не уникальное поле, потому я проверяю что бы у найденой записи поле namespace_id было пустым.

Перенос файлов

mv /home/git/repositories/someglobalproject.git /home/git/repositories/mygroup/

, где
someglobalproject имя моего проекта
mygroup имя моей группы id которой я выбрал в базе