Python 中的 Git Commit-Msg。收到 EOF 错误
Posted
技术标签:
【中文标题】Python 中的 Git Commit-Msg。收到 EOF 错误【英文标题】:Git Commit-Msg in Python. Getting an EOF Error 【发布时间】:2022-01-07 08:45:32 【问题描述】:我正在为 .git/hooks/commit-msg 创建一个 commit-msg,当我在此行询问用户 input() 时出现 EOF 错误
response = input("Are you sure you want to commit? [y/N]: ")
如果有人能帮我找出问题所在!
Output log
#!/usr/bin/python
import sys
import re
def main():
# open file to read every lines
with open(sys.argv[1], "r") as fp:
lines = fp.readlines()
for idx, line in enumerate(lines):
if line.strip() == "# ------------------------ >8 ------------------------":
break
if line[0] == "#":
continue
# warning message
if (re.search('#[0-9]+$', line) is None):
print("Warning: add issue number related to this commit.")
# ask user to confirm until valid response
try:
while True:
response = input("Are you sure you want to commit? [y/N]: ")
if (response == 'y'):
sys.exit(0)
elif (response == 'N'):
sys.exit(1)
except EOFError as e:
print(e)
# successful commit
print("Success: Perfect commit!")
sys.exit(0)
if __name__ == "__main__":
main()
【问题讨论】:
【参考方案1】:commit-msg
挂钩在没有标准输入的情况下运行(更具体地说,标准输入从 /dev/null
重定向),因此任何从标准输入读取的尝试都会立即读取 EOF。
如果标准输出是 TTY,您可以尝试从 /dev/tty
读取,但请注意,它不能保证您会拥有一个。提交可以在没有任何终端的情况下以非交互方式运行,并且钩子并非设计为交互的。在这种情况下,您必须决定要做什么。
【讨论】:
以上是关于Python 中的 Git Commit-Msg。收到 EOF 错误的主要内容,如果未能解决你的问题,请参考以下文章
git hook之commit-msg用于检测提交时间是否正确
git hook之commit-msg用于检测提交时间是否正确
git学习--commit-msg缺失导致的missing Change-Id问题分析
[原创]升级Gerrit的commit-msg,检查git commit时必须填写开发任务编号TaskID
为啥 Windows 上的 git commit-msg 与正则表达式不匹配
解决fatal: cannot run .git/hooks/commit-msg: No such file or directory的问题