मेरे पास, अतीत में, मेरे स्रोत दस्तावेजों को संग्रहीत करने के लिए सबवर्सन रिपॉजिटरी का इस्तेमाल किया, और रिपॉजिटरी संगठन के लिए "प्रोजेक्ट-माइनर" सम्मेलन का पालन किया, जो मुझे बड़े और छोटे दोनों संगठनों के लिए बहुत अच्छा काम करने के लिए मिला है।
हम अपनी रिपॉजिटरी शाखाओं की संरचना करेंगे; टैग और ट्रंक निम्नानुसार हैं:
branches-+
+-personal-+
| +-alice-+
| | +-shinyNewFeature
| | +-AUTOMATED-+
| | +-shinyNewFeature
| +-bob-+
| +-AUTOMATED-+
| +-bespokeCustomerProject
+-project-+
+-shinyNewFeature
+-fixStinkyBug
tags-+
+-m20110401_releaseCandidate_0_1
+-m20110505_release_0_1
+-m20110602_milestone
trunk
वास्तविक स्रोत वृक्ष के भीतर, हम निम्नलिखित संरचना का उपयोग करेंगे (जैसे कुछ):
(src)-+
+-developmentAutomation-+
| +-testAutomation
| +-deploymentAutomation
| +-docGeneration
| +-staticAnalysis
| +-systemTest
| +-performanceMeasurement
| +-configurationManagement
| +-utilities
+-libraries-+
| +-log-+
| | +-build
| | +-doc
| | +-test
| +-statistics-+
| | +-build
| | +-doc
| | +-test
| +-charting-+
| | +-build
| | +-doc
| | +-test
| +-distributedComputing-+
| | +-build
| | +-doc
| | +-test
| +-widgets-+
| +-build
| +-doc
| +-test
+-productLines-+
| +-flagshipProduct-+
| | +-coolFeature
| | +-anotherCoolFeature
| | +-build
| | +-doc
| | +-test
| +-coolNewProduct-+
| +-build
| +-doc
| +-test
+-project-+
+-bigImportantCustomer-+
| +-bespokeProjectOne
| +-bespokeProjectTwo
+-anotherImportantCustomer-+
+-anotherBespokeProject
इंजीनियरिंग टीम के बीच संरचना संचार में मदद करने के लिए रिपॉजिटरी की संरचना का उपयोग करने के लिए यह विचार (और अभी भी है) था; व्यवसाय का ग्राहक-सामना करने वाला हिस्सा और विभिन्न अन्य हितधारक और डोमेन विशेषज्ञ।
बुद्धि के लिए: "प्रोजेक्ट" निर्देशिकाओं में से एक में बैठने वाले स्रोत दस्तावेज केवल एक बार उपयोग किए जाते हैं (और पैसा कमाते हैं)। "प्रोडक्टलाइन" निर्देशिकाओं में से एक में बैठने वाले दस्तावेज़ पैसे कमाते हैं जितनी बार उस विशेष लाइन से उत्पाद बेचा जाता है। दस्तावेज़ जो "पुस्तकालयों" निर्देशिकाओं में से एक में बैठते हैं, वे कई बार पैसा कमाते हैं जितना कि उन उत्पादों में से कोई भी होता है जो उन्हें बेच देते हैं।
यह लागतों के परिशोधन की धारणा को स्पष्ट करता है, और व्यापार में स्रोत दस्तावेज़ पुन: उपयोग के लिए समर्थन बनाने में मदद करता है।
एक आदर्श दुनिया में, व्यवसाय का सामना करने वाला ग्राहक इस संरचना का उपयोग प्रस्तुतियों और अन्य बिक्री संपार्श्विक को स्टोर करने के लिए भी करेगा, इसलिए डेवलपर्स यह देख सकते हैं कि ग्राहकों की अपेक्षाएं क्या बनाई गई हैं, संबंधित उत्पाद निर्देशिका के साथ-साथ, और ग्राहक का सामना करने वाले सहकर्मी विकास को ट्रैक कर सकते हैं उन विशेषताओं और उत्पादों पर प्रगति जो वे बेच रहे हैं।
इसका मतलब यह भी है कि एक सामान्य संरचना है, जिस पर हमारे निर्माण स्वचालन उपकरण काम कर सकते हैं। (हमारी बिल्ड स्क्रिप्ट्स स्रोत ट्री को "बिल्ड" फ़ोल्डरों की तलाश में चलती हैं, जिसके भीतर वे कॉन्फ़िगरेशन फ़ाइलों को निर्दिष्ट करते हैं कि प्रत्येक घटक का निर्माण कैसे किया जाता है; प्रलेखन पीढ़ी और परीक्षण के लिए एक समान प्रक्रिया होती है)। फिर से, एक आदर्श दुनिया में, संगठन की वेबसाइट और अन्य विपणन संपार्श्विक को उसी तरह बनाया जा सकता है।
एक अंतिम नोट के रूप में; निरंतर एकीकरण प्रणाली को पता है कि इसे एक बिल्ड को ट्रिगर करने की आवश्यकता है; स्थिर विश्लेषण; हर बार ट्रंक को संशोधित करने के लिए हर बार ट्रंक को संशोधित किया जाता है, और हर बार किसी भी "टैग" शाखा को संशोधित किया जाता है। इस तरह, व्यक्तिगत डेवलपर्स अपनी व्यक्तिगत शाखाओं, एक महत्वपूर्ण क्षमता, IMHO के साथ CI सिस्टम का उपयोग कर सकते हैं।