मेरे ठेठ Git-svn कार्यप्रवाह है:गिट-एसवीएन डॉकिट क्यों मेरे गिट रेपो में डुप्लिकेट छोड़ देता है? क्या मैं इसे कर सकता हूँ?
git checkout -b story-xyz
git commit -a -m "work"
git commit -a -m "more work"
git checkout master
git svn fetch
git merge remotes/trunk
git checkout story-xyz
git rebase master (sometimes with -i)
git checkout master
git merge story-xyz
इस बिंदु पर मैं अपने master
और story-xyz
शाखाओं ही की ओर इशारा करते प्रतिबद्ध, एक या अधिक remotes/trunk
से आगे करता है। remotes/trunk
के बाद से सब कुछ एक रैखिक इतिहास में है।
last svn commit [remotes/trunk] <--- work <--- more work [master, story-xyz]
मैं तो चलाने
git svn dcommit
मैं remotes/trunk
और master
बन सबवर्सन संशोधनों के बीच करता देखने के लिए उम्मीद थी, और remotes/trunk
, master
और story-xyz
सभी नवीनतम की ओर इशारा करते के साथ एक एकल रैखिक इतिहास के साथ खत्म संशोधन, जैसे:
last svn commit <--- work <--- more work [master, story-xyz, remotes/trunk]
मेरा सबवर्जन संशोधन ठीक है, लेकिन मैं दो ब्रांडेड संरचना के साथ समाप्त होता हूं। मैंने प्रतिबद्ध होने से पहले शाखा की आम जड़ सबवर्सन हेड है। दोनों शाखाओं में काम की एक ही श्रृंखला होती है, इस अर्थ में कि उनमें एक ही अंतर होता है।
last svn commit <--- work <--- more work [master, remotes/trunk]
|
\- work <--- more work [story-xyz]
Git करता है कि मैं git svn dcommit
चलाने से पहले था संदेशों प्रतिबद्ध मेरी Git के साथ, कम शाखा (story-xyz
) पर कर रहे हैं, Git: शाखा story-xyz
अन्य पर एक शाखा, remotes/trunk
और master
के सिर पर है उपयोगकर्ता नाम और ईमेल, और गिट प्रतिबद्ध टाइमस्टैम्प। ऊपरी शाखा में काम करता है नई गिट करता है। जब मैं dcommit
चलाता हूं, तो वे मेरे सबवर्जन उपयोगकर्ता नाम, टाइमस्टैम्प का उपयोग करते हैं, और प्रतिबद्ध संदेशों में git-svn-id
फ़ील्ड शामिल होता है।
यह ठीक है, और मैं काम कर सकता हूं। समस्या यह है कि मैं gitk
में देखता हूं और देखता हूं कि एक अनमोल शाखा story-xyz
की तरह दिखता है। एक कहानी शाखा के बीच अंतर बताने में काफी मुश्किल है जिसे मैंने master
में विलय कर दिया है, और जो मैंने नहीं किया है। इसे स्थानांतरित करने का सबसे स्पष्ट तरीका डुप्लिकेट प्रतिबद्ध संदेश है। मैं story-xyz
शाखा को हटा सकता हूं, लेकिन ऐसा लगता है कि मैं ठीक से गिट का उपयोग नहीं कर रहा हूं और मैंने अपना कुछ इतिहास खो दिया है।
क्या मुझे ऐसा कुछ याद आ रहा है जो ऐसा करने से git-svn
को रोक देगा? या क्या यह सब तरीकों में से एक है जो सबवर्सन के साथ बातचीत करने से गिट की शक्ति और स्वतंत्रता को कम करता है?
धन्यवाद, मैं आज कोशिश करूँगा।ऐसा लगता है कि यह पूरी तरह से मास्टर की आवश्यकता को हटा देगा - तो क्या आप चाहते हैं कि रिमोट/ट्रंक का इतिहास अब इतिहास की हमारी 'मुख्य पंक्ति' है? –
रिमोट/ट्रंक का इतिहास आपके मामले में 'मुख्य रेखा' भी है। अपना अंतिम ग्राफ देखें। मास्टर का इतिहास रिमोट/ट्रंक के इतिहास के समान है। दोनों समान रूप से "मुख्य रेखा" के रूप में मान्य हैं - और भी अधिक रिमोट करते हैं, क्योंकि यह _shared_ मुख्य पंक्ति है। आपको पूरी तरह मास्टर को खत्म करने की आवश्यकता नहीं है। आप इतिहास में कुछ पहले बिंदु पर इसे लटक सकते हैं। फिर अगर आपको ऐसा करने की ज़रूरत है एक प्रतिबद्धता, आप चेकआउट मास्टर और svn वर्तमान दिन को रीबेज कर सकते हैं। –
हां, यह समझ में आता है। मुझे लगता है कि मैं 'मास्टर' के विचार से बहुत जुड़ा हुआ था, इसलिए हमें इसे चारों ओर और अद्यतित रखना पड़ा। अभी तक आपके वर्कफ़्लो को आजमाने का मौका नहीं मिला है, लेकिन अगर यह अपेक्षित काम करता है तो मैं जवाब स्वीकार करूंगा। –