2012-04-15 36 views
7

मैं सत्यापन के विकास कर रहा हूँ और उपयोगिता linting हुक प्रतिबद्ध, Git एक सहितGit पूर्व प्रतिबद्ध हुक: बदली हुई फाइलों की हो रही सूची

https://github.com/miohtama/vvv

वर्तमान में सत्यापनकर्ताओं और linters पूरे के खिलाफ चलाए जा रहे हैं विभिन्न साथ एकीकृत किया जा करने के लिए प्रत्येक प्रतिबद्धता पर परियोजना कोडबेस। हालांकि, यह केवल बदली गई फ़ाइलों के खिलाफ चलाने के लिए और अधिक अनुकूल होगा। इस के लिए, मैं (अजगर में)

https://github.com/miohtama/vvv/blob/master/vvv/hooks/git.py

क्या विकल्प मैं बदली हुई फ़ाइलें सूची निकालने के लिए (पायथन में है कि अगर मायने रखती है) मेरी Git precommit हुक में पता करने के लिए बदली हुई फ़ाइलें सूची की आवश्यकता होगी?

उत्तर

5

पूर्व प्रतिबद्ध हुक एक दर्द का एक सा है, अगर तुम सच में, चीजें काम "सही" बनाना चाहते क्योंकि जो काम पेड़ में है जरूरी क्या प्रतिबद्ध किया जा रहा है के रूप में ही नहीं है:

$ echo morestuff >> file1; echo morestuff >> file2 
$ git add file1 # but not file2 
$ git commit -m 'modified two files but check in just one' 

"चेक-इन होने के बारे में क्या है" की एक सूची प्राप्त करने के लिए आप git diff-index --cached HEAD का उपयोग कर सकते हैं। यह भी देखें, उदाहरण के लिए, http://newartisans.com/2009/02/building-a-better-pre-commit-hook-for-git/

+0

लेख लिंक के लिए: फाइलों के बदले में जांच के लिए बस भंडार की दूसरी प्रतिलिपि रखने के लिए काफी दर्द :( –

+0

आपको रेपो की दूसरी प्रति की आवश्यकता नहीं है, लेकिन आप (आप क्या कर सकते हैं 'कर रहे हैं) एक दूसरे कार्य-वृक्ष की आवश्यकता है। मूल रूप से दो विकल्प हैं: इंडेक्स को कहीं और जांचें, ताकि आपको एक काम करने वाला पेड़ मिल जाए जो मेल खाने के लिए मेल खाता हो; या, सत्यापित करें कि वर्तमान कार्य पेड़ "साफ है ", ताकि आप वर्तमान निर्देशिका का उपयोग कर सकें (पूर्व-प्रतिबद्ध हुक कार्य के पेड़ में चलाया जाता है)। – torek

+0

पूरी तरह से काम करता है, यह अब तक पूर्ण समाधान है https://github.com/miohtama/vvv/blob/ मास्टर/वीवीवी/हुक/git.py –