Wiele małych skryptów, jedno repozytorium czy wiele?

16

Współpracownik i ja napotkaliśmy problem, na który mamy wiele opinii.

Obecnie mamy repozytorium git, w którym trzymamy wszystkie nasze cronjoby. Istnieje około 20 cronów i nie są one tak naprawdę powiązane, z wyjątkiem tego, że wszystkie są małymi skryptami pythonowymi i niezbędnymi do pewnej aktywności. Używamy fabric.pypliku do wdrożenia i requirements.txtpliku do zarządzania wymaganiami dla wszystkich skryptów.

Nasz problem polega zasadniczo na tym, czy przechowujemy wszystkie te skrypty w jednym repozytorium git, czy też powinniśmy je rozdzielać na własne repozytoria? Dzięki przechowywaniu ich w jednym repozytorium łatwiej jest wdrożyć je na jednym serwerze. Możemy użyć tylko jednego pliku cron dla wszystkich skryptów.

Jednak wydaje się to niewłaściwe, ponieważ 20 cronjobs nie są logicznie powiązane. Ponadto, gdy używasz jednego requirements.txtpliku dla wszystkich skryptów, trudno jest ustalić, jakie są zależności dla konkretnego skryptu i wszystkie muszą korzystać z tych samych wersji pakietów.

Możemy podzielić wszystkie skrypty na ich własne repozytoria, ale tworzy to 20 różnych repozytoriów, które należy zapamiętać i zająć się nimi. Większość tych skryptów nie jest bardzo duża, a to rozwiązanie wydaje się przesadne.

Powiązane pytanie brzmi: czy używamy jednego dużego pliku crontab dla wszystkich cronjobs, czy osobnego pliku dla każdego? Jeśli każdy ma swój własny, w jaki sposób instalacja jednego crontaba pozwala uniknąć nadpisania pozostałych 19? Wydaje się to również bolesne, ponieważ do śledzenia byłoby 20 różnych plików cron.

Krótko mówiąc, naszym głównym pytaniem i problemem jest to, czy trzymamy je wszystkie ściśle powiązane jako jedno repozytorium, czy dzielimy je na własne repozytorium z własnymi wymaganiami.txt i fabfile.py? Wydaje nam się, że prawdopodobnie szukamy też naprawdę prostego rozwiązania. Czy istnieje łatwiejszy sposób poradzenia sobie z tym problemem?

Dzbanek
źródło
Czy te skrypty zadania CRON są powiązane z innymi aplikacjami, czy dosłownie tylko wysypiskiem skryptów narzędziowych?
Greg Burghardt
Nie rozumiem, dlaczego umieszczenie ich w tym samym repozytorium oznaczałoby, że musieliby dzielić te same wymagania.txt? Każdy z nich może mieć inne wymagania. Txt, jeśli umieścisz je w osobnych podkatalogach repozytorium ...
Sean Burton

Odpowiedzi:

16

Chyba że istnieje jakiś konkretny powód, aby sądzić, że każdy z nich zasługuje na indywidualne repozytorium (czy będą rosły dużo? Prawdopodobnie nie!) Rozsądniej jest umieścić je wszystkie w jednym repo i zaoszczędzić sobie kłopotu z klonowaniem wszystkich z nich z 20 repozytoriów.

Przechowywanie każdego z nich w osobnym repozytorium wydaje się ścieżką do stworzenia problemu, w którym problem nie istnieje.

Nie twórz dodatkowej pracy dla siebie (i innych).

Wieża
źródło
2
Zgoda - tak długo, jak skrypty są dobrze nazwane, a powielanie między nimi (tj. Biblioteki współdzielone) jest niskie, więc wyszukiwania grep nie są zbyt zagracone, myślę, że to działa.
Danny Staple,
1

O ile nie ma naprawdę dobrego powodu do podziału (wydajność; przytłaczające obawy dotyczące organizacji / bezpieczeństwa itp.), Instynktownie trzymam dokumenty źródłowe razem w tym samym repozytorium.

Podział systemów na osobne repozytoria generalnie tworzy bariery, które hamują ponowne użycie; ponieważ ponowne użycie jest jedynym sposobem, w jaki organizacja musi amortyzować koszty rozwoju, wszystko, co przeszkadza w ponownym użyciu, jest ipso faktycznie złe.

William Payne
źródło