आपका iconv अगर कुछ UTF-8 नहीं है, लेकिन अन्य एन्कोडिंग इतना आसान नहीं हो सकता है आपको बताने के लिए सक्षम हो सकता है (विशेष रूप से 8-बिट, एकल बाइट एन्कोडिंग जैसे आईएसओ -885 9 -1)।
गिट के लिए, आप वास्तव में प्री-प्रतिबद्ध हुक के बजाय एक अपडेट हुक चाहते हैं (ताकि नियम को लागू करने के लिए इसे केंद्रीय भंडार में चलाया जा सके)।
Git पूर्व प्रतिबद्ध हुक:
#!/bin/sh
git ls-files -z -- |
xargs -0 sh -c '
e=""
for f; do
if ! git show :"$f" |
iconv -f UTF-8 -t UTF-8 >/dev/null 2>&1; then
e=1
echo "Not UTF-8: $f"
#exit 255 # to abort after first non-UTF-8 file
fi
done
test -z "$e"
' -
Git ls-फाइलों पर --
कमांड लाइन के बाद एक या अधिक Git pathspecs रखो pathnames कि जाँच कर रहे हैं सीमित करने के लिए।
एक अद्यतन हुक में अद्यतन रेफरी की नोक जाँच करने के लिए, git ls-tree --name-only -r -z $3 -- |
का उपयोग pathnames (उत्पन्न करने के लिए ध्यान दें: यह कैसा Git ls-फ़ाइलें पैटर्न pathspecs संभाल नहीं करता, इसलिए खोल में किसी भी पैटर्न आधारित छानने करना कोड) और git show "$3:$f"
फ़ाइल सामग्री निकालने के लिए। आप न केवल टिप प्रतिबद्धता की जांच कर सकते हैं, बल्कि प्रत्येक नई प्रतिबद्धता (के बजाय git rev-list ^$2 $3
में प्रत्येक प्रतिबद्धता के लिए लूप)।
स्रोत
2010-06-30 12:58:24