Geçmişte, kaynak belgelerimi saklamak için Subversion depolarını kullandım ve hem büyük hem de küçük kuruluşlar için çok iyi çalıştığını bulduğum depo organizasyonu için "proje-küçük" sözleşmesini izledim.
Depo şubelerimizi yapılandıracağız; etiketler ve gövde aşağıdaki gibi:
branches-+
+-personal-+
| +-alice-+
| | +-shinyNewFeature
| | +-AUTOMATED-+
| | +-shinyNewFeature
| +-bob-+
| +-AUTOMATED-+
| +-bespokeCustomerProject
+-project-+
+-shinyNewFeature
+-fixStinkyBug
tags-+
+-m20110401_releaseCandidate_0_1
+-m20110505_release_0_1
+-m20110602_milestone
trunk
Gerçek kaynak ağacın içinde, aşağıdaki yapıyı kullanırdık (şöyle bir şey):
(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
Fikir, mühendislik ekibi arasındaki iletişimin yapılandırılmasına yardımcı olmak için havuzun yapısını kullanmaktı (ve hala da); işletmenin müşteriye dönük kısmı ve diğer çeşitli paydaşlar ve alan uzmanları.
Görmek için: "Proje" dizinlerinden birinde yer alan kaynak belgeler sadece bir kez kullanılır (ve para kazanır). "ProductLines" dizinlerinden birinde yer alan dokümanlar, söz konusu satırdaki bir ürünün satıldığı kadar para kazanır. "Kütüphaneler" dizinlerinden birinde yer alan dokümanlar, bunları kullanan ürünlerin satıldığı kadar çok para kazanır.
Maliyetlerin amortisman kavramını açık hale getirir ve işletme genelinde kaynak belgenin yeniden kullanımı için destek oluşturulmasına yardımcı olur.
İdeal bir dünyada, işin bir parçası olan müşteri, sunumları ve diğer satış teminatlarını saklamak için bu yapıyı da kullanır, böylece geliştiriciler, ilgili ürün dizininin yanı sıra hangi müşteri beklentilerinin yaratıldığını görebilir ve müşteriyle karşı karşıya olan meslektaşları gelişimi izleyebilir sattıkları özellik ve ürünlerde ilerleme.
Ayrıca, yapı otomasyon araçlarımızın üzerinde çalışabileceği ortak bir yapı olduğu anlamına gelir. (Derleme komut dosyalarımız, her bir bileşenin nasıl oluşturulacağını belirten yapılandırma dosyalarını buldukları "derleme" klasörlerini arayan kaynak ağacında yürür; belge oluşturma ve test için de benzer bir işlem gerçekleşir). Yine, ideal bir dünyada, kuruluşun web sitesi ve diğer pazarlama teminatları aynı şekilde oluşturulabilir.
Son bir not olarak; sürekli entegrasyon sistemi bir yapıyı tetiklemesi gerektiğini bilir; statik analiz; duman testi ve birim test çalıştırması her gövde değişikliğinde, her "etiket" dalı her değiştiğinde ve her "OTOMATİK" dal dalı her değiştirildiğinde. Bu şekilde, bireysel geliştiriciler CI sistemini kendi kişisel şubeleri olan önemli bir yetenek olan IMHO ile kullanabilirler.