Git 为什么永远不应从服务器中删除标记?

Git 为什么永远不应从服务器中删除标记?,git,gerrit,Git,Gerrit,在阅读中,它说: [...] users should be really knowledgeable about git, for instance knowing why tags never should be removed from a server 它没有详细说明这一说法。我没有发现任何问题,我也找不到任何关于它的信息 因此,为什么永远不应从服务器上删除标记?在“重新标记”部分的底部解释了为什么不应删除远程标记 简而言之:如果合作者已经获取了一次标记,那么在您更改它之后,它不会更

在阅读中,它说:

[...] users should be really knowledgeable about git, 
for instance knowing why tags never should be removed from a server
它没有详细说明这一说法。我没有发现任何问题,我也找不到任何关于它的信息


因此,为什么永远不应从服务器上删除标记?在“重新标记”部分的底部解释了为什么不应删除远程标记

简而言之:如果合作者已经获取了一次标记,那么在您更改它之后,它不会更新它。因此,标记变得相当无用,因为它在远程repo中表示提交
a
,但在少数开发人员的repo中,它可能表示提交
B
,如果你推,它们应该表示“当项目达到一个值得在历史上记住的稳定发布点时的标记”

由于Gerrit中的项目所有者有权删除标记,因此文档中添加了该警告,以便其他依赖于所述标记的用户在该标记发生更改(或被删除)时不会感到惊讶(或受到适当警告)

请参阅“”一节

通过向组授予所有者对
refs/*
的访问权,Gerrit管理员可以将维护该项目访问权的责任委托给该组

在公司部署中,通常需要强制执行一些访问策略。例如,没有人可以更新或删除标记,即使是项目所有者也不行。
允许
拒绝
规则对于这一目的来说是不够的,因为项目所有者可以授予他们自己想要的任何访问权,从而有效地覆盖从“所有项目”或其他公共父项目继承的任何访问权

这就是为什么Gerrit建议:

确保没有人可以更新或删除标记

这一要求在公司部署中非常常见,其中必须保证构建的可再现性。为了实现这一点,我们在“所有项目”中阻止匿名用户的推送权限:

[access "refs/tags/*"]
  push = block group Anonymous Users
  create = group Project Owners
  pushTag = group Project Owners