CI için bir CruiseControl.Net/NAnt/Subversion yığını kullanıyoruz. Her yapı için yeni bir ödeme yapmak çok zaman alıcıdır, bu nedenle şu anda sadece çalışan bir kopya üzerinde bir güncelleme yapıyoruz. Ancak, bu, yetkisiz dosyaların, kaynak denetimde sildikten sonra çalışan kopyada kalabileceği olasılığını ortadan kaldırır. NAnt silme görevini, tüm kod kaynağı dosyalarını bir güncelleme öncesinde kaldırmak için kullanmayı denedik, ancak bu çalışma kopyasını bozabilir. Temiz ve güncel bir çalışma kopyasında bir yapı oluşturmanın hızlı bir yolu bilen var mı? DÜZENLEME: Üzerinde SVN 1.3.2 varTemiz sürekli bir entegrasyon oluşturur
cevap
Sadece 'update' yaparsanız, SVN, kaynak denetiminde silinmiş olan tüm dosyaları siler. Ancak, oluşturma işlemi sırasında oluşturulan dosyalar hala var olabilir ve yeni yapıya müdahale edebilir. SVN'nin onları silmek için bir komutu olup olmadığından emin değilim ama sanırım bunu küçük bir senaryoya göre yapabiliyorsunuz, SVN kesinlikle hangi dosyaların kaynak kontrolü altında olduğunu ve hangilerinin olmadığını söylüyor.
Eğer çalışma kopyanızda bir svn güncellemesi yapıldıysa artık dosya kaldıysa, Subversion sürümünüzde bir hata var demektir.
Günlük bir tam derleme yapabilir ve yapıyı olduğu gibi check-in'de bırakabilirsiniz. Ayrıca, dağıtım için, her zaman temiz bir tam oluşturma kullanmak iyi bir fikirdir.
Düşünebilmemin tek yolu, yapı sunucusunda iki kopyaya sahip olmak. İlk önce ilk konumda güncelleyin. İkinci konumu silersiniz. İlk önce ikinci kopyalayın ve ardından ikinci konumda oluşturun. Böylece her zaman temiz bir yapıdan başlıyorsunuz.
Ödeme nedeninizin bu kadar uzun sürdüğünü öğrenmek isteyebilirsiniz. Aynı işlemci gövdesini kullandım ve bununla hiç problem yaşamadım. Subversion genellikle yapının kendisinden daha az zaman aldı.
CC uygulamamızla benzer bir sorun yaşadık.
Çözümümüz ... Temel ünite testlerine ek olarak, daha uzun çalışma entegrasyon testleri yürüten, gece saat 3:00 bir gece inşa etmiştik. Sadece 3: 00'da taze bir ağaç üzerinde tamamen temiz bir yapı inşa etmeye karar verdik. Gecenin ortasında olduğu gibi, nadiren kimseyi etkiledi. Diğer tüm "normal" check-in'ler artımlı oluşturur.