2011-08-15 5 views
11

से मौजूदा इंटेलिज आईडीईए परियोजनाओं को कैसे स्विच करें वर्तमान में मेरे पास मौजूदा इंटेलिज आईडीईए परियोजनाएं हैं जो एसवीएन रिपोजिटरी से जुड़ी हैं। मैं इन परियोजनाओं को गिट एसवीएन का उपयोग करने के लिए स्विच करने की सोच रहा हूं क्योंकि जब मैं एसवीएन रिपोजिटरी से कनेक्ट नहीं हूं तो मुझे स्थानीय संस्करण नियंत्रण प्रणाली की आवश्यकता होती है।एसवीएन से गिट एसवीएन

के बाद से IntelliJ विचार Git SVN पुल प्रदान नहीं करता है, मैं निम्न आदेश कमांड लाइन से Git करने के लिए SVN भंडार क्लोन करने के लिए चलाएँ: -

git svn clone --stdlayout --username myuser http://svnrepo/myproject -A authors.txt myproject 

SVN भंडार क्लोनिंग के बाद, मैं खोलने Intellij IDEA का उपयोग कर गिट-आधारित प्रोजेक्ट। इस बिंदु पर, इंटेलिज आईडीईए अनुपलब्ध संस्करण नियंत्रण निर्देशिकाओं के बारे में शिकायत करता है। मुझे पता चला कि इंटेलिज आईडीईए अभी भी पुराने एसवीएन कॉन्फ़िगरेशन को याद करता है। चूंकि इस परियोजना में अब .svn निर्देशिकाओं के बजाय .git निर्देशिकाएं हैं, इंटेलिज आईडीईए उलझन में आती है और यह नहीं जानता कि अभी किसी भी रिपॉजिटरीज से कैसे जुड़ना है।

केवल वैकल्पिक हल है कि मेरे लिए काम करता निम्न करने के लिए है: -

  • SVN भंडार में एक ब्रांड नई परियोजना (खाली परियोजना) बनाएँ।
  • "गीट svn क्लोन" प्रदर्शन करें।
  • इंटेलिज का उपयोग कर प्रोजेक्ट बनाएं।
  • इस बिंदु पर, इंटेलिज आईडीईए .git निर्देशिकाओं का पता लगाता है और मुझे संकेत देता है कि नई बनाई गई फ़ाइलों को गिट में जोड़ना है या नहीं।
  • एसवीएन-आधारित परियोजना से गिट-आधारित प्रोजेक्ट में सबकुछ कॉपी करें।

कहा कि, मैं नहीं एक मशीन पर इस IntelliJ विचार परियोजना पर Git चला सकते हैं और एक ही समय में एक और मशीन पर इस IntelliJ विचार परियोजना पर SVN का उपयोग करें। दोनों मशीनों को गिट का उपयोग करना चाहिए, या फिर इंटेलिज आईडीईए संस्करण नियंत्रण भंडार में प्रतिबद्ध नहीं हो पाएगा। मैं इसके साथ ठीक हूं और मैं अपनी सभी मशीनों में गिट का उपयोग कर सकता हूं। हालांकि, मैं अपने सभी मौजूदा एसवीएन-आधारित परियोजनाओं के लिए ब्रांड नई गिट-आधारित परियोजनाओं को न बनाने का एक तरीका खोजने का प्रयास कर रहा हूं। यह बहुत कठिन है क्योंकि मेरे पास कुछ एसवीएन परियोजनाएं हैं जिन्हें मुझे अब गिट का उपयोग करने की आवश्यकता है।

क्या इंटेलिज आईडीईए का उपयोग करके मेरी एसवीएन परियोजनाओं को गिट में स्विच करने के लिए मेरे लिए कोई बेहतर समाधान है?

धन्यवाद।

उत्तर

31

आप वर्तमान प्रोजेक्ट के लिए File | Settings | Version Control से संस्करण नियंत्रण प्रणाली का चयन कर सकते हैं। सेटिंग प्रोजेक्ट फ़ाइलों में से एक में संग्रहीत है (.idea/vcs.xml) इसलिए यदि आप उस फ़ाइल को संस्करण नियंत्रण में नहीं करते हैं, तो आप अलग-अलग मशीनों पर विभिन्न संस्करण नियंत्रण प्रणाली का उपयोग कर सकते हैं।

+0

धन्यवाद ड्रॉप डाउन मेनू। मैंने गिट जोड़ा और मैंने वीवीएस.एक्सएमएल में एसवीएन छोड़ा। ऐसा लगता है कि मुझे एक मशीन पर गिट का उपयोग करके और दूसरी मशीन पर एसवीएन का उपयोग करने की अनुमति मिलती है। – limc

+0

एंड्रॉइड स्टूडियो 1.2.2 के साथ कोई सेटिंग्स नहीं है परियोजना सेटिंग्स। मैं सेटिंग के तहत सबवर्सन के साथ प्रविष्टि को हटाकर एसवीएन को हटाने में सक्षम था। संस्करण नियंत्रण। इसने इसे और मेनू आइटम VCS में बदल दिया। संस्करण नियंत्रण एकीकरण सक्षम करें तब उपलब्ध था। मैंने गिट को सक्षम करने के लिए इसका इस्तेमाल किया। यह भी बदल गया .idea/vcs.xml। –

+0

अब कोई 'प्रोजेक्ट सेटिंग्स' नहीं हैं, सभी सेटिंग्स एक ही संवाद में हैं। लेकिन जवाब अभी भी मान्य है। –

1

बीटीडब्ल्यू, आप इंटेलिजे आइडिया में अंतर्निहित गिट समर्थन का उपयोग कर सकते हैं। अपने सबवर्सन रिपॉजिटरी में SubGit इंस्टॉल करें और आमतौर पर बनाए गए गिट रिपॉजिटरी के साथ काम करें, यानी कोई गिट-एसवीएन नहीं है।

सबगिट सर्वर की तरफ काम करता है और प्रत्येक आने वाले संशोधन पर सबवर्जन और गिट रिपॉजिटरीज को सिंक्रनाइज़ करता है।

+0

मैं वास्तव में सबगिट (मुझे इसके लिए भुगतान करने में कोई दिक्कत नहीं होगी) का उपयोग करना अच्छा लगेगा, हालांकि हमारे भंडार, जैसे कई लोग, बहुत ही अजीबता के साथ एक विरासत रेपो है जो सबगिट सिर्फ संभाल नहीं सकता है (बाहरी में पुराने काम करता है, अजीब शाखाएं अतीत में रणनीतियों, आदि)। इनमें से कुछ हमने हाल के वर्षों में तय किया है, लेकिन इसमें से बहुत से तय नहीं किए जा सकते हैं या ठीक करने के लिए कोई लागत औचित्य नहीं है। हमारे अनुभव से – Quartz

+0

@ क्वार्ट्ज हमेशा पुराने और बदसूरत सबवर्सन रिपोजिटरी के साथ कुछ करने के लिए होता है, चाहे वह डंप/लोड चक्र के माध्यम से इसे ठीक कर रहा हो या गिट को आयात करते समय बस कुछ पुराने संशोधन छोड़ दें। [email protected] पर हमसे संपर्क करने के लिए स्वतंत्र महसूस करें और अपने सबवर्सन रिपोजिटरी को अपने सभी कुरूपता में वर्णित करें :) हम आपके विशेष मामले के लिए संभावित समाधान सुझाएंगे; हम उन सुविधाओं के लिए प्राथमिकताओं को भी बदल सकते हैं जिन्हें हम निकट भविष्य में लागू करने की योजना बना रहे हैं। – vadishev

1

फ़ाइल-आधारित परियोजनाओं के लिए, आप धुंध फ़िल्टर सेट कर सकते हैं।

.git/info/विशेषताएँ (या।gitattributes) पंक्ति जोड़ें:

/*.ipr filter=vcs 

तब (निम्नलिखित चलाने मैं ~/बिन में अपने स्थानीय स्क्रिप्ट की दुकान है, लेकिन आप जहां भी उन्हें रख सकते हैं):

git config --global filter.vcs.smudge /path/to/filter-vcs-git 
git config --global filter.vcs.clean /path/to/filter-vcs-svn 

मेरे फिल्टर-VCS-Git (mapping लाइनों धब्बा vcsDirectoryMappings Git उपयोग करने के लिए):

#!/bin/bash 
sed 's/vcs="svn"/vcs="Git"/' 

मेरे फिल्टर-VCS-SVN (SVN उपयोग करने के लिए) vcsDirectoryMappings mapping लाइनों को साफ:

#!/bin/bash 
sed 's/vcs="Git"/vcs="svn"/' 

यह केवल sed के साथ * NIX सिस्टम पर काम करता है। लेकिन आप इसे विंडोज़ पर भी स्थापित करने में सक्षम होना चाहिए और ऊपर की खोल स्क्रिप्ट के समान काम करने के लिए .bat स्क्रिप्ट लिखकर। फिल्टर बस फ़ाइल को stdin फ़िल्टर से लेते हैं और फ़िल्टर की गई फ़ाइल को stdout पर थूकते हैं।

अगली बार जब आप फ़ाइल .ipr यह git उपयोग करने के लिए फ़िल्टर किया जाएगा चेकआउट, और जब आप इसे (git add *.ipr) जोड़ सकते हैं ताकि प्रतिबद्ध फ़ाइल svn का उपयोग करता है यह साफ हो जाएगा। ऐसा लगता है कि सभी गिट टूल्स (जैसे git diff) के साथ साफ-सुथरा काम करना प्रतीत होता है, जो सोचते हैं कि उस रेखा पर कुछ भी नहीं बदला है। VCS

0

enter image description here आप उपयोग कर सकते हैं में संस्करण नियंत्रण सेटिंग संवाद