以非交互方式完成git flow 发布结束。

33

我如何使用git flow release finish而不需要输入合并提交信息? 如我所预期的那样,-m标志无法实现此功能。

当然,目标是能够以不需要交互的方式编写脚本。


相关的 git-flow bug:https://github.com/nvie/gitflow/pull/287 - Wilfred Hughes
8个回答

42

您可以设置环境变量

export GIT_MERGE_AUTOEDIT=no

git flow release finish -m 'Merge Message' release_branch_name

unset GIT_MERGE_AUTOEDIT

当您进行合并操作时,它不会调用编辑器。

如果您切换到我的分支git-flow AVH Edition,您可以将此选项设置为仅在使用git-flow时生效。


6
请在脚本末尾添加“unset GIT_MERGE_AUTOEDIT”以关闭此功能(显然,如果您正在阅读此问题,那么您正在尝试编写git-flow脚本)。 - gMale
2
“-m”合并消息也是必需的,否则编辑器也会出现。它必须在命令行参数中指定发布分支的名称之前。 - Abhi Beckert
这是哪个版本的git,Abhi?git文档没有说需要使用消息标志:https://git-scm.com/docs/git-merge/#git-merge---no-edit - Peter van der Does
4
在许多 shell 中,您可以避免取消设置 GIT_MERGE_AUTOEDIT,只需在命令执行期间设置它即可:GIT_MERGE_AUTOEDIT=no git flow release finish -m 'Finished.' 1.0.0。这样翻译后的内容与原文意思相同,但更加通俗易懂。 - tbm

7

我在使用 -m 标志时遇到了麻烦。但是如果您提供没有空格的消息,它就可以正常工作。这一定是一个错误。

git flow release finish -m 'my_message_with_no_spaces' 1.2.3

我也遇到了这个问题。flags:FATAL 可用的 getopt 不支持选项中包含空格 - tbm

6

我已经完成了它。

git flow release finish -m "New release:$releaseVersion" -T
$releaseVersion -S $releaseVersion

这里的-m是提交信息,-T是标签信息,-S是压缩提交。现在一切都将自动工作 :)


4

git flow(或多或少)只是git命令的包装器。打开您选择的git-flow-*.sh,复制git命令,然后对其进行修改。在这种情况下,在git merge中添加--no-edit。这种方法一举两得:您可以将这些行直接复制到自动化脚本中。


喜欢这种方法!使更改变得永久。我还在git-flow-release脚本中添加了-m“”以防止需要标签消息。 - PillowMetal

2
很抱歉,目前版本的git-flow无法直接实现这一点。
通过查看源代码,使用合并的git命令是:
git merge --no-ff

并且没有办法向它传递--no-edit标志。

你可以做以下几件事情:

  • fork这个项目并插入这个功能(可能作为可选标志)
  • 将其作为一个功能提议,等待开发人员实现它

2

1
我不了解git flow,但如果它支持标准的git标志,您可以在自动设置中使用--no-edit标志来避免合并提交信息

0

最终我通过这段代码使它工作了:

export GIT_MERGE_AUTOEDIT=no
git flow release finish "$newVer" -m "$newVer" -T "$newVer"
unset GIT_MERGE_AUTOEDIT

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