没腿的鸟 发表于 2024-9-5 22:57:35

git提交自动带上 Signed-off-by信息

为了确保在使用 Signed-off-by 签名的同时保留你的提交消息,你需要修改 prepare-commit-msg 钩子脚本,以便它不会丢失原始的提交信息。
增长prepare-commit-msg 钩子以保留提交消息

prepare-commit-msg 钩子的目的是在提交信息文件中插入额外的内容,而不是替换或丢失原始消息。我们可以修改钩子脚原来确保原始的提交消息保持不变。
以下是一个改进的 prepare-commit-msg 脚本,它会保留原始提交消息并在末尾添加 Signed-off-by 行:

[*]  
touch .git/hooks/prepare-commit-msg  
[*] 编辑 prepare-commit-msg 文件
使用以下脚本内容来确保保留原始提交信息并在其末尾添加 Signed-off-by 行:
#!/bin/sh

COMMIT_MSG_FILE=$1

# 如果提交信息是合并提交,或者已经有签名,不修改
if [ -f "$COMMIT_MSG_FILE" ]; then
if grep -q 'Signed-off-by:' "$COMMIT_MSG_FILE"; then
    exit 0
fi

# 将原始提交信息读入变量
COMMIT_MSG=$(cat "$COMMIT_MSG_FILE")

# 获取当前的用户名和电子邮件
SIGN_OFF="Signed-off-by: $(git config user.name) <$(git config user.email)>"

# 重新写入提交信息,加上 'Signed-off-by'
echo "$COMMIT_MSG" > "$COMMIT_MSG_FILE"
echo >> "$COMMIT_MSG_FILE"
echo "$SIGN_OFF" >> "$COMMIT_MSG_FILE"
fi

[*] 赋予脚本执行权限
chmod +x .git/hooks/prepare-commit-msg
解释



[*]检查是否已经有签名:脚本起首检查提交信息中是否已经包含 Signed-off-by 行,假如有,脚本不做任何更改。
[*]读取原始提交信息:脚本读取提交信息并将其存储在变量中。
[*]重新写入提交信息:脚本将原始提交信息和 Signed-off-by 行写回到提交信息文件中。
测试


[*] 执行提交操作:
举行一次新的提交,检查提交信息是否包罗你输入的消息以及 Signed-off-by 行。
[*] 检察提交信息:
确保你的提交信息中既包含自定义消息,也包罗 Signed-off-by 行。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: git提交自动带上 Signed-off-by信息