0

我很好奇 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 个。

标签名称长度是否有任何限制?

4

1 回答 1

3

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

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

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

  • PATH_MAX限制可能是相对的(.git/refs/tags/....git/最大值减少 5 个字节)或绝对的(/path/to/repo/.git/refs/tags/.../path/to/repo/.git/限制增加超过 5 个字节)。

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

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

于 2020-12-03T00:09:46.283 回答