Eksplorowanie obiektów monorepo i wielu repozytoriów

Ukończone

Repozytorium to miejsce, w którym jest przechowywana historia pracy, zwykle w podkatalogu git.

Jak należy zorganizować repozytorium kodu? Zespoły programistyczne mają na celu oddzielenie zagadnień w ich oprogramowaniu i repozytoriach. W miarę upływu czasu nie jest to niezwykłe, aby repozytoria kodu stały się zaśmiecone nieistotnym kodem i artefaktami.

Jeśli chodzi o organizowanie repozytoriów, istnieją dwie główne założenia: użycie jednego repozytorium (Monorepo) lub wielu repozytoriów.

  • Monorepos to wzorzec kontroli źródła, w którym cały kod źródłowy jest przechowywany w jednym repozytorium. Łatwo jest zapewnić wszystkim pracownikom dostęp do wszystkiego jednocześnie. Sklonuj go i wszystko jest gotowe.
  • Organizowanie projektów w oddzielnych repozytoriach jest określane jako wiele repozytoriów.

Podstawowa różnica między repozytorium mono i wieloma filozofiami repozytorium jest tym, co umożliwia zespołom najbardziej wydajną pracę. W skrajnym scenariuszu widok wielu repozytoriów sugeruje, że każda drużyna podrzędna może pracować w swoim repozytorium. Umożliwia im to pracę w odpowiednich obszarach przy użyciu bibliotek, narzędzi i przepływów pracy programistycznych, które optymalizują swoją produktywność.

Koszt korzystania z czegokolwiek, co nie zostało opracowane w danym repozytorium, jest równoważne użyciu biblioteki lub usługi innej firmy, nawet jeśli został napisany przez kogoś siedzącego w pobliżu.

Jeśli napotkasz usterkę w bibliotece, należy ją rozwiązać w odpowiednim repozytorium. Po opublikowaniu nowego artefaktu możesz wrócić do repozytorium i wprowadzić niezbędne zmiany w kodzie. Jeśli jednak usterka znajduje się w innej bazie kodu lub obejmuje różne biblioteki, narzędzia lub przepływy pracy, może być konieczne uzyskanie pomocy od właściciela tego systemu i oczekiwanie na ich odpowiedź.

W przypadku korzystania z widoku repozytorium mono zarządzanie złożonymi grafami zależności może zwiększyć trudności z używaniem pojedynczego repozytorium. Korzyści wynikające z umożliwienia różnym zespołom samodzielnej pracy nie są istotne. Niektóre zespoły mogą znaleźć wydajny sposób pracy, ale może to nie być prawdziwe dla wszystkich grup. Ponadto inne zespoły mogą wybrać nieoptymalne podejście, negując wszelkie korzyści uzyskane przez innych. Konsolidowanie całej pracy w repozytorium mono umożliwia ścisłe monitorowanie tego pojedynczego repozytorium.

Problemy z wprowadzaniem zmian w innych repozytoriach lub oczekiwaniu na wprowadzenie zmian przez zespoły są unikane w repozytorium mono, w którym każdy może coś zmienić.

Jeśli wykryjesz usterkę w bibliotece, naprawisz ją tak łatwo, jak znalezienie usterki we własnym kodzie.

Uwaga

W usłudze Azure DevOps często używa się oddzielnego repozytorium dla każdego skojarzonego rozwiązania w projekcie.