2013-05-31 6 views
20

मैं एक परियोजना पर काम कर रहा हूं जिसके लिए हर कोई SVN केंद्रीयकृत सर्वर के रूप में उपयोग करता है और हर कोई उस सर्वर पर किए गए परिवर्तनों को धक्का देता है। मैं Git स्थानीय रूप से उपयोग करना चाहता हूं और मैं git svn पर बहुत नया हूं। मैंने git svn clone -r HEAD https://svn.repo/app/branch के साथ भंडार के git svn clone किया था, मैं गिट के माध्यम से एक अद्यतन करना चाहता हूं।गिट-एसवीएन: केंद्रीकृत एसवीएन सर्वर से अद्यतन गिट रेपो

मुझे एक 'गिट पुल की तरह' कमांड की आवश्यकता है लेकिन एसवीएन सर्वर रेपो के विशिष्ट संशोधन से खींचने के लिए। क्या एसवीएन सर्वर रेपो के विशिष्ट संशोधन से लाने के लिए 'fetch like' कमांड भी है?

मेरे पास मेरे क्लोन प्रोजेक्ट में .svn फ़ोल्डर्स नहीं हैं और git remote मुझे कुछ भी नहीं देता है। हालांकि मैंने git config -l किया और मुझे एसवीएन सर्वर का यूआरएल मिला, इसलिए किसी भी तरह से मैं एसवीएन सर्वर से जुड़ा हुआ हूं। मुझे नहीं पता कि कैसे लाया जाए या खींचें।

धन्यवाद!

उत्तर

37
Git के माध्यम से एक सबवर्सन भंडार पर काम करने के

सबसे अच्छा तरीका है:

  1. git svn init -s https://svn.repo/app/ myrepo यह सोचते हैं कि https://svn.repo/app/ के तहत रेपो मानक /trunk, branches और tags उपनिर्देशिका
  2. myrepo में एक git svn fetch करते हैं जब तक कोई और अधिक प्रतिबद्ध होते हैं लाया (विंडोज़ के तहत काफी समय और कभी-कभी बंद हो सकता है)।
  3. Checkout किसी विशिष्ट सबवर्सन शाखा या के माध्यम से git checkout -b trunk remotes/trunk

ट्रंक तो फिर तुम बस, ब्राउज़ कर सकते हैं हैक और अपना Git रेपो सभी सबवर्सन युक्त में प्रतिबद्ध करता है और शाखाओं।

  • का उपयोग git svn rebase
  • पुश करने के लिए SVN से नए प्रतिबद्ध में खींच करने के लिए SVN में अपने स्थानीय प्रतिबद्ध git svn dcommit

उपयोग करके किसी विशिष्ट सबवर्सन संशोधन आप केवल git log के माध्यम से इतिहास ब्राउज़ करने की आवश्यकता पर जाने के लिए और एक उपरोक्त प्रतिबद्धता प्रतिबद्धता मिररिंग प्रतिबद्ध करने के लिए खोजें। आप प्रतिबद्ध संदेश की git-svn-id: पंक्ति में आसानी से सबवर्सन संशोधन को स्थानांतरित कर सकते हैं। उस संस्करण को स्पष्ट रूप से चेकआउट करने के लिए बस git checkout <commithash> का उपयोग करें।

10

एक अच्छी शुरुआत:

लाने के लिए नया SVN अपने स्थानीय रेपो में प्रतिबद्ध: git svn rebase

धकेलने के लिए अपने स्थानीय SVN के लिए प्रतिबद्ध: git svn dcommit

आप शायद git stash का उपयोग करना होगा और git stash pop, उपर्युक्त दो आदेशों का उपयोग करने से पहले जब आपकी कार्यशील प्रति में असामान्य परिवर्तन होते हैं।