gpt4 book ai didi

git - 如何在提交消息中自动添加全局配置变量?

转载 作者:行者123 更新时间:2023-12-05 02:35:23 26 4
gpt4 key购买 nike

我想在提交消息中自动添加我的团队名称,我已使用以下命令在全局配置中注册:

git config --global user.team "Seawolves"

有很多团队在同一个项目中工作,我们共享一个在 gitconfig 文件中指定的模板文件。

[commit]
template = /mnt/share/gitmessage

这是我的 ~/.gitconfig 的一部分:

cat ~/.gitconfig 
[user]
name = Rajesh Khanna
email = rajesh.khanna@somthing.com
team = Seawolves

从 ~/.gitconfig 和 git 获取团队名称到提交消息中的最佳方法是什么?我应该使用 prepare-commit-msg Hook 吗?或者它是一种更简单的方法来获取消息,就像自动完成电子邮件和姓名一样?

或者我需要使用以下命令获取它:git config user.team

并将其回显到类似于我在此处找到的消息中: https://gist.github.com/bartoszmajsak/1396344/97081e76ab275f5fe526347908503febd1340495

最佳答案

处理此问题的最佳方法确实是使用 prepare-commit-msg Hook 。当你创建一个时,你应该记下传递给它的参数,并且,除非你想让你的生活变得不必要的困难,否则在你使用 git commit --amend 时避免修改它(比如当第二个参数是 commit 时)。

请注意, Hook 需要修改作为第一个参数的文件,这与许多人的预期不同。因此,您通常希望使用类似 -i 参数的 Perl、Ruby 或 sed,或可编写脚本的行编辑器,如 ed -sex -sw 命令。

如果你想添加一个预告片,那么 git interpret-trailers 可能有助于根据配置添加你想要的条目,你可以自定义它不添加条目,如果一个已经存在。它不能使用user.team,但可以使用其他配置选项来设置预告片。

您尝试用 user.team 的值简单地替换模板中的 %(team) 标记的示例如下所示:

#!/bin/sh

file="$1"
from="$2"

[ "$from" = commit ] && exit 0

TEAM=$(git config user.team) perl -i -e 's/\%\(team\)/$ENV{TEAM}/g' "$file"

这会将配置值 pull 入传递给 Perl 的 TEAM 环境变量,然后 %(team) 被该环境变量的值替换。您也可以使用 sed 执行此操作,但您必须确保您的 user.team 值不包含斜杠(或您使用的任何其他分隔符):

sed -i -e "s/%(team)/$(git config user.team)/g"

请注意,此构造适用于 GNU sed; BSD sed,就像在 macOS 上一样,在使用 -i 时需要一个额外的参数。由于这不可移植,您应该避免使用这种语法并改用 Perl 或 Ruby,除非您确定它只会在单一操作系统上使用。

关于git - 如何在提交消息中自动添加全局配置变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70584271/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com