これが私の差分の最初の部分です。
#!/usr/bin/env python
import fileinput
import difflib
import subprocess
import sys
# for debugging
def info(type, value, info):
import traceback
traceback.print_exception(type, value, info)
print
pdb.pm()
sys.excepthook = info
import pdb
#end debugging
if len(sys.argv) == 8:
# assume this was passed to git; we can of course do
# some parsing to check if we got valid git style args
args = [sys.argv[2], sys.argv[5]]
elif len(sys.argv) == 3:
args = sys.argv[1:]
else:
exit("Not a valid number of args (2 or 7) to this diff program")
print "Files: " + ' '.join(args)
for filename in args:
filetype = subprocess.check_output(['file', filename])
if filetype.find('text') == -1:
args.insert(0, 'diff')
print "A binary file was found: " + filename + ", deferring to diff"
exit(subprocess.call(args))
diff
バイナリ (または非テキスト) ファイルが検出されると、バイナリ ファイルが異なるかどうかを取得するために fork を試みます。目標は、この python 差分プログラムを git の外部差分として使用することです。
しかし、バイナリファイルにヒットすると、このぞっとするような「外部差分が終了しました。<file> で停止します」というメッセージが表示されます。
git は私のプログラムをどのように評価していますか? 死んだことをどうやって知るのですか?戻り値は異なる状態を示すはずではありませんか?