2011-12-07 10 views
11

Zastanawiam się, jaki jest najlepszy sposób na utrzymanie zależności binarnych w sposób "przyjazny dla zespołu".Jaki jest Twój sposób utrzymywania zależności binarnych w systemie kontroli wersji?

Mamy wiele zależności dla aplikacji wieloplatformowych. Obejmuje to bibliotekę komercyjną w wersjach 32/64 * linux/windows/mac i kilka bibliotek open source skompilowanych w niestandardowe, nie tak trywialne, aby odtwarzać środowiska. Ponadto mamy zasoby graficzne, które czasami są duże (250 MB jest dość powszechne).

Biblioteki należy aktualizować, czasami rekompilować itd. Aktualizacje są również aktualizowane, a my musimy je zsynchronizować z kodem.

Chcę osiągnąć coś zbliżonego do systemu aktualizacji i budowania po kliknięciu.

Próbowałem zachować wszystko w SVN, ale prowadzi to do długich aktualizacji, nawet jeśli dane nie zostały zmodyfikowane.

Teraz myślę o systemie skryptowym, który pobiera i rozpakowuje skompresowane pliki z bibliotekami i zasobami, tylko w razie potrzeby, jako wydarzenie kompilacji. Skrypty będą wersjonowane, data nie.

Ale może jest gotowe rozwiązanie? Czy masz z tym jakieś doświadczenie?

+2

Czy sprawdziłeś wykorzystanie repozytorium artefaktów, na przykład [Artifactory] (http://www.jfrog.com/products.php) lub [Nexus] (http://nexus.sonatype.org/)? – atodd

Odpowiedz

2

Submodules doskonale się do tego nadają. W jednym projekcie miałem kod aplikacji hostowanej prywatnie w serwisie unfuddle.com i wszystkich bibliotek DLL itp. (Duże rzeczy), które i tak były w domenie publicznej, były przechowywane w github. Skończyło się na tym, że używaliśmy bardzo mało naszego prywatnego magazynu.

3

Przy użyciu Mercurial 2.0 można używać largefiles extension do zarządzania takimi plikami. Będą przechowywane poza normalną historią i pobierane na żądanie. Rozszerzenie ma jeszcze ostre krawędzie, więc upewnij się, że używasz przynajmniej wersji 2.0.1.

Powiedziawszy to, wolę używać do tego celu dedykowanego narzędzia - ponieważ zarządzanie optyką jest najlepiej wykonywane poza systemem kontroli źródła.

Powiązane problemy