Многие пользуются Gerrit . Это система code review, несколько громоздкая, но вполне удобная.
К сожалению, исторически сложилось, что такие банальные вещи, как удаление или переименование уже созданного проекта в штатном арсенале отсутствуют. Раньше это было связано с тем, что названия проекта хранились в primary key в sql таблицах, для которых update делать было нельзя, и приходилось сперва delete а затем insert, для чего уже нужно создавать промежуточный sql запрос.
В последних версиях удаление проекта появилось в виде плагина, но возможности переименовать все еще нет.
Как обычно выходят из ситуации?
Если недавно создали проект и опечатались, или решили что-то изменить — просто создают новый, старый удаляют, а исходный код заливают заново. Но если проект уже не нов, если в нем было много изменений, то при таком способе вся история review потеряется. Вдобавок, старый проект обычно просто скрывают, и удаляют GIT-репозиторий на диске, а в SQL базе остаются все ссылки на эти никуда не ведущие review.
Итак, краткая инструкция, как можно переименовать проект вручную (работает в версиях 2.8-2.9).
1. Останавливаем геррит
2. Собственно переносим/переименовываем GIT-репозиторий
mv /data/gerrit/git/old_project /data/gerrit/git/new_project
3. Теперь нужно внести изменения в базу данных, но перед этим, конечно:
3.1 бэкап
3.2. Подключаемся к базе
# и отправляем два запроса (подставляете свои названия):
# Вот в этом месте сделаем паузу. Для более старых версий Gerrit, нужно было обновить еще несколько таблиц, например «projects» и «ref_rights». Но если у вас стоит настолько старая версия, настойчиво рекомендую обновиться до свежей — UI гораздо функциональнее и удобнее.
4. Стартуем геррит
Остается предупредить пользователей, чтобы они обновили origin в локальных репозиториях, или скачали его заново, уже с новым названием.
К сожалению, исторически сложилось, что такие банальные вещи, как удаление или переименование уже созданного проекта в штатном арсенале отсутствуют. Раньше это было связано с тем, что названия проекта хранились в 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 в локальных репозиториях, или скачали его заново, уже с новым названием.