एसवीएन सर्वोत्तम अभ्यास - एक टीम में काम करना


98

मैं एसवीएन के साथ शुरुआत कर रहा हूं। मैं मूल आदेशों को जानता हूं और आधार सिद्धांतों को समझता हूं। मैं सोच रहा था कि क्या किसी के पास टीम के माहौल में तोड़फोड़ के साथ काम करने के लिए कोई सुझाव या सर्वोत्तम अभ्यास है।

मैं कोड करते समय यथोचित क्रिया संदेश जोड़ने का लाभ देख सकता हूं, लेकिन क्या मुझे ध्यान में रखना चाहिए?

सभी महान उत्तरों के लिए धन्यवाद - उन्होंने बहुत मदद की है।

जवाबों:


76

बार-बार आने पर प्रोत्साहित करें। संस्करण नियंत्रण में टीम के साथी महसूस कर सकते हैं कि उन्हें कोड को "सही काम करने" तक भंडार से बाहर रखने की आवश्यकता है। जितनी जल्दी हो सके हर किसी को जल्दी और अक्सर कमिटमेंट सिखाना। जब तक यह काम नहीं करता, तब तक कोड रखने के बजाय, यह प्रस्ताव रखें कि आपके टीम के साथी सुविधा के लिए शाखाएँ बनाते हैं जो ट्रंक को तोड़ सकती हैं। यह होता है ...

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

ट्रंक के लिए एक नीति स्थापित करें और उससे चिपके रहें। एक उदाहरण हो सकता है, "ट्रंक को हमेशा त्रुटियों के बिना निर्माण करना चाहिए।" या "ट्रंक को हमेशा सभी यूनिट परीक्षणों को पास करना चाहिए"। कोई भी कार्य जो ट्रंक के मानकों को पूरा नहीं कर सकता है उसे एक शाखा में किया जाना चाहिए।


1
ब्रांचिंग और मर्जिंग एसवीएन में एक दर्द है। अन्य वीसीएस इसे बहुत बेहतर तरीके से संभालते हैं, लेकिन मैं एसवीएन के लिए शाखा-भारी प्रक्रिया की वकालत नहीं करूंगा।
२३:३६ बजे ब्रानन २१'०

7
@ब्रानन गलत। यह इसलिए है क्योंकि आप नहीं जानते कि स्रोत नियंत्रण का ठीक से उपयोग कैसे करें। जब आप शाखा करते हैं, तो आपसे अपेक्षा की जाती है कि आप अपनी नौकरी करने के लिए एक अच्छे देव के रूप में काम करें और अपनी शाखा को ट्रंक से अलग करें और ट्रंक से नवीनतम परिवर्तनों को अपनी शाखा DAILY या दिन में कई बार मर्ज करें (आपकी पसंद) ताकि अंत में आप न हों मर्ज नरक है कि ढेर हो गया है। मेरे पीसी पर स्थानीय रूप से हर समय कम से कम 4-5 शाखाएँ चल रही हैं और यह कभी भी इस बुरे लोगों की बात नहीं है क्योंकि मैं इसे सही कर रहा हूं ... इसे अक्सर अपडेट करता हूं ताकि मेरे पास ऐसे लोग हैं जो ट्रंक में जांच रहे हैं काम कर रहा है और कोड जोड़ रहा है
पॉजिटिव

66

कोड परिवर्तन के साथ स्वरूपण परिवर्तन न करें

यदि आप एक विशाल फ़ाइल का व्हाट्सएप ( Control+ K+ D), ठीक करना चाहते हैं। वास्तविक तार्किक परिवर्तन से अलग स्वरूपण परिवर्तन करें। यदि आप फ़ाइलों में फ़ंक्शन को स्थानांतरित करना चाहते हैं तो समान हो जाता है। वास्तविक संपादन से अलग चल रहा है।


2
इसलिए मैं पूरे दिन एक फ़ाइल को संपादित करता हूं, और अब इसे करने का समय है, मैं स्वरूपण को कैसे अलग करूं?
डस्टिन गेट्ज़

23
यदि आप मौजूदा कोड के साथ परिवर्तन स्वरूपण करने जा रहे हैं, तो इसे पहले करें, कमिट करें, फिर नया कोड जोड़ें / कोड को संपादित करें। या फिर पहले जोड़ें, संपादित करें, फिर प्रारूपण बदलें। इस तरह से ऐड / एड पर अंतर वास्तव में समझ में आता है और बस यह नहीं कहते हैं कि "अब सब कुछ अलग है!"
lc।

1
+1। बाहरी परिवर्तनों से उस प्रयास में वृद्धि होती है जो प्रासंगिक परिवर्तनों की समीक्षा के लिए होता है। इसके अलावा विलय / पोर्ट परिवर्तन (एक अलग शाखा) कहने के लिए कठिन हो जाता है।
एतेस गोरल

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

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

43

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


4
इसके लिए +1। ऐसा लगता है जब आप ऐसा कर रहे हों। जब आप पुराने कोड की समीक्षा कर रहे हों, तो परमाणु कमिट से भरा रेपो अनमोल होता है।
गॉर्डन विल्सन 19

2
यह नहीं है कि एक फीचर ब्रांच क्या है ... फीचर ब्रांच पर जितनी जरूरत हो उतने कमिट करें, फिर जब आप तैयार हों तो इसे ट्रंक में मर्ज करें ... रोलबैक का मतलब केवल मर्ज किए गए कमिट को हटाना है। संबंधित कोड को एक साथ रखने के लिए +1 ...
किसान

16

बहुत पहले ही उल्लेख किया गया है, और यहाँ कुछ और हैं:

  1. यदि आपके पास ऐसी फ़ाइलें हैं जो आप स्रोत नियंत्रण (जैसे कॉन्फ़िगरेशन, संकलित फ़ाइलें, आदि) में नहीं चाहते हैं, तो उन्हें अनदेखा सूची में जोड़ें । इस तरह से आप किसी भी फाइल को नोटिस करते हैं जिसे आप एसवीएन के रूप में अज्ञात दिखाने वाली फाइलों की एक खाली सूची की अपेक्षा करके जोड़ना भूल जाते हैं।

  2. एक पोस्ट प्रतिबद्ध घटना जोड़ें जो आपके डेवलपर को मेलिंग सूची (या इस लक्ष्य के लिए एक विशिष्ट) के लिए एक ईमेल भेजेगा जो प्रतिबद्ध परिवर्तन से संबंधित है और इसके लिए आदर्श रूप से पैच है।

  3. अपने बग ट्रैकर के साथ एकीकृत करें ताकि कमिट्स डिफरेंस लिंक के साथ बग्स / फीचर रिक्वेस्ट पर दिखें। मंटिसबीटी जैसे बग ट्रैकर इसका समर्थन करते हैं।

  4. निरंतर एकीकरण (जैसे क्रूज़कंट्रोल.नेट ), बिल्ड के लिए NAnt और यूनिट परीक्षणों के लिए NUnit / VS को एकीकृत करने पर विचार करें । इस तरह एक बार उपयोगकर्ता चेक-इन कोड या एक निर्धारित अंतराल पर कोड संकलित हो जाता है, इकाई परीक्षण चलाए जाते हैं, और डेवलपर को प्रक्रिया की प्रतिक्रिया मिलती है। अगर रिपॉजिटरी टूट जाती है (यानी निर्माण नहीं करता है) तो यह बाकी टीम को भी सचेत कर देगा।


हमारे द्वारा उपयोग की जाने वाली प्रैक्टिस यह है कि सभी कॉन्फिगरेशन फाइल्स में कॉन्फिगरेशन जैसे config.php.config या ऐसा कुछ बदल गया है कि हम अपनी कॉन्फिगर फाइल्स को सर्वर पर रखते हैं, लेकिन हर टीम मेंबर का अपना होता है। जब हम
कॉन्फिगर

15

खैर, मूल बातें:

  • किसी संस्करण पर QA शुरू करने से पहले टैग बनाएं
  • जोखिम भरे बदलावों से पहले टैग बनाएं (यानी बड़े रिफ्लेक्टर)
  • कोड को फ्रीज करने के लिए जारी किए गए संस्करणों के लिए शाखाएं बनाएं।
  • सुनिश्चित करें कि लोग कोड के एक टुकड़े पर काम शुरू करने से पहले अपडेट करना जानते हैं और इसे करने से पहले एक बार फिर अपडेट करें।
  • एसवीएन विभिन्न उपयोगकर्ताओं द्वारा एक ही फाइल के कई चेक आउट की अनुमति देता है। सुनिश्चित करें कि हर कोई किसी भी संघर्ष को हल करता है जो हो सकता है।
  • एक से अधिक उपयोगकर्ता के लिए कभी भी एक ही एसवीएन खाते का उपयोग करें। भयानक चीजों का परिणाम हो सकता है।

7
मैं अपनी शाखाओं और टैग के साथ विपरीत कार्य करता हूं। शाखाएं ट्रंक से कांटे के लिए होती हैं, जो अंततः ट्रंक के साथ विलय हो जाती हैं। टैग कोड फ्रीज के लिए हैं।
steve_c

1
शाखाएँ प्रतियां हैं जो बदल सकती हैं। टैग प्रतियां हैं जिन्हें बदलना नहीं चाहिए। svnbook.red-bean.com/en/1.2/svn.branchmerge.tags.html
matpie

मैं एक समान काम करता हूं। मैं टैग और शाखा जब मैं क्यूए या उत्पादन के लिए कोड जारी करता हूं। इस तरह हमारे पास एक रीड-ओनली मार्कर के साथ-साथ उस रिलीज़ के लिए बग फिक्स को संबोधित करने के लिए एक शाखा है जो नई सुविधा के विकास को प्रभावित नहीं करेगी जो ट्रंक पर हो सकती है।
जेम्सएगर्स

Svn एक ही उपयोगकर्ता के लिए एक ही फ़ोल्डर के कई चेकआउट की अनुमति देता है। इसलिए यदि आप पाते हैं कि आपको एक परिवर्तन करने की आवश्यकता है जो आपके वर्तमान कार्य से असंबंधित है (जैसे कि कुछ ग्राहक आपातकालीन फिक्स के लिए कॉल करते हैं या आप संयोग से पूरी तरह से असंबंधित बग पाते हैं) फिर से चेकआउट करें और इसे अलग से ठीक करें।
शाम

कोड टैग के लिए "टैग" का उपयोग किया जाना चाहिए। यदि आप "टैग" शाखा को बदलने की कोशिश करते हैं, तो आपका एसवीएन क्लाइंट आपको चेतावनी भी देता है।
दानीजेल

12

लोग जो जवाब दे रहे हैं वह बहुत अच्छा है। इसमें से अधिकांश SVN के लिए सर्वोत्तम प्रथाओं के लिए svn उपयोगकर्ता डॉक में संक्षेपित है ।
दोहराना:

  1. अपनी रिपॉजिटरी संरचना सेट करें (आपके पास ट्रंक, शाखाओं और नीचे टैग के साथ प्रोजेक्ट रूट होना चाहिए)
  2. अपनी नीति फिर से चुनें
  3. अपनी पॉलिसी को फिर से टैग करना चुनें - अधिक टैग बेहतर, लेकिन सबसे महत्वपूर्ण रूप से आपके टैग नामकरण सम्मेलनों पर निर्णय लेते हैं
  4. ट्रंक के लिए अपनी नीति को फिर से चुनें - ट्रंक को जितना संभव हो सके "साफ" रखें, इसे किसी भी समय रिलीज-सक्षम होना चाहिए

यह एक बहुत अच्छा पुराना अभ्यास है, इसलिए मुझे नहीं लगता कि CollabNet उन्हें किसी भी अधिक की सिफारिश करता है। क्या कोई नई सर्वोत्तम प्रथा उपलब्ध है? आपने जो उल्लेख किया है वह SVN 1.0
mliebelt

1
@mliebelt - मैंने अपाचे संस्करण का लिंक अपडेट किया। भले ही उम्र के बावजूद आपकी रेपो संरचना, आपकी शाखापूर्ण नीतियां, आपकी टैगिंग नीतियां और आपकी ट्रंक कमिटमेंट नीतियों के साथ-साथ ऊपर दिए गए अच्छे जवाबों को चुनने के विचार अभी भी स्पष्ट हैं।
२३:१५ बजे hromanko

यह "ब्रांच-जब-नीड्ड सिस्टम" विवरण हालांकि बहुत पागल है। एक कार्यालय की शूटिंग के लिए एक नुस्खा की तरह लगता है।
n

10

मैं उन सर्वोत्तम प्रथाओं को संक्षेप में बताना चाहूँगा जिनसे मैं चिपकता हूँ:

  1. बायनेरिज़ न करें । बायनेरिज़ के लिए अलग रिपॉजिटरी होनी चाहिए, जैसे कि नेक्सस , आइवी या आर्टिफैक्ट
  2. रिपॉजिटरी संरचना होनी चाहिए । व्यक्तिगत रूप से मैं निम्नलिखित भंडार संरचना का उपयोग करता हूं:

    /trunk
    /tags
        /builds
            /PA
            /A
            /B
        /releases
            /AR
            /BR
            /RC
            /ST
    /branches
        /experimental
        /maintenance
            /versions
            /platforms
        /releases
    
  3. शाखा प्रकारों की विशिष्ट सूची का उपयोग करें । मेरी सूची निम्न है: प्रयोगात्मक , रखरखाव , संस्करण , प्लेटफ़ॉर्म , रिलीज़
  4. विशिष्ट प्रकार के टैग का उपयोग करें : PA(पूर्व-अल्फा), A(अल्फा), B(बीटा), AR(अल्फा-रिलीज़), BR(बीटा-रिलीज़), RC(रिलीज़ उम्मीदवार), ST(स्थिर)।
  5. विलय की आवश्यकता को कम करना । जब विलय संभव हो / प्रोत्साहित किया जाए और जब ऐसा न हो तो नियम होने चाहिए।
  6. वर्जन नंबरिंग । छड़ी करने के लिए स्थापित संस्करण संख्या दृष्टिकोण होना चाहिए। आमतौर पर इस तरह के दस्तावेज़ में सॉफ़्टवेयर कॉन्फ़िगरेशन प्रबंधन योजना के रूप में वर्णित किया जाता है, यह उच्च-स्तरीय परियोजना प्रलेखन का एक हिस्सा है। व्यक्तिगत रूप से मैं जटिल संस्करण नंबरिंग दृष्टिकोण का उपयोग करता हूं। इस दृष्टिकोण के अनुसार, संस्करणों के निम्नलिखित पैटर्न हैं: एनएक्सएक्स (रखरखाव / समर्थन शाखाएं), एनएमएक्स (रिलीज शाखा), एनएक्सके (बिल्ड), एनएमके (रिलीज)।
  7. जहां तक ​​संभव हो कमिट करें । यदि यह मुश्किल हो जाता है (उदाहरण के लिए, जब सुविधा को लागू करने और यहां तक ​​कि कोड को संकलित करने के लिए बहुत सारे बदलाव होने चाहिए), तो प्रयोगात्मक शाखाओं का उपयोग किया जाना चाहिए।
  8. ट्रंक में नवीनतम विकास होना चाहिए । उदाहरण के लिए, जब कोई विकल्प होता है कि आवेदन के नए प्रमुख संस्करण ( एनएक्सएक्स ) को विकसित करने के लिए , ट्रंक या शाखा में, निर्णय हमेशा ट्रंक के पक्ष में किया जाना चाहिए । पुराने संस्करण को रखरखाव / सहायता शाखा में विभाजित किया जाना चाहिए । यह मानता है कि प्रमुख संस्करणों और उनकी बारीकियों (वास्तुकला, संगतता) के बीच एक स्पष्ट अंतर है जितनी जल्दी हो सके
  9. रिलीज शाखाओं पर सख्त 'बिल्ड टू ब्रेक' नीति नहीं है । इस बीच, यह जरूरी नहीं कि ट्रंक के लिए सख्त होना चाहिए क्योंकि इसमें या तो प्रायोगिक विकास हो सकता है या कोडबेस जिसे विलय के मुद्दों को हल करने की आवश्यकता है।
  10. Svn का उपयोग करें : बाहरी । यह आपकी परियोजना को संशोधित करने, पारदर्शी रिलीज प्रबंधन प्रक्रिया स्थापित करने, विभाजित करने और विभिन्न कार्यक्षमता पर विजय प्राप्त करने की अनुमति देगा।
  11. ट्रैकिंग का उपयोग करें । आप कमिट मैसेज के अंदर इश्यू रेफरेंस को इंगित कर पाएंगे।
  12. खाली प्रतिबद्ध संदेश अक्षम करें । यह पूर्व-प्रतिबद्ध हुक का उपयोग करके किया जा सकता है।
  13. परिभाषित करें कि आप किन शाखाओं को लगातार एकीकृत करना चाहते हैं । उदाहरण के लिए, मैं ट्रंक , रखरखाव और रिलीज शाखाओं के लिए निरंतर एकीकरण का उपयोग करना पसंद करता हूं ।
  14. विभिन्न प्रकार की शाखाओं के लिए निरंतर एकीकरण नीति स्थापित करें । जैसा कि मैंने पहले बताया, सबसे सख्त "बिल्ड न तोड़े" नियम रिलीज शाखाओं पर लागू होते हैं, जबकि ट्रंक और रखरखाव शाखाएं कभी-कभी टूट सकती हैं। इसके अलावा ट्रंक / रखरखाव और रिलीज शाखाओं पर चलने वाले निरीक्षणों की सूची के बीच अंतर है ।

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


तो, क्या आप टीम में काम करते हैं? क्या विभिन्न लोग विभिन्न शाखाओं का उपयोग करते हैं? संघर्ष से कैसे बचें? आप जवाब देते हैं कि टीम वर्क को कवर नहीं किया जाता है :(
DataGreed

2
प्रश्न: संघर्ष से कैसे बचें? A: विलय की आवश्यकता को कम से कम करना चाहिए , ट्रंक में नवीनतम विकास होना चाहिए , जितना संभव हो उतनी बार कमिट करें : क्या विभिन्न लोग विभिन्न शाखाओं का उपयोग करते हैं? एक: प्रत्येक शाखा का उपयोग एक या अधिक लोगों द्वारा किया जा सकता है। विभिन्न शाखाओं के प्रकारों के लिए भी यह महत्वपूर्ण है: प्रयोगात्मक, रखरखाव और रिलीज, यह संघर्षों से बचने में मदद करता है प्रश्न: आप जवाब देते हैं टीमवर्क ए को कवर नहीं करता है : यह पहली नज़र से लग सकता है। संस्करण नियंत्रण का उपयोग करने का अर्थ है टीम वर्क। मैंने नियमों के सेट (सड़क के नियमों के रूप में) का वर्णन किया जो कि और भी अधिक प्रभावी ढंग से सहयोग करने में मदद करते हैं
वैकल्पिक

7

एक चीज जो मुझे बहुत उपयोगी लगी है वह है svn: बाहरी संपत्ति जिसका अर्थ है कि आप अन्य रिपॉजिटरी से निर्देशिकाओं को अपने आप में संदर्भित कर सकते हैं। यह आपके कोड और डेटा को व्यवस्थित करने के बहुत अच्छे तरीके देता है। कुछ उदाहरण निम्न हैं:

  1. यदि आपके पास कोड के लिए अलग-अलग रिपॉजिटरी हैं तो विभिन्न मॉड्यूल / लाइब्रेरी और आपके द्वारा उपयोग किए जा रहे संदर्भ में। इसका मतलब है कि आपके पास प्रत्येक निष्पादन योग्य के लिए एक मेटा रिपॉजिटरी हो सकती है। यदि यह एक छोटा निष्पादन योग्य है जो केवल कुछ मॉड्यूल का उपयोग करता है, तो आपको पूरे पेड़ की जांच करने की आवश्यकता नहीं होगी। इसका एक प्रभाव यह है कि आपको प्रति मॉड्यूल एसवीएन संशोधन संख्या मिलती है।
  2. बड़ी संख्या में द्विआधारी डेटा जैसे पुस्तकालयों के संकलित संस्करणों को कोड रिपॉजिटरी में जोड़ना आमतौर पर एक बुरी आदत माना जाता है, लेकिन यह वास्तव में सुविधाजनक हो सकता है। यदि आप सिर्फ सभी पुस्तकालयों के सभी संस्करणों को जोड़ते हैं, तो आप एक अलग भंडार का उपयोग करते हैं जो आपको दो दुनियाओं में सर्वश्रेष्ठ मिल सकता है। आप अपने कोड रिपॉजिटरी में उपयोग किए जाने वाले पुस्तकालयों के संस्करणों में संदर्भ देते हैं। अपने कोड भंडार की जाँच करते समय आपको कोड और बायनेरिज़ दोनों मिल जाएंगे। हालाँकि बायनेरिज़ एक बड़े भंडार में संग्रहीत किए जाते हैं जिन्हें आपको अपने स्रोत कोड के रूप में कठोरता से बैकअप लेने की आवश्यकता नहीं होती है और स्रोत कोड रिपॉजिटरी छोटा रहता है और इसमें केवल पाठ होता है।

1
मुझे बिंदु 2 पसंद है। चूँकि आप svn का उपयोग करते समय कोई संशोधन संख्या निर्दिष्ट कर सकते हैं या नहीं: बाहरी, यह आपको विशिष्ट संस्करणों में कुछ पुस्तकालयों को "पिन" करने देगा जबकि अन्य को नवीनतम संस्करण को "ट्रैक" करने की अनुमति देगा।
j_random_hacker 2

"Svn: external" का उपयोग करना सबसे शक्तिशाली में से एक है, और मैं SVN की सबसे बुनियादी विशेषताओं को कहूंगा। यह बहुत जरूरी है।
डेनियल

5

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


Trac बग ट्रैकिंग के लिए अच्छा svn एकीकरण है, प्लस समयरेखा, प्रतिबद्ध diffs, विकी, आदि
डग करी

जीरा भी मुद्दों से संबंधित काम करता है
डैन साबुन

4

SVN की ब्रांचिंग और मर्जिंग टूल्स और कन्वेंशन के बारे में जानें।

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

इस तरह से व्यक्ति अन्य परिवर्तनों से टकराए बिना एक सामान्य लक्ष्य (एक ही शाखा या अलग शाखाओं पर) की ओर काम कर सकते हैं।

आपका लाभ भिन्न हो सकता है, और यह केवल दो या दो से अधिक लोगों के लिए ओवरकिल हो सकता है।


3

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

मैं कछुआ SVN (यदि आप Windows का उपयोग कर रहे हैं) और विज़ुअल SVN (यदि आप VS का उपयोग कर रहे हैं ) की सलाह देते हैं।

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


3

ब्रांचिंग नीतियों के अलावा एट अल। (जहां एक आकार निश्चित रूप से सभी के लिए उपयुक्त नहीं है), आपके पास अच्छे तरीके होने चाहिए:

  • यदि संभव हो तो काम के एक टुकड़े से संबंधित होना चाहिए ; बग फिक्स, एक नई सुविधा- आपके द्वारा किए गए परिवर्तनों में कुछ 'तर्क' होने चाहिए
  • कमिट में एक वर्णनात्मक टिप्पणी होनी चाहिए जो आपको रिपॉजिटरी इतिहास ब्राउज़ करने में मदद करेगी। अधिकांश लोग शुरुआत में एक ही वाक्य लिखने का सुझाव देते हैं जो पूरी प्रतिबद्धता और नीचे एक अधिक विस्तृत खाते का वर्णन करता है
  • यदि संभव हो तो, यदि संभव हो तो आपको अपने बग-ट्रैकिंग सिस्टम के लिए प्रतिबद्ध करना चाहिए। Trac, Redmine et al। आइए आपको बग्स से कमिट्स तक लिंक बनाते हैं और इसके विपरीत, जो बहुत काम आता है।

3

स्रोत नियंत्रण के लिए सुनहरा नियम: चेक इन अर्ली, चेक इन अक्सर

सुझावों के लिए कि कैसे अपने भंडार को व्यवस्थित करें:


2

अपनी टीम के साथ उनके परिवर्तनों के बारे में परामर्श करें, या किसी भी मर्ज संघर्ष को ठीक करने से पहले, कम से कम बहुत सावधानी से अंतर देखें। उन्हें मर्ज किए गए कोड की समीक्षा करने के लिए कहें, यह सुनिश्चित करने के लिए कि मर्ज में उनके अतिरिक्त नहीं खोए गए थे।


2

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


पूर्व-प्रतिबद्ध स्क्रिप्ट के लिए +1। महान विचार। अगर आप इसे चलाने के बिना कमिट करने की कोशिश करते हैं तो मुझे आश्चर्य है कि क्या आपको हाथ में स्मैक देने का कोई तरीका है?
naught101

2

बग-ट्रैकर और प्रतिबद्ध नीति लागू करने के साथ एकीकरण के उदाहरणों में से एक है Trac की svn प्री / पोस्ट-कमिट हुक स्क्रिप्ट, जो प्रतिबद्ध संदेश बग-ट्रैकर में किसी भी टिकट का संदर्भ नहीं देता है और वर्तमान में टिप्पणी जोड़ने के लिए मना कर सकता है संदेश सामग्री पर आधारित टिकट (यानी प्रतिबद्ध संदेश में "फिक्स # 1, # 2 और # 8" कुछ हो सकता है, जहां # 1, # 2, # 8 टिकट नंबर हैं)।


2

SVN का उपयोग करने के लिए सबसे अच्छा अभ्यास :

  1. जब आप पहली बार कार्यालय में आए और अपना ग्रहण प्रोजेक्ट खोला , तो पहला कदम यह है कि आप अपनी परियोजना को अपडेट करें।

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

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

  1. संघर्ष फ़ाइलों को सीधे अपडेट / अपडेट न करें।

  2. ओवरराइड और अपडेट कब करें?

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

    नोट: प्रोजेक्ट को एक दिन से अधिक समय तक अपडेट किए बिना न रखें। साथ ही कई दिनों तक बिना कमिटमेंट के कोड न रखें।

  3. संवाद करें जो सभी एक ही घटक में काम कर रहे हैं और चर्चा करते हैं कि उन्होंने हर दिन क्या बदलाव किए हैं।

  4. जब तक कोई कारण न हो, तब तक संपत्तियों और कॉन्फ़िगरेशन फ़ाइल को कमिट न करें। क्योंकि सेटिंग्स एक सर्वर पर और क्लाउड में अलग-अलग होंगी।

  5. एसवीएन में लक्ष्य फ़ोल्डर न करें, केवल स्रोत कोड और संसाधन फ़ोल्डर को एसवीएन रिपॉजिटरी में बनाए रखना होगा।

  6. जब आप अपना कोड खो देते हैं, तो घबराएं नहीं! आप SVN इतिहास से पहले की कॉपी वापस पा सकते हैं।

  7. प्रोजेक्ट को अपनी डिस्क के कई स्थानों पर चेकआउट न करें। इसे एक स्थान पर चेकआउट करें और इसके साथ काम करें।



1

SVN अपने आप में एक अच्छी शुरुआत है और कुछ अन्य पोस्टरों ने सर्वोत्तम प्रथाओं पर कुछ बेहतरीन सुझाव दिए हैं।

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

यह बहुत जल्दी बताएगा कि आपकी प्रक्रिया निम्नलिखित है और कौन नहीं। कुछ घर्षण पैदा हो सकता है लेकिन आपकी टीम लंबे समय में बेहतर होगी।


1
सहमत, क्रूज़कंट्रोल ने मेरी टीम को कई बार बचाया है।
गॉर्डन विल्सन

1
  • हर कमेंट के लिए सटीक कमेंट करें

  • (मेनलाइन) का निर्माण न करें!

  • जैसे ही तार्किक इकाई बदलती है, प्रतिबद्ध करें

  • बैकअप उपकरण के रूप में तोड़फोड़ का उपयोग करने से बचें

  • संभव के रूप में एक छोटी शाखा / विलय

अधिक विवरण एसवीएन सर्वोत्तम प्रथाओं में पाए जा सकते हैं ।


0

डीईवी शाखाओं पर काम करते हैं

  1. बार-बार अपनी शाखा में आता है
  2. असतत / मॉड्यूलर आपकी शाखा में आता है ( यहां देखें )
  3. अपडेट / मर्ज-ट्रंक से अक्सर। फिर से आधार के बिना अपनी शाखा पर मत बैठो

सामुदायिक ट्रंक

  1. हमेशा निर्माण / कार्य करना चाहिए
  2. प्रति मुद्दा एक मुद्दा ( फिर से यहाँ देखें ) ज्यादातर तो आप या अन्य लोग एक समय में चीजों को वापस कर सकते हैं
  3. मत conflate रिफैक्टरिंग / खाली स्थान के तार्किक परिवर्तन के साथ बदल जाता है। आपके साथियों को एक कठिन समय निकालने में मदद मिलेगी जो आपने वास्तव में एक कमिट से किया था

याद रखें कि जितना अधिक वृद्धिशील, मॉड्यूलर, असतत और रसीला आप अपना कमिटमेंट करते हैं, उतना ही आपके लिए (या दूसरों के लिए) आसान होगा:

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

0

टिप्पणी टेम्पलेट के लिए इसका उपयोग करें:

[कार्य / कहानी xxx] [मामूली / प्रमुख] [टिप्पणी] [टिप्पणी का पालन करें] [बग के लिए URL]

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.