2009-08-23 9 views
6

मैं एक SVN भंडार है कि इस तरह खर्च की गई थी के साथ काम कर रहा हूँ ट्रंक:Git-SVN शाखाओं करने से नहीं है, केवल

 
$SVN/[project]/trunk 
$SVN/[project]/branches/[user]/[branch] 
$SVN/[project]/tags/releases/[tag] 

मेरे .git/config इस तरह दिखता है:

 
[svn-remote "svn"] 
    url = $SVN 
    fetch = project/trunk:refs/remotes/trunk 
    branches = project/branches/*/*:refs/remotes/* 

जब मैं गिट शाखा-ए को देखता हूं, तो मैं सभी दूरस्थ शाखाएं देखता हूं। मान लीजिए कि मैं एक को देखना चाहता हूं, उस पर काम करना चाहता हूं, फिर बदलावों को वापस कराना चाहता हूं। यहां मैं यह करने की कोशिश कर रहा हूं:

 
git checkout -b comments erik/comments 
.... work, commit locally .... 
git svn dcommit 

हालांकि, डॉकिट हमेशा $ एसवीएन/प्रोजेक्ट/ट्रंक तक पहुंच जाता है। git svn info हमेशा यूआरएल को $ एसवीएन/प्रोजेक्ट/ट्रंक

के रूप में रिपोर्ट करता है मैंने --track का उपयोग करने का प्रयास किया है, मैंने --hard के साथ रीसेट करने का प्रयास किया है। मैं यहां विचारों से बाहर हूं। मुझे संदेह है कि यह मेरा [svn-remote] है, लेकिन यह सिर्फ एक झटका है।

उत्तर

2

ऐसा लगता है कि ऐसा किया और अधिक या कम है कि मैं क्या तलाश कर रहा हूँ: Cloning a Non-Standard Svn Repository with Git-Svn

मैं अभी भी कुछ परिवर्तन दिखाई नहीं दे साथ कुछ समस्या है , लेकिन यह एक और दिन के लिए है। सबको धन्यवाद!

0

आप svn2git, and git2svn को आजमा सकते हैं, क्योंकि वे खाते में गैर-मानक एसवीएन लेआउट लेते हैं।

वे git svn की --tags और --branches पैरामीटर का उपयोग करते हैं, और भले ही आप स्क्रिप्ट मैं उपर्युक्त का प्रयोग नहीं करते, तो आप उन पैरामीटर का उपयोग अपने SVN भंडार में सही स्थानों में डेटा प्राप्त कर सकते हैं।

1

क्या शाखा erik/comments एसवीएन में पहले से मौजूद है?

मैं इस प्रकार के रूप में काम:

git svn fetch #update any newly created branches 
git checkout davec/new-feature # on remote branch, git may warn you 
git checkout -b new-feature davec/new-feature # assumes this exists in SVN 
# hack 
# commit 
git svn dcommit 

मुझे लगता है कि मैं क्या git checkout -b local remote दो चरणों में कर के एक एक कदम संस्करण है, लेकिन यह काम करने लगता है।

एक और विकल्प है कि आप अपने उपयोगकर्ता नाम के साथ अपनी कॉन्फ़िगरेशन को प्रतिस्थापित करें, उदा।

branches = project/branches/erik/*:refs/remotes/* 

और फिर

git checkout new-feature # remote branch 
git checkout -b new-feature-branch # local 
संबंधित मुद्दे