强制使用特定格式的 git 标签

问题描述 投票:0回答:1

我正在开发一个使用 git 作为版本控制的共享项目。

我想避免其他开发人员在项目中创建包含换行符等特殊字符的标签,因为在添加标签时它会破坏复杂命令语法。

事实上,我想强制标签名称格式仅包含字母数字字符和字符“_”。我如何强制此存储库不接受任何不符合此标准的标签。

Gitlab 中有这样的选项吗?

git gitlab
1个回答
3
投票

关于禁止使用换行符的标签问题的第一部分,Git 不允许名称中包含换行符或其他空白字符的标签。

你可以自己测试一下:

$ git tag $'foo\nbar'
fatal: 'foo
bar' is not a valid tag name.
$ git tag 'foo bar'
fatal: 'foo bar' is not a valid tag name.

这实际上是由 plumbing 命令

git-check-ref-format
处理的。文档指出:

Git 对引用的命名方式施加了以下规则:

  1. 它们可以包含用于分层(目录)分组的斜杠

    /
    ,但斜杠分隔的组件不能以点
    .
    开头或以序列
    .lock
    结束。

  2. 它们必须至少包含一个

    /
    。这强制存在诸如
    heads/
    tags/
    等类别,但实际名称不受限制。如果使用
    --allow-onelevel
    选项,则放弃此规则。

  3. 它们在任何地方都不能有两个连续的点

    ..

  4. 它们在任何地方都不能有 ASCII 控制字符(即值小于 、 或

    DEL
    的字节)、空格、波形符
    ~
    、脱字号
    ^
    或冒号
    :

  5. 他们不能在任何地方有问号

    ?
    、星号
    *
    或开括号
    [
    。请参阅下面的
    --refspec-pattern
    选项了解此规则的例外情况。

  6. 它们不能以斜杠

    /
    开头或结尾,也不能包含多个连续的斜杠(有关此规则的例外情况,请参阅下面的
    --normalize
    选项)。

  7. 它们不能以点结尾

    .

  8. 它们不能包含序列

    @{

  9. 它们不能是单个字符

    @

  10. 它们不能包含

    \

对于第二部分,Gitlab 似乎不支持。

一个可能的解决方法是使用您想要的模式创建受保护的标签规则,然后定期删除除受保护的标签之外的所有标签。

© www.soinside.com 2019 - 2024. All rights reserved.