24 saat şirketim için sürüm kontrolü için bir strateji geliştirmeye çalışacağım; şu anda SVN kullanıyoruz ama bunun bir yapısı yok - temelde sadece bir bagajımız var ve sadece buna bağlıyız. Son zamanlarda geliştirme yöneticisi, "etiketimiz" olarak işlev gören ikinci bir deposu başlattı, ancak aynı deponun bir parçası değil, tamamen ayrı bir havuz olduğu için "gövde" ile manuel olarak birleştirilmesi gerekiyor. Aslında, "Dev" (yalnızca farklı klasörlerde farklı "Dev" klasörleri var ama sadece "Dev" ana klasör) olarak adlandırılan tek bir klasör var ve bunun altında her şey var; diğer tüm projeler. Proje tarafından organize edilmemiştir, şube / etiket / gövde veya herhangi bir şey kavramı yoktur. Başlangıçta kuran kişi (çoktan gitti, Elbette) SVN'yi nasıl kuracağınızı bilmiyor gibiydi ve o zamandan beri kimse bir şeyleri kırma korkusu için işleri düzgün bir şekilde nasıl yapacağını öğrenmekle uğraşmadı. Herhangi bir CI (veya maalesef otomatik test) kullanmıyoruz.
İlk olarak, projeyle ayrılmalı mıyız? Örneğin: İki ASP.NET web sitesi (Web Uygulamaları değil, Web Siteleri değil), bir Web Hizmeti, tüm tablo komut dosyaları ve depolanmış yordamlar için bir dağıtım klasörü, harici projeler için çağrılan iki komut satırı istemcisi Web Siteleri ve ortak iş nesneleri ve benzerlerine sahip paylaşılan bir klasör. Bunların her biri bir şube / etiket / gövde kurulumuna sahip kendi projesi mi yoksa şu şekilde mi olmalı:
dev/
branches/
tags/
trunk/
Site1/
Site2/
WebService/
SharedCode/
ve tüm şubeler ve her şey Dev klasörünün bir kopyasına sahip mi? Bu yaklaşımın yutulması daha kolay olabilir, çünkü genellikle paylaşılan kod kütüphanesinde ve web sitelerinden en az birinde (genellikle ikisi de) değişiklikler yapmamız gereken durumlar vardır.
İkincisi, dev sunucumuza ve canlı sunucumuza düzenli olarak yayınlar yapıyoruz. Bunu ele almanın en iyi yolunu okuduğumdan, tüm gelişimin gövdeye girmesi / dalların "geçici" olması ve gövdeyi etkileyebilecek yeni bir özellik eklemek için kullanılması ve etiketler bültenler için mi? Diyelim ki her ay itiyoruz ve yepyeni bir modül üzerinde çalışıyorum. Ben şube şube ve kodumu yazmak ve test etmek ve ne olursa olsun bu dalı kullanın. Modül bittiğinde, onu tekrar gövdeye birleştiririm (ve belki şubeyi silebilirim) ve konuşlandırmaya hazır olduğumuzda etiketleyeceğiz ("May2011" diyelim). Yayına girdikten sonra bir hata düzeltmemiz varsa, May2011 etiketinde düzeltilip gövdeye birleştirilir (böylece gövde de düzeltmeyi alır), ve Mayıs2011 düzeltmeyle tekrar dışarı itilecekti? Bu etiketleme niyeti midir?