के लिए रीसेट ट्रैकिंग मैं एसवीएन रिपोजिटरी के साथ काम करने के लिए git-svn
का उपयोग कर रहा हूं। मेरी कामकाजी प्रतियां git svn clone -s http://foo.bar/myproject
का उपयोग करके बनाई गई हैं ताकि मेरी कार्यशील प्रतिलिपि एसवीएन (ट्रंक, टैग, शाखाओं) के लिए डिफ़ॉल्ट निर्देशिका योजना का पालन करे।गीट-एसवीएन: मास्टर
हाल ही में मैं एक शाखा पर काम कर रहा हूं जो git-svn branch myremotebranch
का उपयोग करके बनाया गया था और git checkout --track -b mybranch myremotebranch
का उपयोग करके चेक-आउट किया गया था। मुझे कई स्थानों से काम करने की ज़रूरत थी, इसलिए शाखा I git-svn dcommit
-ed फ़ाइलों से नियमित रूप से एसवीएन भंडार में।
मेरे परिवर्तनों को पूरा करने के बाद, मैंने मास्टर पर वापस स्विच किया और एक विलय निष्पादित किया, विलय किया, और रिमोट ट्रंक में सफल विलय को कम करने की कोशिश की।
ऐसा लगता है जैसे कि मर्ज के बाद गुरु के लिए दूरदराज के ट्रैकिंग शाखा में स्विच करने की है मैं पर काम कर रहा था:
# git checkout master
# git merge mybranch
... (successful)
# git add .
# git commit -m '...'
# git svn dcommit
Committing to http://foo.bar/myproject/branches/myremotebranch ...
#
वहाँ एक रास्ता इतना है कि यह रूप में remotes/trunk
अनुसरण कर रहा है मैं मास्टर को अपडेट कर सकते है विलय से पहले?
मैं गिट 1.7.0.5 का उपयोग कर रहा हूं, अगर यह कोई मदद है।
यह उपयोगी होगा यदि आप क्यों समझा सकते हैं ऐसा क्यों हुआ, इसलिए मैं फिर से होने वाली समस्या से बच सकता हूं। धन्यवाद!
संपादित करें:
यहाँ मेरे वर्तमान .git/config
है:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
autocrlf = false
[svn-remote "svn"]
url = http://foo.bar/myproject
fetch = trunk:refs/remotes/trunk
branches = branches/*:refs/remotes/*
tags = tags/*:refs/remotes/tags/*
[branch "mybranch"]
remote = .
merge = refs/remotes/myremotebranch
तो ऐसा लगता है कि ट्रंक सही जगह की ओर इशारा करते है। हालांकि, शाखा में स्विच करने के बाद मास्टर को वापस मदद नहीं करता है; मास्टर में git svn dcommit
अभी भी myremotebranch
पर धक्का देने का प्रयास करता है।
'--no-ff' पर अच्छा बिंदु। +1 – VonC
स्पष्टीकरण के लिए, यदि मैं समझता हूं, तो गिट उस प्रतिबद्धता का उपयोग करता है जो "मास्टर" पॉइंटर तय करता है कि कौन सी एसवीएन शाखा प्रतिबद्ध है। यही कारण है कि एसवीएन डॉकिट कदम विफल हो जाता है, क्योंकि आपने विलय पूरा करने के बाद, और 'माइब्रैंच' और 'मास्टर' एक ही प्रतिबद्धता पर हैं। यह प्रतिबद्धता मूल रूप से 'myremotebranch' एसवीएन शाखा से बनाई गई थी। – cmcginty
मुझे नहीं लगता कि एक नया विलय प्रतिबद्धता मामलों को स्पष्ट करने में मदद करने जा रही है, क्योंकि जब भी यह svn भंडार के लिए प्रचारित होता है तो मर्ज जानकारी खो जाएगी। –