2011-02-02 7 views
5

मैं नुस्खा described in this question का उपयोग करके एक गिट रेपो को विभाजित करने की कोशिश कर रहा हूं, लेकिन प्रश्न में गिट रेपो बहुत बड़ा है और हजारों काम करता है, इसलिए जब मैं वर्णन के रूप में आदेश चलाने की कोशिश करता हूं तो कमांड लाइन सीमा को मारता है और प्रतिबद्ध फिल्टर विफल रहता है। यदि मैं चरणों में इसे करने की कोशिश करता हूं (पहले इंडेक्स फ़िल्टर लागू कर रहा हूं, फिर फ़िल्टर करें), इंडेक्स फ़िल्टर ठीक काम करता है, लेकिन प्रतिबद्ध फ़िल्टर फंस जाता है और बड़ी मात्रा में मेमोरी (3 जी +) का उपयोग शुरू करता है इसलिए मुझे इसे मारना है। कोई आईडिया कि इसे कैसे किया जाए? शायद मैं यहाँ कुछ गलत कर रहा हूँ?विशाल गिट रेपो को विभाजित करना

उन लोगों के लिए जो अन्य प्रश्न नहीं पढ़ रहे हैं, यह कार्य दो निर्देशिकाओं को एक बहुत बड़े गिट रेपो से विभाजित करना है, जबकि इन निर्देशिकाओं से संबंधित इतिहास को संरक्षित करते हुए।

उत्तर

4

मुझे लगता है कि यह जोड़ा गया है कि जब मुझे लगता है कि इस सवाल का जवाब लिखा है:

--prune-empty

फिल्टर खाली करता उत्पन्न होगा के कुछ प्रकार, कि पेड़ अछूता छोड़ दिया है। यह स्विच गिट-फ़िल्टर-शाखा को ऐसी गतिविधियों को अनदेखा करने की अनुमति देता है। हालांकि, यह स्विच केवल उन कार्यों के लिए लागू होता है जिनमें एक और केवल एक माता-पिता होता है, इसलिए यह विलय बिंदु बनाए रखेगा। साथ ही, यह विकल्प --commit-filter के उपयोग के साथ संगत नहीं है। यद्यपि आपको ऐसा करने के लिए अपने प्रतिबद्ध फ़िल्टर में गिट प्रतिबद्ध-पेड़ "$ @" मुहावरे के बजाय फ़ंक्शन git_commit_non_empty_tree "$ @" फ़ंक्शन का उपयोग करने की आवश्यकता है।

तो इसे git filter-branch --index-filter '...' --prune-empty के साथ एक शॉट दें, क्योंकि यह केवल मेरे अन्य उत्तर में प्रतिबद्ध फ़िल्टर है जो आपको समस्याएं दे रहा था।

+0

ऐसा लगता है कि यह चाल है, धन्यवाद! – StasM

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