Ben gerçekten-gerçekten-gerçekten bunu yapmak için bir DVCS'ye (örneğin, mercurial, git) ihtiyacınız olacağını düşünüyorum. Bir CVCS ile bir şubeye ihtiyaç duyarsınız ve ne tanrınız olursa olsun birleşme cehennemi yoktur.
Bir DVCS kullanıyorsanız entegrasyon işlemini, kodun CI sunucusuna ulaşmadan önce gözden geçirmesini sağlayacak şekilde sıralayabilirsiniz. Bir DVCS'niz yoksa, kod her gözden geçiricinin değişikliklerini göndermeden önce her geliştiricinin makinesindeki kodu incelemediği sürece, kod gözden geçirilmeden önce CI sunucunuza ulaşacaktır.
Bunu yapmanın ilk yolu, özellikle kişisel depoları (örneğin bitbucket, github, rhodecode) yayınlamaya yardımcı olacak depo yönetim yazılımınız yoksa, hiyerarşik entegrasyon rollerine sahip olmaktır. Aşağıdaki diyagramlarda, teğmenlerin geliştiricilerin çalışmalarını gözden geçirmesini ve teğmenlerin çalışmayı nasıl birleştirdiğini inceleyen diktatöre sahip olmanız gerekebilir.
Depo yönetimi yazılımınız varsa, bunu yapmanın başka bir yolu da aşağıdaki gibi bir iş akışı kullanmaktır:
Havuz yönetimi yazılımı, genellikle depolarda aktivite olduğu zaman (örn. E-posta, RSS) ve çekme isteklerine izin verdiğinde bildirim yayınlamaya yardımcı olur . Kod incelemesi, çekme istekleri sırasında organik olarak gerçekleşebilir, çünkü çekme istekleri tipik olarak kodları entegre etmek için kişilerin konuşmalarına katılmasını sağlar. Al bu kamu çekme isteğini örnek olarak. Entegrasyon Yöneticisi aslında kod ihtiyaçları düzeltilmesi eğer kod mübarek deposundan (aka "Merkez depo") ulaşmasına izin olamaz.
En önemlisi, bir DVCS ile hala merkezi bir iş akışını destekleyebilirsiniz, istemiyorsanız başka bir harika harika iş akışınız olması gerekmez ... ancak bir DVCS ile merkezi bir geliştirme deposunu CI'den ayırabilirsiniz. Sunucuya ve bir kod inceleme oturumu yapıldıktan sonra bir başkasına dev repo'dan CI repo'ya değişiklikleri itme yetkisi verin .
Not: Resimler için kredi git-scm.com adresine gidin.