2009-02-21 18 views
10

लोगों का उपयोग करते समय, जबकि इस परिदृश्य में साझा Git रेपो से खींच रहा दोहराया कोड संघर्ष का सामना करना पड़ रहा है संघर्ष से बचना:Git-svn

  1. एक आम SVN भंडार

  2. रहे हैं है कई डेवलपर्स (Git SVN रिबेस/dcommit के माध्यम से)

  3. समय-समय इन Git का उपयोग कर डेवलपर्स को प्रभावित किए बिना उनके परिवर्तन साझा करने की आवश्यकता करने के लिए जो ट्रैक/सिंक अपने खुद के स्थानीय Git Git-svn पुल का उपयोग रेपोस के साथ इस आम SVN रेपो SVN भंडार। इस उद्देश्य के लिए वे एक साझा गिट रेपो सेट करते हैं और पुल/पुश कमांड का उपयोग करके अपने काम का आदान-प्रदान करते हैं

  4. यह पता चला है कि इन डेवलपर्स को मुख्य svn repo के साथ समन्वयित करने के लिए "git svn rebase" के उपयोग के कारण संघर्ष समस्याओं का सामना करना पड़ सकता है। ऐसा इसलिए होता है क्योंकि रिबेस ऑपरेशन स्थानीय गिट शाखा के इतिहास को फिर से लिखता है और साझा गिट रेपो में धक्का देना असंभव हो जाता है और इससे खींचने से अक्सर संघर्ष होते हैं।

कोई भी एक ही समस्या है?

उत्तर

8

git-svn(1) का कहना है:

सरलता के और एक कम सक्षम प्रणाली (SVN) के साथ अंतरसंक्रियता के लिए, यह अनुशंसित है कि सभी Git-SVN उपयोगकर्ताओं, क्लोन लाने और सीधे dcommit से एसवीएन सर्वर, और गिट रिपॉजिटरीज और शाखाओं के बीच सभी गिट-क्लोन/पुल/मर्ज/पुश ऑपरेशंस से बचें। गिट शाखाओं और उपयोगकर्ताओं के बीच कोड का आदान-प्रदान करने की अनुशंसित विधि गिट-प्रारूप-पैच और गिट-एम, या बस 'एसवीएन भंडार के लिए' dcommit'ing 'है।

यदि आपकी स्थिति इसकी अनुमति देती है, तो आप अन्य डेवलपर्स से अपने काम को अलग करने के लिए एसवीएन भंडार में शाखाओं (यानी उपनिर्देशिका) का उपयोग कर सकते हैं।

3

मुझे पता चला कि विभिन्न गिट शाखाओं में गिट-एसवीएन परिवर्तन विलय हो रहा है और उनके बीच काफी ठीक है। जिस बिंदु पर गिट-एसवीएन समस्याएं शुरू होती हैं, वे इन परिवर्तनों को वापस svn (या बल्कि, गिट शाखा से हटाते हैं) से विलय कर रही हैं। ऐसा लगता है कि यदि आप अपने परिवर्तनों को मैन्युअल रूप से svn पर वापस मर्ज करते हैं (उदा। git diff | patch) तो इन समस्याओं में से अधिकांश को रोका जा सकता है। इससे आपके द्वारा विलय की जाने वाली चीज़ से इतिहास पट्टी हो जाएगी, लेकिन इसके लिए उपवर्तन उपयोगकर्ताओं का उपयोग इस पर किया जाता है कि यह एक बड़ा सौदा नहीं है।