10

ファイルの行の長さが80文字未満かどうかを確認するために、Pythonでコミット前のgitフックを実行しようとしています。ただし、そのようなファイル/ディレクトリエラーはありません。私は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())
4

2 に答える 2

30

プレコミット ファイルに不要なキャリッジ リターンが含まれています。これは、Windows でファイルを編集し、そのファイルを Linux コンピューターにコピーした場合に発生する可能性があります。

次のコマンドを試してください。

cp .git/hooks/pre-commit /tmp/pre-commit
tr -d '\r' < /tmp/pre-commit > .git/hooks/pre-commit

そして、gitコマンドを再実行します。

于 2013-09-19T04:15:13.707 に答える