2008-11-05 9 views
190

मेरे पास एक गिट भंडार है जो एक svn भंडार को ट्रैक करता है। मैंने इसे --stdlayout का उपयोग करके क्लोन किया।git-svn: मैं गिट के माध्यम से एक नई svn शाखा कैसे बना सकता हूं?

मैं git checkout -b foobar

माध्यम से एक नया स्थानीय शाखा बनाई गई अब मैं इस शाखा SVN भंडार में …/branches/foobar में समाप्त करना चाहते हैं।

मैं इसके बारे में कैसे जा सकता हूं?

(खोजी पाठ के बहुत सारे कतरना। यदि आप परवाह सवाल इतिहास देखें)

+0

संबंधित प्रश्न: [मैं गिट-एसवीएन को रिमोट रिपोजिटरी के रूप में एक विशेष एसवीएन शाखा का उपयोग कैसे करूं?] (Http://stackoverflow.com/questions/192736/how-do-i-make-git-svn-use- एक-विशेष-svn-branch-as-the-remote-repository) – sleske

उत्तर

63
Git v1.6.1 के रूप में

, git svn branch उपलब्ध है।

Git डॉक्स से:

 
    branch 
     Create a branch in the SVN repository. 

     -m, --message 
      Allows to specify the commit message. 

     -t, --tag 
      Create a tag by using the tags_subdir instead of the branches_subdir 
      specified during git svn init. 

Git के पिछले संस्करण एक SVN शाखा बनाने का एक तरीका प्रदान नहीं करते।

4

@kch मैं बस (7 दिसंबर 2008) Git की v1.6.1-RC1 टैग संकलित और यह Git SVN शाखा आदेश और इसके लिए प्रलेखन शामिल करता है। तो v1.6.1 गिट की रिलीज (उम्मीद है) इस आदेश को होना चाहिए।

+0

वास्तव में, मैंने अब 1.6.1 इंस्टॉल किया है और कमांड उपलब्ध है। तदनुसार मेरा जवाब अपडेट किया गया। – kch

269

मुझे पता है कि इस प्रश्न का उत्तर थोड़ी देर पहले दिया गया है, लेकिन इसे पढ़ने के बाद, मैं विशिष्ट गिट svn शाखा कमांड के उदाहरण जोड़ने में मदद कर सकता हूं और इसे एक सामान्य वर्कफ़्लो से जोड़ सकता हूं।

तरह kch उत्तर दिया, git svn branch का उपयोग करें। r8914 पर

प्रतिलिपि बनाई जा रही https://scm-server.com/svn/portal/trunkhttps://scm-server.com/svn/portal/branches/auth_bug रहे हैं:

git svn branch -n -m "Branch for authentication bug" auth_bug 

यह अच्छी तरह से चला जाता है, तो सर्वर इस तरह जवाब के साथ उत्तर: यहाँ एक पूर्ण उदाहरण के लिए, (ध्यान दें -n परीक्षण करने के लिए सूखी रन के लिए) है। ..

और -n स्विच के बिना सर्वर शायद की तरह कुछ कहते हैं:

मिले संभव शाखा बिंदु: https://scm-server.com/svn/portal/trunk =>https://scm-server.com/portal/branches/auth_bug, 8914

मिले शाखा माता-पिता: (refs/रिमोट/auth_bug)

d731b1fa028d30d685fe260f5bb912cbf59e1971

do_switch

साथ माता-पिता के बाद सफलतापूर्वक पीछा किया माता-पिता r8915 = 6ed10c57afcec62e9077fbeed74a326eaa4863b8

(refs/रिमोट/auth_bug)

इसके बारे में सबसे अच्छी बात यह है, अब आप अपने रिमोट पर आधारित एक स्थानीय शाखा बना सकते हैं इसलिए जैसे शाखा:

git checkout -b local/auth_bug auth_bug 

जिसका मतलब है "की जाँच और नामित स्थानीय शाखा बनाने auth_bug और यह कर

git svn dcommit -n 

और SVN सर्वर नई शाखा नाम के साथ उत्तर चाहिए: दूरस्थ शाखा (पिछले पैरामीटर) auth_bug

परीक्षण करें कि आपके स्थानीय शाखा --dry-run साथ dcommit का उपयोग करके कि दूरदराज के शाखा पर काम करता है (-n) का पालन करें:

https://scm-server.com/svn/portal/branches/auth_bug को स्वीकार हो

...

+0

"गिट सह" मेरे संस्करण पर काम नहीं करता है। मैंने इसके बजाए "गिट चेकआउट" का इस्तेमाल किया। –

+2

हाँ, गिट सह का अर्थ है कि जेस्पर ने एक गिट उपनाम स्थापित किया है। –

+3

ने 'गीट चेकआउट' के साथ 'गिट सह' को अपडेट किया और प्रतिस्थापित किया ताकि उदाहरण किसी के लिए काम कर सके –