हमारे पास दो स्तरीय सेटअप हैं।प्राथमिक रेपो के साथ सिंक में स्वचालित रूप से द्वितीयक रेपो रखें?
हमारे पास एक प्राथमिक भंडार है (जिसे नीचे 'प्राथमिक' कहा जाता है)।
और एक माध्यमिक भंडार ('माध्यमिक' नीचे कहा जाता है) तो तरह बनाया गया था कि:
$ git clone --bare --shared $REPO_A/primary secondary.git
माध्यमिक भंडार पर काम करने वालों को शाखाओं के रूप में केवल पढ़ने के लिए जो प्राथमिक भंडार से उत्पन्न देखने लेकिन अपने स्वयं के आधार इन शाखाओं से शाखाएं।
हम दिन में एक बार प्राथमिक भंडार के साथ द्वितीयक भंडार को सिंक करना चाहते हैं।
आईई। हम काम करना चाहते हैं और नई शाखाएं जिन्हें माध्यमिक भंडार (अगली बार जब वे खींचते हैं) से काम करने वाले लोगों के लिए प्राथमिक बनने के लिए प्राथमिक को धकेल दिया जाता है।
हम नहीं चाहते हैं कि यह सममित हो, यानी द्वितीयक भंडार के खिलाफ गतिविधि प्राथमिक भंडार से काम करने वालों के लिए दृश्यमान नहीं होगी।
आदर्श रूप में मैं एक क्रॉन नौकरी चलाने के लिए चाहता हूं जो कि नंगे माध्यमिक भंडार के साथ मशीन पर चलता है जो किसी भी तरह से प्राथमिक से नया डेटा प्राप्त करता है और स्वचालित रूप से इसे माध्यमिक में शामिल करता है।
मुझे उम्मीद थी कि ऐसा करने का एक आसान तरीका हो सकता है (और मुझे उम्मीद है कि यहां कोई मुझे बताएगा)।
मैं यह करने के लिए एक स्क्रिप्ट लिखने के लिए थे, तो यह करना होगा:
माध्यमिक के एक ताजा क्लोन बनाएँ।
$ git clone $REPO_B/secondary $ cd secondary
अपनी सभी शाखाएं पाएं।
$ git branch -r | sed 's?.*origin/??'
प्राथमिक रेपो में सभी शाखाएं प्राप्त करें।
$ git ls-remote --heads $REPO_A/primary | sed 's?.*refs/heads/??'
प्रत्येक प्राथमिक शाखा है जिसके लिए मैं पहले से ही एक इसी माध्यमिक शाखा की जरूरत नहीं है के लिए:
:$ git fetch $REPO_A/primary $BRANCHNAME:$BRANCHNAME $ git push origin $BRANCHNAME:refs/heads/$BRANCHNAME
प्रत्येक प्राथमिक शाखा है जिसके लिए मैं पहले से ही एक इसी माध्यमिक शाखा है के लिए
$ git checkout -b $BRANCHNAME --track origin/$BRANCHNAME $ git pull $REPO_A/primary $BRANCHNAME $ git push
जैसा कि मैं गिट करने के लिए नया हूं, मैं आश्चर्यचकित नहीं होगा अगर मैं टी विफल नहीं हुआ o कुछ मौलिक मुद्दों पर विचार करें?
और जैसा कि मैंने कहा था कि मुझे उम्मीद है कि ऐसा करने का एक आसान तरीका है, यानी कोई चला जाता है "ओह, ऐसा मत करो, बस करें ..."।
ऐसा लगता है कि मैं क्या चाहता हूं। लिंक के लिए धन्यवाद - इनसे मुझे यह मिला: '$ cd media.git ; गिट - बेयर fetch उत्पत्ति '+ refs/head/*: refs/head/*' ' एक अनुभवी यूनिक्स हैकर के रूप में मैं हमेशा वास्तव में समझना चाहता हूं कि मैं क्या कर रहा हूं। हालांकि अधिकांश गिट दस्तावेज़ वास्तव में प्रतीत होते हैं सरल एलिस और बॉब के मामले, और कुछ और जटिल जटिल किताबों की शैली प्रस्तुत की जाती है। क्या आप गिट के लिए एक अच्छी _in-depth_ पुस्तक या वेब प्रलेखन की सिफारिश कर सकते हैं? –
@ जॉर्ज: हाँ: http://www.newartisans.com/2008/04/ Git-से-वें ई-तल-अप.html, हालांकि http://stackoverflow.com/questions/315911/git-for-beginners-the-definitive- व्यावहारिक- गाइड कई अन्य रोचक लिंक प्रदान करता है। http://tom.preston-werner.com/2009/05/19/the-git-parable.html भी अच्छा है। – VonC
यह भी ध्यान रखें कि उन रेफरी चश्मा आपके गिट कॉन्फ़िगरेशन में हैं, इसलिए 'fetch = + refs/*: refs/*' के साथ, आपको बस 'git fetch' – Dustin