2009-09-19 3 views
50

ऐसा लगता है कि मुझे अब कुछ पता होना चाहिए, लेकिन किसी भी कारण से मैं नहीं करता हूं। मुझे इस विषय पर बहुत भाग्य नहीं मिल रहा है।एकाधिक प्रोग्रामर। हम एक ही कोड पर कैसे काम करते हैं और यह सुनिश्चित करते हैं कि यह हमेशा अपडेट हो जाए?

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

कैसे, या क्या यह बहुत अच्छा होगा सुचारू रूप से अधिक के साथ इस परियोजना के इस कदम मदद करने के लिए उपयोग करने के लिए पर कुछ सरल सलाह। और यह एक बड़ा हिस्सा है कि हम इसे पहले स्थान पर क्यों कर रहे हैं।

अद्यतन:

कुछ शोध मैं कछुआ SVN पर बसे होने के बाद। सरल राइट क्लिक ऐड-ऑन खिड़कियों को अद्यतन करने के लिए/आपके होस्ट किए गए सर्वर पर फ़ाइलें प्रतिबद्ध बहुत आसान और उपयोगकर्ता के अनुकूल है ..

अतिरिक्त स्पष्टीकरण

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

+7

+1 - एक नए डेवलपर के लिए पूछने के लिए अच्छा सवाल! – David

+3

जो कुछ भी आप करते हैं, Visual SourceSafe के साथ न जाएं - यह ओपन-सोर्स विकल्पों की तुलना नहीं कर सकता है। http://www.codinghorror.com/blog/archives/000660.html –

+8

मुझे आवश्यक शब्द स्रोत नियंत्रण था। सवाल पूछने के लिए मूर्खता से महसूस किया, लेकिन मैं बिना किसी किस्मत के एक घंटे के लिए शब्द जानने के बिना खोज रहा था। अंत में मेरे गर्व को चूसा और पूछने का फैसला किया। :) खुशी मैंने किया .. – jsmith

उत्तर

43

लगता है! क्या आपने Subversion (SVN) पर देखा है? TortoiseSVN नामक इसके लिए एक शानदार विंडोज क्लाइंट है। दोनों मुक्त & खुले स्रोत हैं।

आप अपने मशीनों में से एक पर एक सबवर्सन सर्वर सेट, या कहीं एक वेब सर्वर पर होगा। फिर आप दोनों नियमित अंतराल पर सर्वर में अपने परिवर्तन करते हैं, और सर्वर संशोधन जैसे चीजों का प्रबंधन करता है, टिप्पणियां जो आप संलग्न करने के लिए संलग्न करते हैं। क्लाइंट के साथ, आप संशोधन कर सकते हैं जैसे संशोधनों के बीच अंतर & परिवर्तनों को मर्ज करें (स्वचालित रूप से या मैन्युअल रूप से) फ़ाइलों के भीतर। यह आपके प्रोजेक्ट पर अन्य देवताओं को जोड़ने में भी आसान बनाता है, बस उन्हें अपने सबवर्जन सर्वर तक पहुंच प्रदान करें। एसवीएन plugins for Eclipse और Visual Studio हैं, या आप TortoiseSVN का उपयोग कर सकते हैं जो कमांडलाइन पर स्टैंडअलोन चला सकता है और विंडोज शैल के साथ एकीकृत करता है (नीचे देखें)।

TortoiseSVN shell integration http://olex.openlogic.com/wazi/wp-content/uploads/2009/03/create_repo_tortoisesvn.png

बात मैं TortoiseSVN के बारे में सबसे अधिक पसंद है, यह पूरी तरह से भाषा या आईडीई स्वतंत्र है और मैं ग्रहण से बाहर जावा परियोजनाओं के लिए उपयोग कर सकते हैं VS2008 से नेट परियोजनाओं, या सी में चालक विकास सामान/सी ++। आप प्रोग्राम के तरह से आकर्षक उत्पाद कर देता है कि SubWCRev उपकरण है जो TortoiseSVN के साथ जहाज भी उजागर करता है a COM interface जाँच करें कि कौन किये गये पिछले प्रतिबद्ध है और जब, क्या नवीनतम संशोधन संख्या आदि है मैं यह उल्लेख क्योंकि वहाँ isn '

नोट TortoiseSVN दस्तावेज़ों के अलावा इसके बारे में बहुत सारी जानकारी नहीं है, और यह हाल ही में मेरे लिए एक वीएस -2008 एडिन लिख रहा है जो मैं अपने .NET प्रोजेक्ट्स पर स्वचालित रूप से संशोधन संख्या और वृद्धि बिल्ड संख्या को सिंक करने के लिए उपयोग करता हूं।

साइटों की एक संख्या में इस तरह के Google Code और Sourceforge के रूप में ओपन सोर्स प्रोजेक्ट (या बंद स्रोत/वाणिज्यिक उत्पादों के लिए भुगतान का उपयोग), के लिए मुफ्त SVN भंडार पहुँच प्रदान करते हैं। ये ऑनलाइन भंडार परियोजना के काम के लिए वास्तव में सहायक भी हो सकते हैं यदि विशेष रूप से यदि आप एक समूह परियोजना पर काम कर रहे छात्र हैं।

+10

+1: सरल सलाह और बिल्कुल जरूरी है। जीआईटी एक विकल्प है। –

+2

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

+1

+1 - अच्छा, संक्षेप वर्णन और स्रोत नियंत्रण में मेरे पसंदीदा विकल्प – David

3

अनुसंधान स्रोत नियंत्रण। यहाँ एक अच्छा परिचय है:

http://www.ericsink.com/scm/source_control.html

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

9

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

आप अंततः सुझाव जो स्रोत नियंत्रण उपकरण पर उपयोग करने के लिए पूछने के लिए जा रहे हैं। हमारी टीम के लिए, हम एसवीएन (उर्फ सबवर्सियन) का उपयोग करते हैं, जो एक बहुत अच्छा मुक्त ओपन सोर्स समाधान है जो लगभग किसी भी चीज़ के साथ काम करता है।

विकिपीडिया लिंक: है कि आपने कुछ स्रोत नियंत्रण की जरूरत है

http://en.wikipedia.org/wiki/Revision_control

2

"या साझा ग्राहक है कि हम इस्तेमाल कर सकते हैं किसी तरह का", फ़ाइलों को साझा करने हालांकि सबसे आसान तरीका

स्रोत नियंत्रण शायद दृष्टिकोण आधिकारिक तौर पर की सिफारिश की है DropBox की तरह कुछ स्थापित करने के लिए है।

आप एक उपयोगकर्ता नाम/पासवर्ड आप और आपके दोस्त के बीच साझा के साथ एक मुफ्त 2GB खाते में साइन अप। फिर आप ड्रॉपबॉक्स क्लाइंट को अपने और अपने दोस्तों के पीसी पर इंस्टॉल करते हैं और साझा खाते का उपयोग करते हैं।

एक बार ड्रॉपबॉक्स चलने के बाद "मेरा ड्रॉपबॉक्स" नामक मेरे दस्तावेज़ों के तहत एक फ़ोल्डर बनाता है। अब, कुछ भी आप इस फ़ोल्डर के अंतर्गत करते हैं, जैसे फाइलें और फ़ोल्डर्स बनाना, संपादित करना, हटाना, स्वचालित रूप से आपके दोस्तों पीसी पर "मेरा ड्रॉपबॉक्स" फ़ोल्डर में सिंक्रनाइज़ हो जाएगा और इसके विपरीत। इंटरनेट एक्सेस की आवश्यकता है।

तुम भी इतिहास और आपकी फ़ाइलों के संशोधन मिलता है, तो आप रोलबैक और यदि आवश्यक हो पहले के संस्करणों को बहाल कर सकते हैं। यदि आप दोनों एक ही फाइल पर एक ही समय में काम करते हैं, बस स्रोत नियंत्रण की तरह, आपको फ़ाइलों को मैन्युअल रूप से मर्ज करना होगा, लेकिन ड्रॉपबॉक्स इस मामले में "विवादित प्रति" सहेजता है।

मैं ड्रॉपबॉक्स अपने आप को लगभग एक वर्ष के लिए इस्तेमाल किया और बहुत खुश के साथ उपयोग में आसानी है कर रहा हूँ है। मैं ड्रॉपबॉक्स के लिए काम नहीं करता हूं या किसी अन्य के साथ कुछ भी करने के लिए खुश हूं, तो एक खुश उपयोगकर्ता होने के नाते।

एक 'असली' स्रोत नियंत्रण प्रणाली मुख्य रूप से आप स्वचालित बैकअप, पिछले संस्करणों और एकाधिक उपयोगकर्ताओं संपादन स्रोत कोड के managmenet पर वापस लौटने की क्षमता देता है, लेकिन इतना ड्रॉपबॉक्स करता है।

+0

से नवीनतम संस्करण है हां, ऐसी सेवा के माध्यम से साझा करना संभव हो सकता है, लेकिन यदि कोई प्रोग्रामर के रूप में खुद को शिक्षित करना चाहता है, तो यह बुरी सलाह है। बीटीडब्ल्यू, नहीं, "असली" स्रोत नियंत्रण आपको स्वचालित बैकअप देता है। पूरी तरह से अलग बात है। कई परिवर्तनों की परमाणुता, आसान परिवर्तन समीक्षा, शाखाकरण, टैगिंग और विलय आवश्यक हैं। – gimpf

+0

@gimpf, एक अच्छी तरह से जानता है कि किसी को वास्तविक विकास के लिए "उचित स्रोत नियंत्रण" का उपयोग करना चाहिए। कोई सिर्फ इस तरह की टिप्पणी करने के लिए किसी के लिए इंतजार कर रहा था। साथ ही, कोई आपको गलत समझता है कि "स्वचालित बैकअप" का क्या अर्थ है। – Ash

+0

लोग 'एक' पर आसान हो जाते हैं :) हम सभी व्याकरण विद्यालय में नहीं गए .. – Darknight

7

उस Git के बारे में थोड़ा जानने के लिए तो आप GitHub पर अपने काम को होस्ट कर सकते तैयार हैं, तो।कॉम और अभी भी दोनों अलग-अलग काम करते हैं।

3

पिछले 6 महीनों में, मैं गिट पर चले गए और इससे काफी प्रसन्न हूं। लेकिन सामान्य रूप से, सीवीएस | svn | git सबसे आम ओपन सोर्स एससीएम (स्रोत कोड प्रबंधन) हैं और उनमें से कोई भी आपकी आवश्यकताओं को पूरा करने में सक्षम होना चाहिए।

8

सरल उत्तर यह है कि आप किसी प्रकार का संशोधन नियंत्रण सॉफ्टवेयर चाहते हैं।

अधिक जटिल जवाब है कि संशोधन नियंत्रण होने की तुलना में बहुत आसान है इसे का उपयोग, या यह अच्छी तरह से उपयोग कर रहा है।

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

हालांकि, आप जो संशोधन नियंत्रण प्रणाली चुनते हैं वह उपयोग की आदतों को बढ़ाने से कम महत्वपूर्ण है जो आपको वास्तव में अपने उपकरणों का लाभ लेने की अनुमति देगी। अनुभवी डेवलपर्स वहां के सर्वोत्तम टूल का उपयोग करके भी खराब तरीके से डिज़ाइन किए गए या खराब प्रबंधित स्रोत भंडारों में उलझ जाते हैं।

कुछ बातें सोचने के लिए के बारे में:

  • आप दिनचर्या के एक मामले के रूप में अक्सर और लगातार अपने रेपो अपडेट नहीं हो रहे हैं, यह बहुत उपयोग नहीं किया जाएगा जब आप इसकी आवश्यकता है।

  • लर्निंग क्या अलग-अलग लोगों के बारे में सर्वोत्तम प्रथाओं कहना है एक डिग्री के लिए उपयोगी है, लेकिन कभी कभी सबसे महत्वपूर्ण कारक है बस कि वहाँ एक मानक है, और शामिल प्रत्येक व्यक्ति समझता है कि और यह करने के लिए सहमत है।

  • रेपो संगठन अत्यधिक पथ निर्भर है।
    आपकी परियोजना शुरू होने पर सेटअप और टियरडाउन सस्ते है। शुरुआत में संगठनात्मक संरचना के बारे में picky होने से डरो मत। यह एकमात्र समय हो सकता है जो आप हो सकते हैं।

4

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

उपकरण का उपयोग, आपके मामले में बहुत आसान है। एक संस्करण नियंत्रण प्रणाली चुनें और इसका उपयोग करना सीखें। विकल्प कई हैं, लेकिन सबसे महत्वपूर्ण कारक उपकरण समर्थन है। उदाहरण के लिए उपकरणों की tortuise प्रकार खिड़कियां उपयोगकर्ताओं (TortuiseSVN, ToruiseCVS, TortuiseHg) के लिए महान हैं क्योंकि वे खिड़कियों खोल में एकीकृत है और आप देखते हैं कि क्या बदलाव के लिए (उन पर विभिन्न आइकन लगाने से प्रत्येक फ़ाइल और निर्देशिका के लिए happended लाल विस्मयबोधक चिह्न की सुविधा देता है कर रहे हैं, हरा ठीक है और आदि ..)।

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

प्रक्रिया बुनियादी फ़ोल्डर संगठन, रखा जाएगा क्या और कहाँ, कैसे और कब आप/चेकआउट और कोड किस तरीके से हो जाएंगे आप में डाल दिया जाएगा शामिल होंगे।

मेरी राय में वहाँ दो महत्वपूर्ण बातें यहां हैं:

  1. भंडार में कोड हमेशा सक्षम निर्माण किया जाना चाहिए, अन्य पुरुष समस्याओं

  2. हर कोई करने की जरूरत के बिना काम करने के लिए जारी रखने के लिए के लिए पता है कि क्या रखना है और कहां, उदाहरण के लिए

    1. स्थापित भंडार सर्वर (SVN, mercuiral आदि: एक फ़ोल्डर डेटाबेस के लिए अन्य स्रोत कोड के लिए चुना जाएगा, और आदि

    यहाँ एक सरल प्रक्रिया का एक उदाहरण है)। आपके लिए केवल एक ही अंतर उपकरण समर्थन है।

  3. एक आम भंडार संरचना पर सहमत (दस्तावेज, स्रोत, अतिरिक्त)
  4. प्रत्येक दिन की शुरुआत के अपडेट
  5. , अक्सर कमिट करने से पहले प्रत्येक भंडार
  6. से अद्यतन प्रतिबद्ध प्रत्येक दिन के अंत पर प्रतिबद्ध
0

यह एक बहुत ही सरल लेकिन महत्वपूर्ण सवाल है। यह एक स्रोत कोड संस्करण प्रश्न है। मेरा खुद का अनुभव मुझे मुख्यधारा के ड्रॉपबॉक्स और सह समाधान से बचने के लिए कहेंगे क्योंकि वे बहुत ही स्रोत-कोड अनुकूल नहीं हैं।

अपनी पोस्ट को देखते हुए आप चाहते हैं:

  1. आसान सेटअप के साथ सरल और
  2. का उपयोग कोड (ब्राउज़िंग और बदलाव)
  3. साझा करना देखकर जो संशोधन किया है क्या और कब

मैं गिट की सिफारिश करता हूं क्योंकि बेस टूल गिट और Github.com या Bitbucket.org दोनों के साथ तीनों के उत्तर।

सीवीएस और एसवीएन भारी हैं और गिथब या बिटबकेट जैसे बहुत सुविधाजनक वेब इंटरफ़ेस नहीं हैं। और भले ही मैं एक महान सीवीएस प्रशंसक था और एसवीएन में स्थानांतरित हो गया, मुझे यह स्वीकार करना होगा कि अब वे नए गिट और पसंद प्रणाली की तुलना में बहुत पुराने हैं।

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