2009-11-05 21 views
11

एक ओपन सोर्स प्रोजेक्ट है जिसे मैं चेकआउट करना चाहता हूं और योगदान देना चाहता हूं। मुख्य भंडार एसवीएन है लेकिन मैं गिट में काम करना चाहता हूं। क्या यह संभव है?मुख्य भंडार है जब मुख्य भंडार एसवीएन

मेरी अधिकांश खोज मार्गदर्शिकाएं बदलती हैं जहां आप एसवीएन से गिट (या दूसरी तरफ) में जाते हैं और वापस नहीं देखते हैं।

  • यदि मैं प्रोजेक्ट की जांच करता हूं, तो बदलाव करता हूं और इसे गिटूब पर बनाई गई शाखा में धक्का देता हूं, मुझे मूल लेखकों को कैसे सूचित करना चाहिए?
  • एसवीएन रेपो में गिट रेपो पर किए गए योगदान को शामिल करना कितना मुश्किल है?
  • बस दो संशोधन (मेरा नवीनतम चेकआउट/पुल/अपडेट और मेरा खुद का स्थानीय नवीनतम प्रतिबद्धता) की तुलना करना, इससे एक पैच उत्पन्न करना और उन्हें भेजना; क्या इसे फॉलबैक वर्कफ़्लो माना जाना चाहिए या मानक दृष्टिकोण है?

मान लें कि मूल लेखकों को एसवीएन के अलावा कुछ भी सीखने में कोई रूचि नहीं है।

[अपडेट] मेरे पास नहीं है, और न ही मैं, है SVN भंडार के लिए उपयोग करने के लिए चाहते हैं। मैं इसके लिए कामकाज की तलाश में हूं।

[Update2] पैच वास्तव में मेरी ही एकमात्र विकल्प हैं, तो किसी भी अतिरिक्त चेतावनियां मैं के बारे में पता होना चाहिए रहे हैं?

उत्तर

7

सौभाग्य से इस उद्देश्य के लिए git-svn है। यह आपको स्थानीय रूप से गिट का उपयोग करने में सक्षम बनाता है जबकि आप ऐसा करना चाहते हैं तो एसवीएन में भी जांच करने में सक्षम होते हैं। यह काफी सरल है और यदि आप यहां या Google के माध्यम से git-svn खोजते हैं तो बहुत सारी जानकारी होती है।

http://flavio.castelli.name/howto_use_git_with_svn पर एक ट्यूटोरियल है जिसे आप पहले देखना चाहते हैं।

संपादित करें: एसवीएन संगत diffs उत्पन्न करने के लिए आप git diff --no-prefix का उपयोग कर सकते हैं। ध्यान दें कि यह प्रारूप TortoiseSVN के साथ संगत नहीं है। यदि संगतता की आवश्यकता है तो आपको किसी प्रकार की शेल स्क्रिप्ट का उपयोग करना होगा; उदाहरण यहां देखें: http://mojodna.net/2009/02/24/my-work-git-workflow.html

संपादित करें: गिट-एसवीएन का एक संभावित नकारात्मक पक्ष यह है कि यह svn बाह्य को संभाल नहीं करता है। आपको खुद को संभालना होगा।

गुड लक!

+0

हां, मैंने कुछ गिट-एसवीएन पर देखा। यह मूल (एसवीएन) रिपोज़ से अपडेट लाने के लिए बहुत अच्छा लग रहा है। लेकिन मैं मुख्य रूप से अपस्ट्रीम वर्कफ़्लो में रूचि रखता हूं। पैच को सही तरीके से कैसे संभालें और उत्पन्न करें (यदि यह मेरा एकमात्र विकल्प है)? – Mizipzor

+0

अब मैंने अपने उत्तर में एसवीएन पैच बनाने पर जानकारी शामिल की है। – lemonad

3

हाँ! यह संभव है!

चेक जानकारी के लिए इस पोस्ट: http://www.romanenco.com/gitsvn

तीन या चार सरल SVN और Git एस सी एम एस के सहजीवन बनाने के लिए कदम हैं।

मैंने इस तकनीक के साथ लगभग तीन महीने काम किया और कोई परेशानी नहीं है। यह बहुत अच्छा है! जब एसवीएन में आपका मुख्य रेपो और आप ऑफलाइन कर सकते हैं और गिट विलय के शक्तिशाली हो सकते हैं।

6

एक सबवर्सन भंडार के साथ सिंक में एक Git भंडार रखते हुए वास्तव में आसान है:

क्लोन सववर्सन रिपॉजिटरी (इस सरल उदाहरण में मैं शाखाओं/टैग अनदेखी कर रहा हूँ)

$ git svn clone https://url/to/repo/trunk 

ऊपर हैं- रखें सबवर्सन ट्रंक के साथ तारीख:

$ git svn rebase 

अब, अगर आप सबवर्सन रेपो के लिए उपयोग करने के लिए किया था, आप अपने परिवर्तनों को धक्का सकता है:

+०१२३५१६४१०
$ git commit 
$ git svn dcommit 

अन्यथा, एक पैच प्रस्तुत करने, अपने ही एकमात्र विकल्प है यदि सववर्सन रिपॉजिटरी को कमिटर Git का उपयोग करने में कोई दिलचस्पी नहीं है:

$ git diff 1cc92b96 > my_patch.patch 

इस मामले में यह स्पष्ट रूप से सबसे अच्छा है शाखा के लिए प्रतिबद्ध बनाने के लिए नहीं में आप सबवर्जन रेपो के साथ समन्वयित कर रहे हैं।

+0

मैं आईएम सिंकिंग शाखा में क्यों नहीं करना चाहिए? केवल इसलिए कि diff उत्पन्न करना आसान है (क्योंकि केवल तभी, एक प्रतिबद्ध आईडी की आवश्यकता है)? – Mizipzor

1

यदि आपके पास नहीं है, और न ही आप चाहते हैं, तो एसवीएन रिपोजिटरी तक पहुंच प्रदान करें, तो git-svn और StGit का संयोजन मदद कर सकता है। git-svn/एक क्लोन अद्यतन करता है और stg यह की चोटी पर पैच की एक श्रृंखला का कहना है बनाता है (stg आदेशों StGit Crash Course से है):

git svn clone .. 

stg new invent-some-patch-id 
...edit patch description... 
...hack hack hack in the tree... 
stg refresh 
...possibly hack some more... 
stg refresh  
.. 
stg mail 

देखें StGIT Tutorial आरंभ करने के लिए।

नोट: मैंने वास्तव में इस वर्कफ़्लो को आजमाया नहीं है।

+0

दिलचस्प, धन्यवाद, जब मैं घर आता हूं तो बीजी चेक करें। मुझे वास्तव में लगता है कि यहां सबसे बड़ी समस्या उन लोगों के साथ काम करने की कोशिश कर रही है जो वितरित संस्करण नियंत्रण प्रणाली में विश्वास नहीं करते हैं। लेकिन वे मैन्युअल रूप से पैच को मैन्युअल रूप से संभालने के लिए हैं, इसलिए मुझे अधिक से अधिक एहसास है कि शायद यह जाने का तरीका है। – Mizipzor

संबंधित मुद्दे