git 预提交挂钩不会根据 GIT_EDITOR 值打开 commit_template

问题描述 投票:0回答:1

我正在开发一项更自动的 Git 提交功能。我们使用预提交钩子,该钩子的想法是请求任务 ID 和摘要,然后将它们写入提交模板。我们还希望打开模板时光标位于第三行。

预提交钩子执行后,模板打开,一切正常,只是光标不在第三行。我尝试了很多不同的方法来实现这一点,主要是使用 git config core.editor 命令和 GIT_EDITOR 变量。

在预提交挂钩中:

original_editor=$(git var GIT_EDITOR)

export GIT_EDITOR="nano +3"

在脚本退出之前调试行:

# Debugging line
echo "Original editor: $original_editor"
echo "Using core.editor: $(git config --global core.editor)"  # Debugging line
echo "Using git_editor: $(git var GIT_EDITOR)"  # Debugging line

终端输出:

Original editor: nano
Using core.editor: nano
Using git_editor: nano +3

但是,光标仍然位于提交消息模板中的第一行。

例如,如果我在执行预提交挂钩之前导出 GIT_EDITOR,那么它就会起作用,并且光标位于第三行。

bash git hook githooks pre-commit-hook
1个回答
0
投票

预提交挂钩只是一个看门人:如果脚本以状态 0 退出,则提交发生,如果脚本以任何其他状态退出,则不会发生提交。这对于强制执行很多事情(例如“不要提交秘密”)很方便,但这也是预提交的全部作用。

正如 @phd 在评论中指出的(多次),钩子作为子进程执行,因此它们不会对 shell 环境产生任何持久影响。如果您想要执行您所描述的操作,则需要编写别名或 shell 脚本。

© www.soinside.com 2019 - 2024. All rights reserved.