चाहते 2 मुद्दों यहाँ हैं कर सकते हैं। सबसे पहले यह है कि svn केवल कमिटर स्टोर करता है, गेट के रूप में पैच के लेखक नहीं। तो जब वाई मर्ज के लिए प्रतिबद्ध ट्रंक करने के लिए, SVN केवल उसका नाम रिकॉर्ड करता है, भले ही पैच एक्स द्वारा लेखक थे यह आश्चर्यजनक सरल अभी तक ओपन सोर्स प्रोजेक्ट थे लेखक में परिवर्तन का श्रेय प्रदान से बच सकते हैं के लिए महत्वपूर्ण एक अद्भुत Git की सुविधा है सड़क के नीचे कानूनी समस्याएं।
दूसरा, गिट अपेक्षाकृत नई svn विलय सुविधाओं का उपयोग नहीं करता प्रतीत होता है। यह एक अस्थायी बात हो सकती है, क्योंकि गिट सक्रिय रूप से विकसित होता है और हर समय नई सुविधाएं जोड़ दी जाती हैं। लेकिन अभी के लिए, यह उनका उपयोग नहीं करता है।
मैं सिर्फ Git 1.6.0.2 के साथ की कोशिश की है और यह SVN मर्ज के साथ ही कार्रवाई करते समय की तुलना में जानकारी "खो देता है"। SVN 1.5 में, एक नई सुविधा लॉगिंग और एनोटेशन तरीकों को जोड़ा गया है, ताकि ट्रंक पर SVN लॉग जी किसी मर्ज के लिए इस तरह उत्पादन कुछ होगा:
------------------------------------------------------------------------
r5 | Y | 2008-09-24 15:17:12 +0200 (Wed, 24 Sep 2008) | 1 line
Merged release-1.0 into trunk
------------------------------------------------------------------------
r4 | X | 2008-09-24 15:16:13 +0200 (Wed, 24 Sep 2008) | 1 line
Merged via: r5
Return 1
------------------------------------------------------------------------
r3 | X | 2008-09-24 15:15:48 +0200 (Wed, 24 Sep 2008) | 2 lines
Merged via: r5
Create a branch
यहाँ, वाई R5 करता है, जो शामिल एक्स पर शाखा से ट्रंक में परिवर्तन। पर
2 Y int main()
2 Y {
G 4 X return 1;
2 Y }
यहाँ संभालने Y केवल ट्रंक करने के लिए प्रतिबद्ध है, हम देख सकते हैं कि एक लाइन एक्स द्वारा उसे संपादित किया गया था (: लॉग का स्वरूप है जो महान वास्तव में नहीं है, लेकिन यह SVN दोष जी पर अपने स्वयं के में आता है शाखा) और विलय।
इसलिए, यदि आप SVN 1.5.2 का उपयोग कर रहे हैं, तो आप संभवतः अब के लिए असली SVN ग्राहक के साथ विलय की बेहतर हैं। यद्यपि आप गिट में विलय जानकारी खो देंगे, लेकिन यह आमतौर पर शिकायत करने के लिए पर्याप्त चालाक नहीं है।
अद्यतन: मैं सिर्फ देखने के लिए अगर वहाँ अंतरिम में किसी भी अग्रिम कर दिया गया है Git 1.7.1 के साथ इस कोशिश की है। बुरी खबर यह है कि गिट के भीतर विलय अभी भी svn: mergeinfo मानों को पॉप्युलेट नहीं करता है, इसलिए git merge
git svn dcommit
के बाद svn सेट नहीं होगा: mergeinfo और यदि सबवर्सन रिपोजिटरी कैनोलिक स्रोत है, तो शायद यह विलय जानकारी खो देगा। अच्छी खबर यह है कि git svn clone
svn में पढ़ा जाता है: mergeinfo गुण बेहतर मर्ज इतिहास बनाने के लिए, इसलिए यदि आप svn merge
सही तरीके से उपयोग करते हैं (इसे पूर्ण शाखाओं में विलय की आवश्यकता होती है) तो गिट क्लोन उपयोगकर्ताओं को गिट करने के लिए सही लगेगा।
'git svn dcommit' वर्तमान में 'svn: mergeinfo' को दबा सकता है: https://www.kernel.org/pub/software/scm/git/docs/git-svn.html देखें (" mergeinfo "के लिए खोजें) –