2009-12-07 7 views
10

मैं दो अलग-अलग गिट रेपो बनाए रखता हूं जिन्हें कुछ फ़ाइलों को साझा करने की आवश्यकता होती है, और मैं एक रेपो में दूसरे में दिखाना चाहता हूं। प्रत्येक रेपो में चल रहे रखरखाव के लिए ऐसा करने का एक अच्छा तरीका क्या है?मैं दो अलग-अलग गिट रिपॉजिटरीज़ (क्लोन नहीं) में फ़ाइलों को कैसे सिंक कर सकता हूं और इतिहास बनाए रख सकता हूं?

मैं perlfaq (Github) के रखरखाव में से एक रहा हूं, और हाल ही में मैं पर्ल कोर प्रलेखन को बनाए रखने की भूमिका में गिर गया, जो कि गिट में भी है।

पेर्लफाक को बनाए रखने से बहुत पहले, यह एक अलग स्रोत नियंत्रण भंडार में रहता था। मैंने हाल ही में इसे गिट में परिवर्तित कर दिया। समय-समय पर, perl5-porters में से एक साझा फ़ाइलों को perlfaq repo और perl repo में सिंक करेगा। चूंकि हमने गिट में स्विच किया है, इसलिए हम उपकरण को थोड़ा आलसी कर रहे हैं, और अब मैं वह हूं जो ऐसा करता है। समय के लिए, दो प्रतिनिधि अलग रहने जा रहे हैं।

वर्तमान में, पर्ल का एक नया (मासिक) जारी करने के लिए पूछे जाने वाले प्रश्न सिंक करने के लिए, मैं कहना है कि मैं केवल perlfaq रेपो में perlfaq * .pod फ़ाइलों की प्रतिलिपि और उन्हें पर्ल रेपो में ओवरले लगभग शर्मिंदा हूँ । यह इतिहास खो देता है, आदि। इसके अतिरिक्त, कभी-कभी कोई व्यक्ति पर्ल रेपो में उन फ़ाइलों में बदलाव करता है और मैं इसे ओवरराइट कर देता हूं (हां, git diff को बेवकूफ़ बनाओ!)। फाइलों में रेपो में समान पथ नहीं हैं, लेकिन ऐसा कुछ है जिसे मैं बदल सकता हूं, मुझे लगता है।

मैं क्या करना चाहता हूं, बरसात और टट्टू के जादुई ब्रह्मांड में, वस्तुओं को पर्ल्फाक रेपो से खींचती है और उन्हें पर्ल रेपो में लागू करती है, और इसके विपरीत, इतिहास और प्रतिबद्ध आईडी में मेल खाता है से प्रत्येक।

  • बनाना पैच काम करता है, लेकिन यह भी इसे प्रबंधित करने
  • Git submodules पूरे बाहरी रेपो में खींचने के लिए केवल काम करने लगते हैं एक बहुत काम है
  • मैं, SVN की फाइल बाहरी की तरह कुछ नहीं मिला है लेकिन कि दोनों दिशाओं में वैसे भी काम करेगा
  • मैं सिर्फ एक और से वस्तुओं को लाने के लिए अच्छा लगेगा उन्हें अन्य

क्या इस का प्रबंधन करने के लिए एक अच्छा तरीका है में चेरी लेने?

+0

संभावित डुप्लिकेट [कैसे एक गिट रेपो से दूसरे (एक क्लोन नहीं) फ़ाइलों को स्थानांतरित करने के लिए, इतिहास को संरक्षित करना] (http://stackoverflow.com/questions/1365541/how-to-move-files-from-one -गिट-रेपो-टू-एक-न-क्लोन-संरक्षित-इतिहास) – dr0i

+0

यह वास्तव में एक डुप्लिकेट नहीं है।मैं एक बार की चाल के बजाए दो अलग-अलग रिपो में चल रहे विकास के साथ समन्वय करने के बारे में पूछ रहा हूं। –

+0

ठीक है, लेकिन ऐसा लगता है कि इसका कोई आसान जवाब नहीं है, "डुप्लिकेट" में उत्तर स्क्रिप्ट करने और उस स्क्रिप्ट को निष्पादित करने के लिए गिट हुक का उपयोग करने के बारे में क्या? – dr0i

उत्तर

1

स्क्रिप्ट git subtree के साथ संयुक्त उपट्री विलय रणनीति, यहां सहायता कर सकती है।
यह पुश और पुल के लिए काम करेगा।
अभी भी कुछ issue with merges है, हालांकि Git1.7.0 इसे '-Xsubtree' विकल्प के साथ ठीक करेगा, लेकिन यह अभी भी देखने लायक है।

+0

ये सबट्री नहीं हैं, इसलिए ऐसा लगता है कि यह काम नहीं करेगा। एक रेपो में एक निर्देशिका से चयनित फाइलें किसी अन्य निर्देशिका में दूसरी निर्देशिका में दिखाई देती हैं। उस अन्य निर्देशिका में बहुत सी फाइलें हैं जिन्हें पहले रेपो में नहीं जाना चाहिए। –

-2

मुझे लगता है कि आप perl repo में perlfaq इतिहास चाहते हैं। मैं आम धारणा Git करने के लिए ऐसा करते हैं चाहते हैं (एक पर्ल रेपो में)

git remote add perlfaq git://perlfaq... # real uri 
git checkout perlfaq/master -b perlfaq 
git checkout master # or whatever 
git merge perlfaq 

विपरीत करता नहीं एक आम इतिहास मर्ज करने के लिए करना होगा। मुझे पता है कि मैं regen2 में 3+ repo इस तरह विलय कर रहा था। यह पहली बार दर्दनाक हो सकता है। लेकिन उसके बाद यह भी दर्दनाक नहीं होना चाहिए। दुर्भाग्यवश आप केवल 1-तरफ विलय कर सकते हैं, लेकिन यदि आप चाहें तो पर्ल रेपो से पर्लफाक में पैच को चुन सकते हैं।

+1

मैं दो रिपोज़ मर्ज नहीं करना चाहता हूं। मैं चयनित फाइलों (ऑब्जेक्ट्स) को एक रेपो में दूसरे में मर्ज करना चाहता हूं। –

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

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