Python 中的 git commit-msg。收到 EOF 错误

Git Commit-Msg in Python. Getting an EOF Error

提问人:Sun Jing Woo 提问时间:12/1/2021 更新时间:12/1/2021 访问量:373

问:

我正在为 .git/hooks/commit-msg 创建一个 commit-msg,如果有人可以帮助我找出问题所在,我在要求用户在此行输入()时收到 EOF 错误!response = input("Are you sure you want to commit? [y/N]: ")

输出日志

#!/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()
python git 输入 提交 eof

评论


答:

0赞 bk2204 12/1/2021 #1

钩子在没有标准输入的情况下运行(更具体地说,标准输入重定向自 ),因此任何从标准输入读取的尝试都将立即读取 EOF。commit-msg/dev/null

如果标准输出是 TTY,您可以尝试读取,但请注意,不能保证您根本就有一个。提交可以在没有任何终端的情况下以非交互方式运行,并且钩子不是交互式的。在这种情况下,您必须决定要做什么。/dev/tty