2011-08-04 14 views
37

में गिटहब विकी को एकीकृत करने के लिए कैसे मैं अपने सभी स्रोत कोड और दस्तावेज़ को एक ही गिट भंडार में रखना चाहता हूं। मेरे पास पहले से ही मेरे मुख्य प्रोजेक्ट में एकीकृत जिथब पेज हैं और अब मैं गीथब विकी के साथ ऐसा करना चाहता हूं।मुख्य परियोजना

मुझे पता है कि जिथब विकी सादे गिट भंडार हैं। मेरी योजना विकी को मेरे मुख्य रेपो के रिमोट के रूप में जोड़ना और सबकुछ एक ही स्थान पर रखना है। हालांकि विकी रेपो में सब कुछ मूल निर्देशिका में है और इस प्रकार मेरी मुख्य परियोजना को अव्यवस्थित कर देगा।

क्या किसी ने इससे पहले कोशिश की है? इसे संभालने का सबसे अच्छा तरीका क्या है?

+0

मैं सबमिशन के साथ गया। उत्तर के लिए धन्यवाद। –

+1

यह विकी के साथ एक सबमिशन के रूप में आपके लिए कैसे जा रहा है? मैं कुछ ऐसा करना चाहता हूं लेकिन मेरे सिर को सबमिशन व्यवसाय के चारों ओर लपेटा नहीं है। यह ब्रांचिंग और विलय के साथ कैसे सामना करेगा, क्योंकि मैं विकी के लिए अपने कोड की "विकसित" शाखा बनाना चाहता हूं, इसलिए जब मैं इसे अपनी मास्टर शाखा के साथ विलय करता हूं, तो यह परिवर्तनों को भी मर्ज करेगा लाइव विकी शाखा। –

+0

लेकिन इसे सबमिशन के रूप में रखने का क्या मतलब है?वैसे भी कोई भी इसे संशोधित या उपयोग नहीं कर सकता है। क्या आप इसे गीथब के बाहर कहीं भी इस्तेमाल कर सकते हैं? मेरा मतलब है कि आप इसे एक अलग निर्देशिका में जीथब रेपो और बस के रूप में प्राप्त कर सकते हैं। मुख्य रिपो से उस निर्देशिका को गिटिग्नोर करें। – jayarjo

उत्तर

32

आप विकी को submodule के रूप में जोड़ना चाहते हैं। एक ही विकी गिट रेपो एक रिमोट के रूप में जुड़ा हुआ है, लेकिन इसके साथ एक उपनिर्देशिका के भीतर .git dir।

git submodule add git://github.com/you/proj.wiki 

विकी रिपो को विकी/डीआईआर में एक सबमिशन के रूप में जोड़ने के लिए अपने मुख्य रेपो की जड़ में।

+7

आजकल यह वास्तव में 'git: // github.com/you/proj.wiki' – cregox

+2

क्या यह ग्राफ़ टैब में विकी में दिखाई देने वाले आपके परिवर्तनों को अनुमति देता है? – devlord

3

आप या तो विकी रेपो के साथ submodule बना सकते हैं या नियमित रूप से प्राप्त कर सकते हैं और शाखाओं को आगे और पीछे स्विच कर सकते हैं।

5

मुझे यह सब बहुत कठिन लगता है - मेरी राय में, जिथब विकी मुख्य भंडार की शाखाएं होनी चाहिए, या कम से कम इसे एक विकल्प बनाना संभव होना चाहिए।

फिर भी, मेरा मानना ​​है कि सबसे अच्छा समाधान मुख्य भंडार में बस कदम विकि के लिए है, एक subtree merge का उपयोग कर docs/ या wiki में कहते हैं,। उदाहरण के लिए, मान लें कि आपका भंडार you/proj है, आपकी विकी इस पर होगी: git://github.com/you/proj.wiki। फिर अपने मुख्य रेपो में मर्ज करने के, आप क्या करेंगे:

git clone git://github.com/you/proj 
cd proj 
git remote add -f wiki git://github.com/you/proj.wiki 
git merge -s ours --no-commit --allow-unrelated wiki/master 
git read-tree --prefix=wiki/ -u wiki/master 
git commit -m "Github wiki subtree merged in wiki/" 

तुम भी विकि पक्ष पर काम कर रहे सार्वजनिक योगदान का स्वागत करने के रख सकते हैं, लेकिन फिर डॉक्टर उन्हें अपने मुख्य प्रलेखन में आप मनचाहे ढंग से। समीक्षा के बाद में नए परिवर्तन मर्ज करने के लिए, आप क्या करेंगे:

git pull -s subtree wiki master 

दुर्भाग्य से, विलय में परिवर्तन अन्य तरीके से कुछ हद तक जटिल काम है, और वैसे भी, तो आप शायद एक बार बात के रूप में इस करना चाहिए, तो विकि बंद करते हैं, या रेपो स्रोत पर रीडायरेक्ट करें ...

इसके अलावा, इस दृष्टिकोण की एक प्रमुख चेतावनी यह है कि git log wiki/Home.md (उदाहरण के लिए) वास्तव में विकी पेज से इतिहास नहीं दिखाता है। इतिहास है, लेकिन किसी भी तरह git-log इसे ट्रैक करने में विफल रहता है। यह गिट सबट्री से संबंधित known limitation है। इसे ठीक करने का एक और समाधान इतिहास रखने के लिए filter-branch और नियमित विलय, एक बार करना होगा।

मेरे लिए, मुख्य स्रोत पेड़ के हिस्से के रूप में विकी रखने का मुख्य लाभ यह है कि पुल अनुरोध और परिवर्तन कोड और दस्तावेज़ीकरण में समन्वयित किए जा सकते हैं। यह लोगों को यह मानने के बजाय दस्तावेज़ों को शिप करने के लिए यह बहुत आसान बनाता है कि लोग इसे ऑनलाइन पढ़ लेंगे ...

+0

मेरे मामले में मुझे अभी भी मुख्य परियोजना रेपो के लिए पूरी तरह से प्रतिबद्ध मेरे विकी फ़ोल्डरों को प्राप्त करने के लिए 'गिट पुश' की आवश्यकता है। – hyip

+0

यकीन नहीं क्यों, लेकिन 'गिट लॉग विकी /' इस तकनीक के साथ विकी का इतिहास नहीं दिखाता है। मुझे समझ में नहीं आता क्यों, क्योंकि 'गिट लॉग --all' * करता है * उन परिवर्तनों को दिखाता है ... – anarcat

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