如何强制git始终将标签添加为注释标签

3

我需要强制每个新标签都成为注释标签。我需要让它强制适用于每个用户,而不需要告诉他们做任何特殊的事情。我尝试将标签别名设置为 "tag -a -m''",但它没有起作用。


我想知道在服务器上使用git pre-receive hook是否可能... - RyPeck
可能是可行的,但我不确定将轻量级标签转换为带注释的标签是否是一个好主意。下面我建议的可以在开发人员工作站/客户端上完成,但即使我也正在寻求相关建议。在此期间出现了一个有趣的问题,即如何真正区分轻量级标签和带注释的标签。如果查看标签,则可以进行区分,但除非使用丑陋的hack方法,否则如何从git本身或以编程方式知道它们是什么我并不明确。 - Mayur Nagekar
3个回答

0

git 不会让你强制为每个用户设置某些策略 - 比如为克隆你的仓库的每个人提供全局别名或默认标志。

它将允许你在你管理的某些特定仓库上执行某些策略。你可以使用一些钩子来拒绝包含未注释标签的任何推送,而不是让每个人自动添加这些标志。

我不太清楚你如何判断标签是否已注释,但可能这个答案可以帮助你开始尝试使用它们。


0
你可以尝试这个技巧。让每个git命令都通过一个shell脚本,该脚本将查找针对git发出的命令。如果是“tag”命令,则将每个轻量级标签转换为注释标签。如果命令不是“tag”,则继续正常操作。以下代码可能会帮助你。
 #!/bin/bash

    git_command=$1

    if [ "${git_command}" == "tag" ]; then
       echo "User is trying to tag"
       if [ "$2" != "-a" ] && [ "$2" != "-m" ]
       then
          echo lightweight
          echo "Second option is not -a nor -m.So looks like user is trying to create a lighweight tag."
          tag_message=$2
          git tag -a ${tag_message} -m ""
       else
          git tag $2 $3 $4 $5
          echo "Second option is either -a or -m. So may be user is trying to create an annotated tag."
       fi
    else
      echo "User is not tagging. So continue with the git operation user requested."
    fi

0
在 .gitconfig 中,您可以使用不同的名称创建别名:
[alias]
    atag = tag -a -m ""

然后git atag创建一个带注释的标签。虽然不是很优雅,但比每次都要传递-m参数要好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接