2009-09-08 15 views
7

के साथ एक एक गीट रिमोट को दूसरे में दर्पण कैसे करें समस्या एक साधारण है। मैंने स्थानीय गिट भंडार में एक दूरस्थ शाखा में एक सीवीएस रेपो आयात करने के लिए गिट cvsimport का उपयोग किया है। मैं फिर इस भंडार को सिंक करना चाहता हूं: शाखाओं, टैग, और सब, क्लाउड में एक गिट भंडार (github/gitorious) के लिए। ऐसा करने के लिए मेरे पास rsync तक पहुंच नहीं है या सीधे भंडार की प्रतिलिपि नहीं है, मुझे गिट पुश का उपयोग करना होगा।धक्का

मैं अपने स्थानीय भंडार को मिरर करने के बारे में कैसे जा सकता हूं ताकि दूसरों को पूर्ण _cvsimport_d इतिहास तक पहुंच हो?

Concretely

:
मैं आयात और cvsimport का उपयोग कर एक भंडार ट्रैक: Git रेपो cdt- में दूरस्थ सीवीएस में

git cvsimport -i -v -C cdt-make-core -d :pserver:[email protected]:/cvsroot/tools -r cvs org.eclipse.cdt/all/org.eclipse.cdt.make.core

ऊपर आयात org.eclipse.cdt.make.core बनाने के कोर।

मैं तो GitHub के लिए मुख्य सीवीएस शाखा के प्रमुख धक्का कर सकते हैं:

git push github cvs/master:refs/heads/cvs/HEAD

(मैं पर दूरस्थ स्पष्ट रूप से ऐसा करता है, तो यह मौजूद नहीं है यह बनाया पथ निर्दिष्ट।)

है सभी शाखाओं को सिंक करने का कोई तरीका है: रिमोट पर सीवीएस/* => सीवीएस/*?
क्या सभी टैग सिंक करने का कोई तरीका है?

उत्तर

3

मेरे निष्कर्ष यह हैं कि यदि आप नीचे दिए गए दूसरे उचित समाधान का उपयोग करते हैं, तो आपको --mirror पहले करने की आवश्यकता है, क्योंकि यह उन सीवी/शाखाओं को मिटा देता है जिन्हें आप धक्का देने की कोशिश कर रहे हैं। तो पूरा सूत्र है:

git push --mirror -v github 
git push --force github cvs/master:refs/heads/cvs/HEAD 
for x in `git branch -r | grep '^..cvs/[a-zA-Z0-9_-]*$' | sed -e 's/^..//'` ; do 
    git push -v github $x:refs/heads/$x 
    git config branch.$x.remote github 
    git config branch.$x.merge refs/heads/$x 
done 
5

मुझे लगता है कि आप को पुश करने --mirror विकल्प की तलाश कर रहे:

git push --mirror github 

यह सब refs (शाखाओं और टैग) गैर तेजी से आगे अपडेट के साथ-धक्का होगा। मैं अपने स्थानीय भंडार के बैकअप बनाने के लिए इसका उपयोग करता हूं।

man page इस तरह यह वर्णन करता है:

इसके बजाय प्रत्येक रेफरी पुश करने के लिए नामकरण की, यह बताता है कि $GIT_DIR/refs/ के तहत सभी refs (जो refs/remotes/, और refs/tags/ शामिल है, लेकिन refs/heads/ तक सीमित नहीं है,) के लिए नजर आता जा रिमोट रिपोजिटरी। नए बनाए गए स्थानीय रेफ रिमोट एंड पर धकेल दिए जाएंगे, स्थानीय रूप से अपडेट किए गए रेफरी रिमोट एंड पर अपडेट किए जाएंगे, और रिमोट एंड से हटाए गए रेफ को हटा दिया जाएगा। कॉन्फ़िगरेशन विकल्प remote.<remote>.mirror सेट है तो यह डिफ़ॉल्ट है।

[OT: मैं अपने रोजमर्रा के काम में CDT का उपयोग करें और मैं इसे प्यार करता]

+0

धन्यवाद। दुर्भाग्य से यह ऐसा नहीं लगता है जो मैं चाहता हूं। ऐसा लगता है कि क्लाउड में भंडार मेरी तरह दिखता है जिसका मतलब है कि जिथब रेपो में 'सीवीएस' रिमोट है, लेकिन कोई दृश्य सीवी शाखा नहीं है। मैं जो चाहता था वह रिमोट/सीवीएस/* से सीवीएस/* को जीथ्यूब पर पूर्ण सामग्री की प्रतिलिपि बनाना था। –

+0

आह, अब मैं देखता हूं। मृत अंत के लिए खेद है। –

1

प्रयोग करने के बाद, मैं वहाँ पर विश्वास नहीं है किसी भी अंतर्निहित मैं क्या करना चाहते हैं के लिए समर्थन करते हैं।

  • -r cvsimport करने के लिए निर्दिष्ट नहीं है:

    हालांकि दो उचित समाधान होने के लिए वहाँ लग रहे हैं।
    आयातित शाखाएं सीधे भंडार में मौजूद होंगी और --mirror का उपयोग पैट के सुझाव के रूप में किया जा सकता है।

  • * सीवी/** को धक्का देने के लिए एक शेल स्क्रिप्ट लिखें (एक सीधा है)।
    उपयोग --mirror ताकि टैग सही ढंग से सिंक किए गए हैं

मैं मूल रूप से cvsimport घ शाखाओं नेमस्पेसिंग के लिए अलग रखने के लिए करना चाहता था। हालांकि पहले विकल्प के साथ cvsimport भंडार को पूरी तरह से अलग रखने के लिए समझ में आता है (और केवल इससे क्लोन)। मैं फिर ट्रैकिंग गिट रेपो को गंदे करने का कोई जोखिम नहीं होने के साथ सीवीएस को ट्रैक करना जारी रख सकता हूं।

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