2010-03-30 24 views
7

मैं गिट, गिटहब और हेरोोकू की दुनिया में नया हूं। अब तक, मैं इस प्रतिमान का आनंद ले रहा हूं लेकिन एसवीएन के साथ पृष्ठभूमि से आ रहा हूं, चीजें मुझे गिट की दुनिया में थोड़ा जटिल लगती हैं। मुझे एक समस्या का सामना करना पड़ रहा है जिसके लिए मैं समाधान ढूंढ रहा हूं।गिट + गिटहब + हेरोकू

परिदृश्य:

1. मैं सेटअप GitHub पर एक नए निजी परियोजना है। मैं निजी परियोजना विभाजित और अब मैं अपने शाखा में निम्नलिखित संरचना है:

/project 
     /apps 
     /my-apps 
      /my-app-1 
      .... 
      /my-app-2 
      .... 
      /your-apps 
      /your-app-1 
       .... 
      /your-app-2 
       .... 
     /plugins 
     .... 

मैं फ़ोल्डरों मैं चाहता हूँ में से किसी में मेरी मशीन से GitHub पर मेरी कांटा में कोड के लिए प्रतिबद्ध कर सकते हैं। बाद में, इन्हें परियोजना के व्यवस्थापक द्वारा मास्टर रिपोजिटरी में खींचा जाएगा।

2. ऐप फ़ोल्डर में प्रत्येक व्यक्तिगत एप्लिकेशन के लिए, मैंने हेरोोकू पर एक ऐप सेट किया है जो कि एक गिट रेपो है जहां मैं अपनी स्थानीय मशीन से उपयोगकर्ता कहानियों के साथ अपने परिवर्तनों को दबाता हूं। संक्षेप में, ऐप फ़ोल्डर में प्रत्येक ऐप हेरोकू पर होस्ट किया गया एक रेल ऐप है।

समस्या:

क्या मैं चाहता हूँ जब मैं Heroku में अपने परिवर्तनों को धक्का, तो उन्हें भी GitHub पर अपने प्रोजेक्ट कांटा में प्रतिबद्ध किया जा सकता है कि, यह भी नवीनतम कोड हर समय है, इसलिए।

मुझे लगता है कि मुद्दा यह है कि हेरोकू पर कोड एक गिट रेपो है जबकि मेरे पास गिटहब पर मौजूद फ़ोल्डर्स रेपो का हिस्सा हैं।

अब तक, मैंने जो शोध किया है वह यह है कि गिट वर्ल्ड में सबमॉड्यूल के रूप में जाना जाता है जो बचाव में आ सकता है, हालांकि, मैं कुछ नौसिखिया निर्देश नहीं ढूंढ पा रहा हूं।

क्या समुदाय में कोई व्यक्ति विचार साझा करने और इस समस्या के समाधान की पहचान करने में मेरी सहायता करने के लिए पर्याप्त दयालु हो सकता है?

उत्तर

9

submodules के पीछे विचार यह है कि वे सभी अलग गिट भंडार हैं जिन्हें आप एक मास्टर में शामिल कर सकते हैं और इसके बजाय सभी फ़ाइलों को शामिल करने के बजाय इसमें उस सबमिशन के लिए एक लिंक शामिल है।

submodules

का उपयोग कैसे करें एक submodule का उपयोग करने के लिए, पहले तुम बाहर निर्देशिका निकालने और git init का उपयोग करके अपने स्वयं के Git भंडार के रूप में यह बनाना होगा। फिर आप इसे अलग से गिटूब या [अपने चयन की जगह] पर अपलोड कर सकते हैं और इसे एक सबमिशन के रूप में उपयोग करने के लिए कमांड का उपयोग कर सकते हैं: git submodule add [place/to/put/it] git://github.com/you/proj1

पृथक्करण सबसे अच्छा है

मैं बेहतर इन को अपने स्वयं के Git संग्रह के रूप में बाहर अलग छोड़ने के लिए और हर एक से Heroku को पुश करने के लिए लगता है कि होगा। कारण? यह अधिक संभावना है (मुझे लगता है) कि आप एक समय में एक पर काम करने जा रहे हैं और केवल git commit और git push heroku master कर रहे हैं।

यदि आप फिर भी कामना की एक ही समय में सभी आवेदनों आप नीचे इस रूबी स्क्रिप्ट शीर्ष-स्तरीय निर्देशिका में रखा का उपयोग कर निर्देशिका वृक्ष recurse सकता तैनात करने के लिए:

Dir["**/*"].select { |dir| File.directory?(dir) }.each do |f| 
    Dir.chdir(dir) do 
    `git push origin master` 
    `git push heroku master` 
    end 
end 

बेशक यह केवल यदि आप काम करेंगे आपके सभी परिवर्तनों का मंचन किया है।मैं इसे स्वचालित करने के तरीके के बारे में सोच नहीं सकता क्योंकि रुबी < = 1.9 में आपके विचारों को पढ़ने के लिए मॉड्यूल नहीं है।

+0

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

+1

उन्हें अलग से होस्ट करें इमो का सबसे अच्छा तरीका होगा। –

+1

असल में, हम इन्हें अलग से होस्ट नहीं करना चाहते हैं, मुख्य कारण यह है कि भंडार सार्वजनिक नहीं हैं और इस प्रकार हम सभी के साथ साझा नहीं करना चाहते हैं। इसके अलावा, गिटहब पर निजी भंडारों की मेजबानी की लागत पैसे खर्च करती है। –