【问题标题】:Parse branch name, initiate commit with name in the commit message解析分支名称,使用提交消息中的名称发起提交
【发布时间】:2019-01-07 16:14:35
【问题描述】:

我的团队对分支名称使用通用命名约定,其中在分支名称中包含 Jira 任务编号。

feature/ACD-1664_update-api-call

feature/VZ-1943_new-provider-template

hotfix/RV-977_fix-loading-issue


我想创建一个git alias,它会自动存根包含 Jira 任务编号的提交消息。理想情况下,一些 bash 脚本将解析分支名称并回显 commit -m 命令并预先创建消息的第一部分。

  1. 我需要regex 发出提交消息。

我需要从feature/ACD-1664_update-api-call中拉出ACD-1664

  1. 在一个 stubbed-out commit 命令中将此字符串回显到终端,例如:

git commit -m "ACD-1664 | <cursor>"

【问题讨论】:

  • 也许用一个简单的alias 就可以了?

标签: regex bash git git-alias


【解决方案1】:

虽然这不是您要求的解决方案,但我想暗示另一种方法来解决这个问题,使用提交挂钩:

您可以在 .git/hooks 中放入一个包含以下内容的 commit-msg 文件:

#!/bin/bash
current_branch="$(git rev-parse --abbrev-ref HEAD)"
tmp=$(mktemp) || exit
echo "$current_branch $(cat "$1")" > "$tmp"
mv "$tmp" "$1"

(感谢大家在您的帮助下改进了 bash 语法 here

然后它会自动在你的提交消息前面加上分支名称,这在 JIRA 中起到了作用。

在极少数情况下您不想触发钩子,请执行以下操作:

git commit -n -m"Your message"

【讨论】:

  • 请注意,... $(cat "$1") > "$1" 有可能破坏输出文件的内容,具体取决于 shell 选择的操作顺序,之前 cat 具有有机会阅读这些内容。将内容保存在显式的单独步骤中更为明智。 (很明显,如果您已经对其进行了测试并且它可以工作,那么在 your shell 中就可以了。:-) 我认为所有现代 shell 都以合理和安全的顺序执行此操作,但我不会假设)
  • @torek 感谢您的评论。确实,它对我和我的同事来说已经足够好用了,但现在我知道我应该试着让它更安全:-)
  • @torek 已编辑以考虑您的评论。
猜你喜欢
  • 2021-08-07
  • 2017-11-13
  • 2022-08-02
  • 2014-04-01
  • 2023-01-01
  • 2022-01-19
  • 2019-01-31
  • 2017-06-24
  • 2014-10-31
相关资源
最近更新 更多