为什么永远不要从服务器中删除标签?

时间:2014-06-16 21:18:39

标签: git gerrit

阅读Gerrit docs,它说:

[...] users should be really knowledgeable about git, 
for instance knowing why tags never should be removed from a server

它没有详细说明这个陈述。我没有看到任何问题,也无法找到相关信息。

那么,为什么永远不应该从服务器中删除标签?

2 个答案:

答案 0 :(得分:3)

如果你按annotated tags,当项目达到历史值得记住的稳定发布点时,它们应该代表"标签。"

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

请参阅" Enforcing site wide access policies"

部分
  

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

     

在企业部署中,通常需要实施一些访问策略。一个例子可能是没有人可以更新或删除标签,甚至不是项目所有者。
  ALLOWDENY规则不足以实现此目的,因为项目所有者可以自行授予任何访问权限,从而有效地覆盖"所有项目&#的任何继承访问权限34;或其他一些共同的父项目。

这就是Gerrit提出的原因:

  

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

     

此要求在企业部署中非常常见,必须保证构建的可重复性。为了实现这一目标,我们在#34; All-Projects":

中阻止匿名用户的推送权限
[access "refs/tags/*"]
  push = block group Anonymous Users
  create = group Project Owners
  pushTag = group Project Owners

答案 1 :(得分:2)

http://git-scm.com/docs/git-tag底部"重新标记"

的底部解释了为什么您不应该删除远程标记?

简而言之:如果协作者已经提取了一次标记,则在您更改标记后不会对其进行更新。因此,标记变得相当无用,因为它表示远程仓库中的提交A,但它可能代表一些开发人员的回购中的提交B