2012-10-05 30 views
27

के बीच कोई ज़रूरत नहीं है मैं एक विकास परियोजना कर रहा हूं।गीट svn - क्या मैं एक ही समय में गिट और svn का उपयोग कर सकता हूं? गिट और svn

कंपनी तो मुख्य commit और checkout के लिए, SVN उपयोग कर रहा है SVN के माध्यम से किया जाना चाहिए।

हालांकि, मुझे SVN पसंद नहीं है और मैं git उपयोगकर्ता हूं। चूंकि केवल मुझे लगता है कि मेरा कोड अच्छा है, मैं कंपनी SVN पर प्रतिबद्ध हूं, मैं अपने इतिहास के रखरखाव के लिए git का उपयोग करना चाहता हूं।

मुझे SVN चीज़ करने के लिए गिट का उपयोग करने की आवश्यकता नहीं है, न ही इसके विपरीत।

क्या मैं एक ही समय में एसवीएन और गिट का उपयोग कर अपने कोड को नियंत्रित कर सकता हूं? उनके बीच कोई बातचीत नहीं।

+1

बस एसवीएन के लिए '.git' फ़ोल्डर और गिट के लिए' .svn' फ़ोल्डर को अनदेखा करें और आपको ठीक होना चाहिए। या आप एक बार में दोनों से मूल रूप से धक्का/खींचने के लिए पूछ रहे हैं? – Blender

+0

लेकिन क्यों? गिट दूसरी तरफ एक svn भंडार के साथ पूरी तरह से ठीक काम करता है, क्यों इसका लाभ नहीं है? –

+3

निश्चित रूप से संभव है, और आपके सहयोगियों की ओर एक उचित कदम, अधूरा परिवर्तनों को धक्का नहीं देना। हालांकि वहां एक _huge_ खतरे छिपा हुआ है: आप कंपनियों के भंडार में बहुत कम काम करेंगे। इसका मतलब है कि आप अपने सहयोगियों की तुलना में अधिक संघर्ष करेंगे। उपversण का उपयोग करते समय यह अक्सर प्रतिबद्ध व्यवहार का उपयोग करने के लिए समझ में आता है। मुझे यह सीखना था कि कठिन तरीका :-) – arkascha

उत्तर

32

आप git svn clone <SVN repo URL> का उपयोग कर अपनी मशीन पर एक सबवर्जन रिपोजिटरी क्लोन कर सकते हैं। कोड एक गिट भंडार के रूप में उपलब्ध होगा। आप वहां अपना काम कर सकते हैं और कृपया अपनी पसंद के अनुसार स्थानीय काम कर सकते हैं। संपूर्ण भंडार की बजाय "उथला" चेकआउट प्राप्त करने के लिए एक कमांड लाइन विकल्प होता है जो अक्सर उपयोगी होता है। मैं भूल गया कि यह क्या है।

कभी भी, आप svn update के समतुल्य भागना चाहते हैं, git svn rebase करें। यह आपके द्वारा अंतिम सिंक्रनाइज़ किए जाने के बाद एसवीएन में चेक किए गए नए कामों को लाएगा और फिर नए बदलावों पर आपके परिवर्तनों को फिर से दबाएंगे।

जब आप अपनी प्रतिबद्धताओं के साथ तैयार हों, तो git svn dcommit करें। यह आपके सभी नए कामों को एक-एक करके svn में भेज देगा। आप अपने स्थानीय कामों को एक ही में स्क्वैश कर सकते हैं और पहले स्थानीय रीबेस कर सकते हैं और फिर एक svn dcommit कर सकते हैं। यह प्रारंभिक शाखा (आमतौर पर master) पर किया जाना चाहिए।

तथ्य यह है कि आप उपversण से जांच रहे हैं और फिर स्थानीय रूप से गिट में काम कर रहे हैं इसका मतलब है कि उनके बीच "बातचीत" है इसलिए आपका अंतिम विवरण मान्य नहीं है।

+1

उत्तर में एक संपादन किया गया था जिसे टिप्पणी के रूप में पोस्ट किया जाना चाहिए था। मैंने संपादन को वापस कर दिया है और इस टिप्पणी में अतिरिक्त वर्बैटिम पोस्ट किया है - इसे सामान्य रूप से एक ही संशोधन के रूप में आपके सभी परिवर्तनों को करने के लिए एक बुरा अभ्यास माना जाता है (उदाहरण के लिए http://stackoverflow.com/questions/107264/how-often देखें -ट-प्रतिबद्ध-परिवर्तन-से-स्रोत-नियंत्रण और http://www.codinghorror.com/blog/2008/08/check-in-early-check-in-often.html)। –

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