我正在尝试在 python 中执行预提交 git 钩子(Hook)来检查文件的行长度是否小于 80 个字符。但是我得到一个没有这样的文件/目录的错误。我在 Fedora 上并设置了 #!usr/bin/python.help 将不胜感激
#!/usr/bin/env python
#-*- mode: python -*-
from subprocess import Popen, PIPE
import sys
def run(command):
p = Popen(command.split(), stdout=PIPE, stderr=PIPE)
p.wait()
return p.returncode, p.stdout.read().strip().split(), p.stderr.read()
def precommit():
_, files_modified, _= run("git diff-index --name-only HEAD")
i=1
for fname in files_modified:
file = open(fname)
while i==1:
line = file.readline()
if not line:
break
elif len(line)>80:
print("Commit failed: Line greater than 80 characters")
return 1
return 0
sys.exit(precommit())
最佳答案
您的预提交文件中有多余的回车符。如果您在 Windows 中编辑文件并将文件复制到 Linux 计算机,就会发生这种情况。
试试这些命令:
cp .git/hooks/pre-commit /tmp/pre-commit
tr -d '\r' < /tmp/pre-commit > .git/hooks/pre-commit
然后重新运行您的 git
命令。
关于python - Pre Commit hook git错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18885644/