Obecnie używamy Subversion i TeamCity, zamierzamy przejść do używania Mercurial (szczególnie Kiln, ponieważ jesteśmy użytkownikami FogBugz).
Oczywiście spowoduje to zmiany - miejmy nadzieję ulepszeń - w naszych wzorcach programistycznych (wszyscy dwoje!), Ale jedyną kwestią, z którą walczę, jest to, jak ustrukturyzować rzeczy, abyśmy nadal cieszyli się korzyściami płynącymi z ciągłej integracji / naszego serwera CI ( że korzyści są i pozostaną, jest rzeczą oczywistą, której omówienie nie wchodzi w zakres tego pytania).
Dzięki SVN zobowiązujemy się do ograniczonej liczby centralnych repozytoriów - efektywnie po jednym na projekt (mniej więcej jedno rozwiązanie Visual Studio), więc łatwo jest uruchomić kompilację i uzyskać pewność, że wszystkie pliki zostały zatwierdzone i że nie ma zbłąkane zależności itp. Ale jeśli chcemy odpowiednio wykorzystać merkurial, będziemy chcieli mieć więcej instancji repozytorium - w których spodziewam się, że zmiany zasadniczo popłyną w kierunku ostatecznego repozytorium „na żywo”. Problem, z którym się zmagam, polega na tym, że repozytorium na żywo wydaje mi się zbyt „spóźnione”, aby uruchomić moje kompilacje CI OTOH jedna kompilacja CI na projekt na programistę jest prawdopodobnie nadmierna (i powoduje inne problemy).
Trochę łowię, ale to dlatego, że jedną z rzeczy, które daje centralne repozytorium subversion (ja, z naszą konfiguracją!) Jest duża jasność co do tego, co zbudować.
nb Nie pytam o mechanikę używania rtęci z ciągłą integracją - mam tę pracę przy osobistym projekcie, jej wzorce i struktury oraz praktykę / przepływ pracy, które staram się wywrócić.