2009-06-30 1 views
7

मैं एक गिट समर्थन उपकरण में एक कथित बग को ट्रैक करने के लिए कुछ काम कर रहा हूं, और मैं प्रायोगिक उद्देश्यों के लिए एक भंडार (संभवतः कई बार) की प्रतिलिपि बनाना चाहता हूं। मैं मूल भंडार ऑब्जेक्ट डेटाबेस में हार्ड लिंक बनाने के लिए चाहता हूं ताकि समान एसएचए मानों के साथ समान वस्तुओं की कई प्रतियों को संग्रहीत डिस्क स्थान को बर्बाद न किया जाए। Git क्लोन अच्छी तरह से पूरा करता है, लेकिन दुर्भाग्य से मैं Git क्लोन मुझे भंडार मूल भंडार की तरह की स्थापना की एक नई प्रतिलिपि देना सुनिश्चित करने के लिए एक रास्ता खोजने के लिए प्रतीत नहीं कर सकते हैं: वापस की नकल की रिपोजिटरी कोअंतरिक्ष को बर्बाद किए बिना मैं एक गिट भंडार की प्रतिलिपि/क्लोन कैसे करूं?

  1. क्लोन अंक अपने मूल रूप में, लेकिन मैं इसे कॉपी किया भंडार
  2. क्लोन केवल एक शाखा के साथ हवाएँ रूप में एक ही मूल है करना चाहते हैं, लेकिन मैं इसे कॉपी किया भंडार

मैं की शाखाओं के सभी करना चाहते हैं गिट क्लोन --mirror का उपयोग करके इनमें से कुछ को कम कर सकते हैं, लेकिन यह केवल एक नंगे भंडार बनाने के लिए काम करेगा, और जिस भंडार का मैं प्रयोग कर रहा हूं पर नंगे नहीं है, और समर्थन उपकरण जो मैं डीबग करने की कोशिश कर रहा हूं वह नंगे भंडारों पर काम नहीं करता है।

मैंने मूल ऑब्जेक्ट डेटाबेस में हार्डलिंक्स से भरा एक नया ऑब्जेक्ट डेटाबेस बनाने के लिए एक त्वरित खोल लूप लिखने के बारे में सोचा, और फिर मूल .git निर्देशिका से बाकी सब कुछ कॉपी कर रहा है, और उसके बाद गिट चेकआउट कर रहा हूं, लेकिन मैं चिंतित है कि यह त्रुटि प्रवण होने के लिए पर्याप्त जटिल है और मुझे इस प्रकार की निम्न-स्तरीय सर्जरी को सही तरीके से करने के लिए पर्याप्त जानकारी नहीं है और सूक्ष्म त्रुटियों के साथ एक भंडार का निर्माण करेगा। क्या यह दृष्टिकोण सिद्धांत रूप में काम करना चाहिए?

अभी तक बेहतर है, क्या यह क्लोन बनाने के लिए विकल्पों को पास करने का कोई तरीका है जो मैं चाहता हूं?

क्या कोई तरीका है कि मैं एक नया भंडार बना सकता हूं लेकिन यह बताता हूं कि इसका ऑब्जेक्ट डेटाबेस किसी अन्य निर्देशिका में है, मूल रूप से इसे मूल भंडार से ऑब्जेक्ट डेटाबेस साझा करने के लिए कह रहा है?

यदि उपरोक्त में से कोई भी काम नहीं करता है, तो मुझे केवल एक सीपी-पीआर के साथ छोड़ दिया जाता है, जो बहुत सारी जगहों का उपभोग करने जा रहा है और समय लेने वाला है।

उत्तर

5

मैं तुम्हारे लिए

git clone --reference=/path/to/existing/repo url 

देख रहे हैं Git शब्दावली में इस "विकल्पों" का उपयोग कर के रूप में जाना लगता है। इस विकल्प के साथ संभावित समस्याएं हैं, जैसा कि git clone help में उल्लिखित है लेकिन यह आपके उद्देश्यों के अनुरूप हो सकता है।

आप डस्टिन के सहायक git-alternates में रुचि भी ले सकते हैं।

0

"गिट क्लोन --mirror" का उपयोग करें, फिर इसे नंगे से गैर-नंगे भंडार में बदलें (repo.git repo/.git, copy.git/config फ़ाइल का नाम बदलें, "गिट चेकआउट हेड" का उपयोग करके चेकआउट कार्य निर्देशिका)। नोट: मैंने यह जांच नहीं की है कि यह इरादे के रूप में काम करता है!

0

--no-checkout विकल्प के साथ गिट क्लोन का उपयोग करें। चेकआउट से बचने के लिए गिट पुल के बजाए गिट फ़ेच के साथ गिट रेपॉजिटरी अपडेट करें।