#git #gerrit
#git #gerrit
Вопрос:
Читая документы Gerrit, в нем говорится:
[...] users should be really knowledgeable about git,
for instance knowing why tags never should be removed from a server
Это не уточняет это утверждение. Я не вижу никаких проблем с этим, и я также не могу найти никакой информации об этом.
Итак, почему теги никогда не должны удаляться с сервера?
Ответ №1:
Почему вы не должны удалять удаленный тег, объясняется внизу http://git-scm.com/docs/git-tag , раздел «О повторной маркировке».
Короче говоря: если сотрудник уже извлек тег один раз, он не обновит его после того, как вы его измените. Следовательно, тег становится довольно бесполезным, поскольку он представляет коммит A
в удаленном репозитории, но он может представлять коммит B
в репозиториях нескольких разработчиков
Ответ №2:
Если вы нажимаете аннотированные теги, предполагается, что они представляют «теги, когда проект достигает стабильной точки выпуска, которую стоит запомнить в истории».
Поскольку владелец проекта в Gerrit имеет право удалять теги, в документации добавляется это предупреждение, чтобы другие пользователи, полагающиеся на указанные теги, не были удивлены (или должным образом предупреждены), если этот тег должен был измениться (или быть удален).
См. Раздел «Применение политик широкого доступа к сайту«
Предоставляя Владельцу право доступа
refs/*
к группе, администраторы Gerrit могут делегировать этой группе ответственность за поддержание прав доступа к этому проекту.В корпоративном развертывании часто необходимо применять некоторые политики доступа. Примером может быть то, что никто не может обновить или удалить тег, даже владельцы проекта.
ПравилALLOW
иDENY
недостаточно для этой цели, поскольку владельцы проектов могут предоставить себе любые права доступа, которые они пожелают, и, таким образом, эффективно переопределить любые унаследованные права доступа из «All-Projects» или какого-либо другого общего родительского проекта.
Вот почему Геррит предлагает:
Убедитесь, что никто не может обновить или удалить тег
Это требование довольно распространено в корпоративном развертывании, где должна быть гарантирована воспроизводимость сборки. Для достижения этой цели мы блокируем push-разрешение для анонимных пользователей во «Всех проектах»:
[access "refs/tags/*"]
push = block group Anonymous Users
create = group Project Owners
pushTag = group Project Owners