2011-08-16 26 views
8

Nasz zespół jest obecnie w trakcie przeprowadzki z SVN do Git. Obecnie używamy Maven jako naszego narzędzia do budowania.Organizacja projektu za pomocą Maven + Git

Obecnie nasze projekty mają hierarchię kompilacji za pośrednictwem Maven, ale są płaskie w hierarchii plików/repozytorium. Moim celem jest ściślejsze dopasowanie hierarchii budowania Mavena i hierarchii struktury plików w naszych repozytoriach, aby wszystko było łatwiejsze do zrozumienia.

Moje pytanie brzmi, jaki jest właściwy poziom tworzenia repozytoriów Git, aby utrzymać hierarchię plików/organizację? Przykład:

  • Big Project - (bez źródło tutaj, po prostu pom)
    • Backend projektu (źródło + pom)
    • Klienci (brak źródło tutaj, po prostu pom)
      • Konsola (źródło + pom)
      • Web (źródło + pom)

więc "tylko pom" projekt będzie używany do rzeczywistych projektów źródłowych grupowych. Ale gdzie jest repozytorium Git? Niektórzy członkowie zespołu są zaniepokojeni, że zobowiązuje się do projektu Web nie należą do historii projektu Console. Ale jeśli repozytorium Git znajduje się na najniższym poziomie (węzły liści drzewa), tracimy strukturę struktury plików (nawet jeśli hierarchia kompilacji może być utrzymana w Maven).

Edytuj: Obawy członków zespołu to nie tyle historia commitów, co tagowanie. Biorąc pod uwagę, że korzeń repo Git jest na duży projekt, i chcę, aby oznaczyć ten projekt Web (przez tagowanie duży projekt), dlaczego, że tag obejmują Konsola projekt , które być może nie w istotny do tagu Web?

+0

Jak sobie z tym poradziłeś w SVN? Zakładam, że masz strukturę podobną do opisanej. Prosto sprawdziłeś projekt Big-All, a wszystko inne pojawi się na dysku twardym ... więc dlaczego miałbyś to zmienić? – khmarbaise

Odpowiedz

5

Mam projekt maven składający się z ponad 60 modułów, a mój zespół omówił to samo pytanie, gdzie dokładnie powinny znajdować się repozytorium git. Do tej pory każda dyskusja zakończyła się odejściem całego projektu, aż do głównego pom, w tym samym projekcie. Decyzja opiera się głównie na udogodnieniach dla programistów - nie musimy klonować i otwierać wielu różnych repozytoriów, aby działać w zasadniczo tym samym projekcie. Kwestia historii wydaje mi się nieprawdziwa. Kogo obchodzi historia historii? Zawsze możesz zobaczyć historię danego pliku/modułu/ścieżki w git, z wyłączeniem innych.

Opcja, którą rozważaliśmy to coś, co nazywa się git submodules, co umożliwia osadzanie repozytoriów w repozytoriach. Może to być opcja do porządkowania hierarchii, jeśli zdecydujesz się ją zlikwidować.

+0

+1 dla pojedynczego projektu. W przeciwieństwie do Subversion i innych, starych narzędzi, nie jest to wąskie gardło. –

+0

Z jakich narzędzi korzystasz? Mam podobną konfigurację, z 20 rzeczowymi modułami w jednym repozytorium git, zawierającym ± 800000 linii kodu. Mam poważne problemy z wydajnością w Eclipse, używając Egita z powodu ciągłego ponownego indeksowania ... – verhage

+0

Używamy IntelliJ, która radzi sobie z tym całkiem dobrze, zwłaszcza od wersji 12, ale w ciągu 1,5 roku od tego pytania przestawiliśmy się na przestawianie modułów jako własne projekty, żyjące we własnych repozytoriach, częściowo w celu uniknięcia problemów z wydajnością IDE. Takie podejście wprowadza własny zestaw problemów, ale ma również inne zalety. –

0

Proponuję pozostawić strukturę w Git tak samo jak w SVN, co oznacza pojedyncze repliki Git z całym projektem w nim.Chodzi o to, że możesz używać wtyczki do wydania Maven bez żadnych problemów dla tego typu wielomodułowych buildów.