Pull to refresh

Переименовываем проект в Gerrit

Многие пользуются Gerrit . Это система code review, несколько громоздкая, но вполне удобная.

К сожалению, исторически сложилось, что такие банальные вещи, как удаление или переименование уже созданного проекта в штатном арсенале отсутствуют. Раньше это было связано с тем, что названия проекта хранились в primary key в sql таблицах, для которых update делать было нельзя, и приходилось сперва delete а затем insert, для чего уже нужно создавать промежуточный sql запрос.

В последних версиях удаление проекта появилось в виде плагина, но возможности переименовать все еще нет.

Как обычно выходят из ситуации?

Если недавно создали проект и опечатались, или решили что-то изменить — просто создают новый, старый удаляют, а исходный код заливают заново. Но если проект уже не нов, если в нем было много изменений, то при таком способе вся история review потеряется. Вдобавок, старый проект обычно просто скрывают, и удаляют GIT-репозиторий на диске, а в SQL базе остаются все ссылки на эти никуда не ведущие review.

Итак, краткая инструкция, как можно переименовать проект вручную (работает в версиях 2.8-2.9).

1. Останавливаем геррит
service gerrit stop

2. Собственно переносим/переименовываем GIT-репозиторий
mv /data/gerrit/git/old_project /data/gerrit/git/new_project

3. Теперь нужно внести изменения в базу данных, но перед этим, конечно:

3.1 бэкап
mysqldump -u gerrit -h localhost --password=***** reviewdb | gzip -9 > backup_reviewdb.sql.zip

3.2. Подключаемся к базе
mysql -D reviewdb -h localhost -u gerrit --password=******

# и отправляем два запроса (подставляете свои названия):
update account_project_watches
set project_name = "old_project"
where project_name = "new_project";

update changes
set dest_project_name = "old_project"
where dest_project_name = "new_project";


# Вот в этом месте сделаем паузу. Для более старых версий Gerrit, нужно было обновить еще несколько таблиц, например «projects» и «ref_rights». Но если у вас стоит настолько старая версия, настойчиво рекомендую обновиться до свежей — UI гораздо функциональнее и удобнее.

4. Стартуем геррит
service gerrit start

Остается предупредить пользователей, чтобы они обновили origin в локальных репозиториях, или скачали его заново, уже с новым названием.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.