【发布时间】:2021-12-25 21:52:06
【问题描述】:
如何以不要求合并提交消息的方式使用git flow release finish?正如我所料,-m 标志没有提供此功能。
当然,目标是能够以不需要交互的方式编写脚本。
【问题讨论】:
-
相关 git-flow 错误:github.com/nvie/gitflow/pull/287
标签: git command-line git-flow
如何以不要求合并提交消息的方式使用git flow release finish?正如我所料,-m 标志没有提供此功能。
当然,目标是能够以不需要交互的方式编写脚本。
【问题讨论】:
标签: git command-line git-flow
可以设置环境变量
export GIT_MERGE_AUTOEDIT=no
git flow release finish -m 'Merge Message' release_branch_name
unset GIT_MERGE_AUTOEDIT
合并时它不会调用编辑器。
如果您切换到我的 fork git-flow AVH Edition,您可以将此选项设置为仅在您使用 git-flow 时有效。
【讨论】:
unset GIT_MERGE_AUTOEDIT 将其关闭(在脚本的末尾,因为很明显,如果您正在阅读此问题,您正在尝试编写 git-flow 脚本)
-m 合并消息也是必须的,否则编辑器也会出现。并且必须在命令行参数中的发布分支名称之前指定。
GIT_MERGE_AUTOEDIT=no git flow release finish -m 'Finished.' 1.0.0
我在使用 -m 标志时遇到了问题。但是,如果您提供没有空格的消息,它会起作用。一定是个bug。
git flow release finish -m 'my_message_with_no_spaces' 1.2.3
【讨论】:
flags:FATAL the available getopt does not support spaces in options
git flow (或多或少)只是git 命令的包装。弹出打开您选择的git-flow-*.sh,复制 git 命令,然后将它们弄乱。在这种情况下,将--no-edit 添加到git merge。这种方法一石二鸟:您只需将这些行复制到您的自动化脚本中即可。
【讨论】:
我已经完成了:
git flow release finish -m "New release:$releaseVersion" -T
$releaseVersion -S $releaseVersion
其中-m 是提交消息,-T 是标记消息,-S 是壁球提交。现在一切都会自动运行:)
【讨论】:
不幸的是,当前版本的 git-flow 没有开箱即用的方法来实现这一点。
通过查看source code,用于合并的git命令为
git merge --no-ff
并且没有办法将--no-edit 标志传递给它。
你可以做几件事:
【讨论】:
您可以通过-m 标志在命令行上指定标签消息。
合并仍有可能发生冲突,但标签操作不会尝试打开标签消息的编辑器。
git flow release finish -m "my awesome release" 1.2.3
https://github.com/nvie/gitflow/wiki/Command-Line-Arguments#git-flow-release-finish--fsumpkn-version
【讨论】:
我不知道 git flow,但如果它支持标准 git 标志,您可以在自动设置中使用 --no-edit 标志到 avoid merge commit messages。
【讨论】:
最后我通过这段代码得到了这个作品:
export GIT_MERGE_AUTOEDIT=no
git flow release finish "$newVer" -m "$newVer" -T "$newVer"
unset GIT_MERGE_AUTOEDIT
【讨论】: