2011-10-26 3 views
7

पर आधारित गिट में चरण परिवर्तन हेडर/फ़ूटर में मेरा बहुत से डीबग कोड लपेटा गया है। आम तौर पर मैं एक स्क्रिप्ट चलाता हूं जो मंच से पहले सभी को स्रोत से हटा देता है और बदलाव करता है। यदि डीबग कोड को प्रतिबद्धता जारी रखने की आवश्यकता है तो मैं git add -p चलाऊंगा और अलग-अलग हिस्सों को चरणबद्ध कर दूंगा।रीजिक्स

मेरा सवाल यह है कि यदि रेगेक्स के आधार पर परिवर्तनों को चरणबद्ध करना संभव है? उदाहरण के लिए, जावास्क्रिप्ट के इस स्निपेट दिया:

function littleNinja(sword) { 
    /* debug:start */ 
    console.log(sword); 
    /* debug:stop */ 
    // do stuff 
} 

मैं Git के बीच और debug:start और debug:stop सहित लाइनों मंच नहीं करना चाहता है, और मुझे आशा है कि इस प्रक्रिया स्वचालित किया जा सकता है।

+0

यह संभव नहीं है। यहां तक ​​कि यदि यह भी था, तो कभी-कभी डीबग खंड एक और खंड से अविभाज्य होगा जो आप चाहते हैं। आपको एक कस्टम स्क्रिप्ट चाहिए जो आपके लिए इस स्थिति को संभालेगी, या आपसे बातचीत को इंटरैक्टिव रूप से प्रतिनिधि करेगी। तो शायद एक गिट कमांड के रूप में स्क्रिप्ट उपनाम। – wilhelmtell

+0

अनुमान लगाया गया कि मामला था, लेकिन दोबारा जांच करना चाहता था। धन्यवाद। –

उत्तर

8

ऐसा करने का एक अच्छा तरीका clean and smudge filters का उपयोग चिह्नित लाइनों को चिह्नित करने के लिए करना है। (नीचे दिया गया विवरण अनिवार्य रूप से "प्रो गिट" के उस खंड में वर्णित प्रक्रिया के समान है, और यह git attributes दस्तावेज़ीकरण में बहुत समान है।) सबसे पहले, हमें एक कमांड की आवश्यकता है जो (और सहित)

*.js filter=strip-debug 

और:

sed '/debug:start/,/debug:stop/d' < foo.js 

अब जो निम्न पंक्ति में शामिल है अपना Git भंडार के शीर्ष स्तर में एक .gitattributes फ़ाइल बनाने: -) प्रत्येक debug:start और debug:end सौभाग्य से, इस sed के साथ एक सरल काम है अब परिभाषित करें किक्या है

git config filter.strip-debug.clean "sed '/debug:start/,/debug:stop/d'" 
git config filter.strip-debug.smudge cat 

मैं है (बहुत संक्षेप में) इस परीक्षण किया है और यह तुम क्या चाहते करने के लिए लगता है: ४०७३५६२३२१० फिल्टर दोनों जब 'सफाई' (मचान पर) या (चेकआउट पर) 'smudging' करता है।

+0

बहुत बढ़िया! +1 ट्रेव: आपको मार्क के जवाब को स्वीकार करना चाहिए, यह मेरी तुलना में कहीं बेहतर है (और, मैं इसे हटा नहीं सकता क्योंकि इसे स्वीकार किया जाता है)। – greg0ire

+0

बहुत बढ़िया। यह विस्तार से करने के तरीके को समझाने के लिए बहुत बहुत धन्यवाद। –

संबंधित मुद्दे