git-svn: मैं git के माध्यम से एक नई svn शाखा कैसे बनाऊं?


193

मेरे पास एक git रिपॉजिटरी है जो svn रिपॉजिटरी को ट्रैक करती है। मैंने इसका उपयोग करके क्लोन किया--stdlayout

मैंने एक नई स्थानीय शाखा बनाई git checkout -b foobar

अब मैं चाहता हूं कि यह शाखा समाप्त हो जाए …/branches/foobar svn रिपॉजिटरी ।

मैं उसे करके देखूं तो?

(बहुत सारे खोजी पाठ छीन लिए गए हैं। प्रश्न इतिहास देखें यदि आप ध्यान दें)


जवाबों:


280

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

जैसे kch ने उत्तर दिया, उपयोग करें git svn branch। यहाँ एक पूर्ण उदाहरण है, ( -nपरीक्षण के लिए ड्राई-रन के लिए ध्यान दें ):

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

यदि यह ठीक हो जाता है, तो सर्वर इस तरह से उत्तर देता है:

प्रतिलिपि बनाई जा रही https://scm-server.com/svn/portal/trunk को r8914 पर https://scm-server.com/svn/portal/branches/auth_bug ...

और -nस्विच के बिना सर्वर संभवतः कुछ जोड़ता है:

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

मिली शाखा माता-पिता: (refs / remotes / Andor_bug)

d731b1fa028d30d685fe260f5bb912cbf59e1971

Do_switch के साथ माता-पिता का अनुसरण करना

सफलतापूर्वक पालन किया गया r8915 = 6ed10c57afcec62e9077fbeed74a326eaa4864b8

(Refs / रिमोट / auth_bug)

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

git checkout -b local/auth_bug auth_bug

जिसका अर्थ है "स्थानीय शाखा को देखें और बनाएं auth_bugऔर इसे दूरस्थ शाखा का पालन करें (अंतिम पैरामीटर)auth_bug

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

git svn dcommit -n

और SVN सर्वर को नई शाखा के नाम के साथ उत्तर देना चाहिए:

Https://scm-server.com/svn/portal/branches/auth_bug के लिए प्रतिबद्ध ...


2
हाँ, git co का अर्थ है कि Jesper ने एक git उपनाम स्थापित किया है।
जेसन एक्सेलसन

3
अद्यतन और प्रतिस्थापित git coकिया गया git checkoutताकि उदाहरण किसी के लिए भी काम कर सके
जेस्पर रॉन-जेन्सेन

5
मैंने पहले ही इस जवाब को वोट कर दिया था, लेकिन मुझे नहीं पता कि मैं कितनी बार वापस आ रहा हूं। धन्यवाद!
बेन डॉयर

35
git-svn branchआदेश में एक मुश्किल हिस्सा है - इस तरह से एक नई शाखा बनाने के लिए आपको ऑनलाइन रहना होगा। आप निम्न को ऑफ़लाइन में कर सकते हैं: 1. git checkout -b foobar2. हैक-हैक-हैक 3 git commit -m "Done foobar".। और जब ऑनलाइन इस बदलाव को १. git svn branch foobar२. git branch --set-upstream foobar remotes/foobargit svn dcommit.
वदिशीव

2
तो चरण 2 को बदलें git checkout -b foobar-new remotes/foobar। 3. git checkout foobar4. git rebase foobar-new5. यह सुनिश्चित करने के लिए परीक्षण करना कि शाखा अब svn शाखा में जाती है। git svn dcommit --dry-run6. अंत में वास्तव में प्रतिबद्ध git svn dcommit7. निकालें अस्थायी शाखाgit branch -D foobar-new
jjcf89

64

git v1.6.1 के रूप में, git svn branchउपलब्ध है।

Git डॉक्स से:

    डाली
        SVN रिपॉजिटरी में एक शाखा बनाएँ।

        -म, - मिसेज
            प्रतिबद्ध संदेश को निर्दिष्ट करने की अनुमति देता है।

        -टी, --टैग
            शाखाओं_subdir के बजाय tag_subdir का उपयोग करके एक टैग बनाएं
            git svn init के दौरान निर्दिष्ट।

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


4

@ मैं केवल (2008 दिसंबर २००)) git के v1.6.1-rc1 टैग को संकलित करता हूं और इसमें git svn शाखा कमांड और इसके लिए प्रलेखन शामिल है। तो git की v1.6.1 रिलीज (उम्मीद है) में यह कमांड होनी चाहिए।


वास्तव में, मैंने अभी 1.6.1 स्थापित किया है और कमांड उपलब्ध है। तदनुसार अपना उत्तर अपडेट किया।
kch
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.