【问题标题】:Is there a git max tag name length?是否有 git max 标签名称长度?
【发布时间】:2020-12-02 23:51:43
【问题描述】:

我很好奇 git 标签名称的长度是否有任何限制。如果不在官方的 git 文档中,那么一些比较流行的平台,比如 github、bitbucket、gitlab 等呢?

我看到的文档没有列出标签名称的长度限制。但是必须有某种限制,因为没有什么是无限的,当你达到“限制”时,最终会失败。这里有两个与标签相关的主要文档,特别是标签名称。

https://git-scm.com/docs/git-tag https://git-scm.com/docs/git-check-ref-format

我问这个问题的主要原因是我在过去 8 年多的时间里一直在使用的 SVN 存储库正试图转移到 git(一个 bitbucket 存储库),而我得到的反馈是那个“长”的标签名称会造成麻烦,并阻止迁移。我可以在 repo 中找到的最长标签名称长度小于 60 个字符,标签少于 100 个。

标签名长度有限制吗?

【问题讨论】:

  • 这很可能是 Windows 上的一个问题。这些长度在现代 Unix 系统上应该不是问题。

标签: git tags tagname


【解决方案1】:

有几个,但它们各不相同:

  • 由于单个名称组件有时存储在文件系统名称中,comp/on/ent 形式的标记名称对每个部分都有限制:component。 Linux 系统的实际限制取决于底层文件系统,通常为 255 个字符。其他文件系统可能有更短的限制(有些可能允许更长的名称,但通常 255 就足够了)。

  • 因为有时将整个名称存储为文件系统名称,所以全名refs/tags/comp/on/ent 可能有系统强加的限制。这可能是 1024 个字符(旧的 Unix 系统)、4096 个字符(一些当前的 Unix/Linux 系统)或其他一些值——在 Windows 系统上通常要小得多。另见Where is PATH_MAX defined in Linux?

  • PATH_MAX 限制可能是相对的(.git/refs/tags/...,其中 .git/ 比最大值多 5 个字节)或绝对(/path/to/repo/.git/refs/tags/...,其中 /path/to/repo/.git/ 比限制多五个字节)。

在 Git 内部,曾经有各种大小为 1024 或 PATH_MAX 的缓冲区,但这些缓冲区都应该在现代 Git 中清理干净,因此您通常应该只遇到系统范围的限制,例如Windows 260 字节PATH_MAX

但是请注意,标签是呈现给人类的。在这里,人类往往受到更多限制。我建议您将自己保持在 20 到 100 个字符左右,具体取决于您的标签的系统性。

【讨论】:

  • 非常感谢您提供的信息和背景细节。这确实有助于正确看待这一切。这实际上非常有用,因为今天早上我决定自己迁移 repo,因为他们的尝试放弃了前 2000 个提交,这是 repo 中最关键和最重要的部分。所以至少现在我可以排除 60 个字符长的标签是原因。 ;)
猜你喜欢
  • 1970-01-01
  • 2022-12-11
  • 2020-08-17
  • 1970-01-01
  • 1970-01-01
  • 2014-07-23
  • 2012-07-09
  • 2019-10-25
相关资源
最近更新 更多