2011-10-07 14 views
39

मैं बस svn से git तक जा रहा हूं, और कुछ अच्छी नींव रखने के लिए उत्सुक हूं।क्या मुझे घर या ग्रहण कार्यक्षेत्र में गिट भंडार स्टोर करना चाहिए?

डिफ़ॉल्ट रूप से ग्रहण मेरे स्थानीय क्लोन भंडार को ~/git में संग्रहीत करना चाहता है। मैं एक ही कार्यक्षेत्र में किसी कार्य के लिए सभी डेटा रखने में अधिक आरामदायक हूं - इसलिए मैं इसे अपने कार्यक्षेत्र में रखने के इच्छुक हूं।

क्या कोई महत्वपूर्ण पेशेवर/विपक्ष मुझे विचार करना चाहिए?

मुझे बहुत सारी शाखाएं करने का इरादा नहीं है - मैं वास्तव में कुछ अविश्वसनीय इंटरनेट कॉम मुद्दों पर काबू पाने के लिए वास्तव में डीवीसीएस मार्ग पर जा रहा हूं।

+0

~ निर्देशिका कहां है? – rasen58

+7

~ निर्देशिका यूनिक्स-आधारित ऑपरेटिंग सिस्टम में होम निर्देशिका के लिए शॉर्टकट का उपयोग किया जाता है (http://en.wikipedia.org/wiki/Home_directory देखें) – ianmayo

उत्तर

25

मैं भी ग्रहण में गिट में स्विच कर रहा हूं, और इस मुद्दे के बारे में पढ़ रहा हूं। ऐसा लगता है कि current wisdom (हालांकि नहीं हर कोई इससे सहमत हैं) है:

  • नहीं कार्यक्षेत्र निर्देशिका के नीचे अपनी परियोजनाओं होने के लिए इस्तेमाल किया हो जाओ।

  • संबंधित ग्रहण परियोजनाओं के प्रत्येक समूह (और शायद अधिक फाइलें) के लिए एक गिट भंडार है। "संबंधित परियोजनाओं" की अवधारणा आपकी सुविधा तक है [*]

  • प्रत्येक रिपोजिटरी के लिए, प्रत्येक जावा प्रोजेक्ट के लिए एक प्रथम स्तर की निर्देशिका। इसका तात्पर्य है कि आपके पास .git/ निर्देशिका होगी, और, उसी स्तर पर, प्रोजेक्ट निर्देशिकाएं।

उदाहरण: मान लीजिए कि, "GIT से पहले", आप कई परियोजनाओं के साथ एक ग्रहण कार्यक्षेत्र था:

/wk/workspace/.metadata/ 
/wk/workspace/projXXX/ 
/wk/workspace/projXXXtest/ (related with the previous) 
/wk/workspace/projYYY1/  | 
/wk/workspace/projYYY2/  > three related projects 
/wk/workspace/projYYY3/  | 
/wk/workspace/projZ/  (a project you are not going to version in git) 

तो फिर तुम दो खाली निर्देशिका, प्रत्येक भंडार लिए वह बना देंगे, कहते हैं:

~/repositories/XXX/ 
~/repositories/YYY/ 

और बाद में, नए GIT लेआउट के साथ, आप होगा:

/wk/workspace/.metadata/ 
/wk/workspace/projZ/ 

~/repositories/XXX/.git/ (XXX related repository - non-bare) 
~/repositories/XXX/projXXX/ 
~/repositories/XXX/projXXXtest/ 

~/repositories/YYY/.git/ (YYY related repository - non-bare) 
~/repositories/YYY/projYYY1/ 
~/repositories/YYY/projYYY2/ 
~/repositories/YYY/projYYY3/ 
जब आप क्लिक टीम> एक मौजूदा परियोजना को लेकर शेयर और निर्दिष्ट करें (उदाहरण में) ~/repositories/XXX/.git/ भंडार के रूप में, ( ~/repositories/XXX/ के रूप में "कार्य निर्देशिका", छोड़ "पथ

ग्रहण (EGit) आप के लिए यह सब करता है भंडार के भीतर " खाली)।

[*] ध्यान रखें कि परियोजनाओं का प्रत्येक समूह गिट पॉइंट-ऑफ-व्यू से है, केवल एक भंडार के अंदर निर्देशिकाओं का एक सेट है। कुछ प्रासंगिक प्रभाव: उपर्युक्त उदाहरण में, आपके पास ग्रहण कार्यक्षेत्र में दो अलग-अलग शाखाओं/परियोजनाओं के संस्करण projYYY1 - projYYY2 एक साथ नहीं होंगे; और, कहें, जब आप एक परियोजना प्रतिबद्धता टैग करते हैं, तो आप वास्तव में पूर्ण भंडार (परियोजनाओं का समूह) प्रतिबद्धता टैग कर रहे हैं।

+2

क्या आपके पास असहमत लोगों के लिए एक लिंक या दो होना है? क्योंकि मुझे "सामान्य" ज्ञान का तर्क मिलता है "दृष्टिकोण पूरी तरह से विश्वास नहीं करता है। दिए गए सभी कारण उस मामले पर लागू होते हैं जहां आप कार्यस्थल को रिपोजिटरी के बजाए रिपोजिटरी बनाते हैं। नोट मैं सहमत हूं कि ग्रहण अनुशंसित पथ लगता है , लेकिन मुझे विश्वास नहीं है कि वे सही हैं :) – studgeek

+0

मुझे यकीन नहीं है कि मैं विकल्प को समझता हूं "रिपोजिटरी प्रोजेक्ट की बजाय वर्कस्पेस को रिपोजिटरी बनाएं" मेरे उदाहरण में, प्रत्येक रिपॉजिटरी न तो वर्कस्पेस से मेल खाती है और न ही एक परियोजना, लेकिन परियोजनाओं के एक सेट के लिए। – leonbloy

+2

आप प्रोजेक्ट स्तर पर भंडार कर सकते हैं। इसलिए आपको परियोजना को बिल्कुल स्थानांतरित करने की आवश्यकता नहीं है और आपके द्वारा लिंक किए गए लेख में सूचीबद्ध कोई भी समस्या नहीं है यह मानता है कि आपको एक भंडार में एक से अधिक प्रोजेक्ट की आवश्यकता नहीं है। – studgeek

2

.git होना चाहिए जहां अपने काम का पेड़ है याद रखें कि Git के साथ, शाखाओं निर्देशिका नहीं हैं

(है कि मौजूदा शाखा आप पर काम कर रहे के वर्तमान प्रधान का प्रतिनिधित्व फ़ाइलें है) (SVN के विपरीत) , इसलिए आपका कामकाजी पेड़ सीधे एक शाखा सामग्री का प्रतिनिधित्व करेगा, न कि कई निर्देशिकाएं (आपकी विभिन्न शाखाओं के लिए), उसके बाद प्रति शाखा सामग्री।

मैं आमतौर पर अपने प्रोजेक्ट स्रोतों को अपने ग्रहण कार्यक्षेत्र से अलग रखना पसंद करता हूं, लेकिन यह प्राथमिकता का विषय है।

+0

कार्यस्थल से अलग अपने स्रोतों को रखना, हां, वरीयता का विषय है , हालांकि यह ज़ोलटन उज्हेली ने ऊपर लिखा है कि इस दृष्टिकोण से संबंधित परियोजनाओं को एक ही फ़ोल्डर के तहत समूहबद्ध करने के लिए कुछ विशिष्ट फायदे हो सकते हैं ताकि उन्हें एक ही गिट भंडार के भीतर संस्करणित किया जा सके। – Carl

+2

@ क्रोए ग्रहण कार्यक्षेत्र मुख्य रूप से ग्रहण मेटाडाटा के लिए है। जब आप एक्लिप्स बदलते हैं या उसी मशीन पर ग्रहण के कई संस्करणों का उपयोग करना चाहते हैं, तो आप अपनी परियोजना को एक्लिप्स से स्वतंत्र रूप से आयात करना चाहते हैं जो आयात करता है: यह स्पष्ट और आसान है अगर आपकी परियोजना के पास ग्रहण के बाहर स्वयं का जीवन है। – VonC

2

मुझे लगता है कि वर्कस्पेस के बाहर गिट संस्करण पेड़ को संग्रहीत करना एक अच्छा विचार है। इस तरह विभिन्न रिपॉजिटरीज से परियोजनाओं को अलग करना संभव है, लेकिन फिर भी उन्हें एक ही कार्यक्षेत्र में संभालना संभव है।

इसके अतिरिक्त, यदि आप वर्कस्पेस के बाहर कोड डालते हैं, तो आप वर्कस्पेस (कार्यशील प्रतिलिपि में) के बाहर पदानुक्रमित रूप से अपनी परियोजनाओं को व्यवस्थित कर सकते हैं, लेकिन फिर भी ग्रहण में फ्लैट प्रतिनिधित्व देखते हैं।

+0

हां, यह बहुत उचित लगता है, क्योंकि एक्लिप्स अपने कार्यक्षेत्र फ़ोल्डर के बाहर अपनी परियोजनाओं के साथ सहज है। तो आप लियोब्लॉय के जवाब में सुझाए गए अनुसार, एक ही फ़ोल्डर के तहत अपनी संबंधित परियोजनाओं को एक साथ समूहित कर सकते हैं, केवल फ़ोल्डर * वर्कस्पेस पदानुक्रम के बाहर * होगा, और गिट रिपोज़ ऐसे प्रत्येक फ़ोल्डर से बाहर होंगे। हालांकि, दोनों गिट और ईजीट के लिए नया होने के नाते, मुझे यकीन नहीं है कि ईजीट कार्यक्षेत्र के बाहर स्रोत से निपटने में सक्षम होगा - शायद आपके दृष्टिकोण को नियमित कमांड लाइन गिट या जीयूआई के उपयोग की आवश्यकता होगी जो शीर्ष पर बनाया गया है वह, और ईजीट नहीं? – Carl

+0

मुझे लगता है कि एक विकल्प केवल "संबंधित" परियोजनाओं को एक वर्कस्पेस साझा करने की अनुमति देने के लिए हो सकता है, और फिर शीर्ष स्तर के वर्कस्पेस फ़ोल्डर से अपने गिट रेपो को हटा दें। लेकिन यह असुविधाजनक रूप से कठोर हो सकता है, क्योंकि कोई भी एक ही वर्कस्पेस में एक ही प्रकार की परियोजनाओं को आसान * संदर्भ * के लिए प्रोजेक्ट करना चाहता है, भले ही उन्हें एक संस्करण नियंत्रण भंडार के तहत एक साथ विकसित नहीं किया गया हो। तो आपका सुझाव सबसे आम तौर पर सेवा योग्य लगता है। – Carl

+0

वास्तव में, मैं प्रलेखन कि कहते हैं तो आप इस यहाँ EGit उपयोग कर सकते हैं मिल गया है: http://wiki.eclipse.org/EGit/User_Guide#Creating_a_Git_Repository_for_multiple_Projects – Carl

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