2009-01-27 3 views
7

में है मेरी टीम Git का उपयोग कर विकसित, अपनी सुविधाओं के कई का अच्छा इस्तेमाल कर रही है। हम svit का उपयोग करने में मापने के लिए अधिक कुशल हैं।कैसे आप SVN से तैनात है जब अपने मूल भंडार Git

हालांकि हमारे वर्तमान ग्राहक हमें एक SVN भंडार, जिसका अर्थ है कि हम किसी भी तरह नियमित रूप से svn को Git से हमारे कोड को स्थानांतरित करने के लिए आवश्यक हैं से कोड को तैनात करना चाहते हैं।

समय हम एक निर्देशिका है कि दोनों एक SVN चेकआउट, और एक Git रेपो को बनाए रखने रहे हैं (इतने पर एक .git होता है और) और हम तो Git खींच कर सकते हैं; svn प्रतिबद्ध

बेशक, प्रक्रिया थोड़ा अधिक जटिल है, क्योंकि हम रिलीज पॉइंट रिकॉर्ड करने के लिए टैग का उपयोग करना चाहते हैं, और गिट द्वारा बनाई गई फ़ाइलों पर svn जोड़ने का ओवरहेड है।

ऐसा करने का सबसे अच्छा तरीका क्या है?

Git-svn इस समस्या को मदद करने के लिए जा रहा है? मैं इसे अन्य इस्तेमाल किया जब एक SVN रेपो का उपयोग करने से, एक व्यक्ति डेवलपर स्थानीय स्तर पर Git उपकरणों का उपयोग करने की अनुमति के लिए कभी नहीं देखा है। मैं पता नहीं कितनी अच्छी तरह यह कई कई शाखाओं पर काम कर रहे डेवलपर्स के साथ काम करेगा ....

उत्तर

6

एक व्यक्ति SVN के लिए सभी कोड के एकीकरण समझा जाता है, और आप जानते हैं कि कोई और नहीं SVN रेपो योगदान दे रहा है, तुम उसे git-svn का उपयोग परिवर्तन पुश करने के लिए हो सकता है:

  1. इंटीग्रेटर का उपयोग करता है उसकी master SVN के लिए एक ट्रैकिंग शाखा (जैसे Git SVN क्लोन $ रेपो) के रूप में। वह कभी इस शाखा
  2. डेवलपर्स सामान्य रूप से कार्य पर काम करता है (संभवतः विषय शाखाओं पर कुछ मुख्य लाइन एकीकरण शाखाओं के साथ,)
  3. जब आप एक रिलीज करना चाहते हैं, एकीकरण उसकी मुख्य शाखा के लिए सभी डेवलपर कोड खींचती है (नहीं master, लेकिन integration की तरह कुछ)
  4. इंटीग्रेटर करता है जो कुछ भी रिहाई सुनिश्चित करने के लिए जाने के लिए
  5. इंटीग्रेटर की जरूरत है अच्छा है विलीन हो जाती है integration उसकी master
  6. इंटीग्रेटर के साथ git svn dcommit
  7. 012 करता है

दूसरों SVN में योगदान दे रहे हैं, तो आप इसे इस तरह अभी भी कर सकता है, लेकिन नियमित रूप से एकीकरण SVN से लिया जाएगा और इतनी के रूप में से बचने के लिए इस विलय के विरोध devs के लिए उन परिवर्तनों उपलब्ध बनाने के लिए होगा।

किसी भी हाल में परेशानी का एक बहुत बिना SVN में कोड हो रही मुख्य मुद्दा है। आप स्थानीय चेकआउट के बिना एसवीएन में टैग और शाखा कर सकते हैं ताकि इंटीग्रेटर टैगिंग कर सके (सुनिश्चित नहीं है कि git svn एसवीएन को टैग भेज देगा या नहीं)

1

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

यह लेख लगता है कि यह पता लगाना है कि यह कैसे सेट अप सही ढंग से, using git grafts to restore svn merge history में मदद कर सकता है।

0

वर्तमान ग्राहक हमें एक SVN भंडार से कोड को तैनात करना चाहते हैं ...

... आप एक git भंडार से सभी विकास कर रही है और लिपियों का निर्माण चलाकर कि आवश्यकता को पूरा कर सकते हैं कि बाहर की जाँच एक सबवर्सन में निर्माण के लिए स्नैपशॉट?

यदि ऐसा है, तो यह मौजूदा बिल्ड स्क्रिप्ट्स में न्यूनतम परिवर्तनों के साथ काम करेगा जो एक सबवर्जन रिपोजिटरी में कोड पर भरोसा करते हैं। यह तक पहुँचने के लिए एक SVN ग्राहक का उपयोग करता Git

> svn co https://github.com/restOfProjectURL/tags/BUILD-TAG-JAN-1-2015 

या

> svn co https://github.com/restOfProjectURL/branches/DEV-BRANCH-FIXES 

अपने निर्माण स्क्रिप्ट इस चेकआउट (या इसे की तरह कुछ) एक स्थानीय कार्यशील निर्देशिका बनाने के लिए और उसके बाद, तुम वहाँ से तैनात तकनीकी रूप से शामिल करते हैं सबवर्सन से तैनात कर रहे हैं और आप सब कुछ के लिए गिट का लाभ उठा सकते हैं।

(यह https://help.github.com/articles/support-for-subversion-clients/ से सहायता के साथ था)

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