Viele kleine Skripte, ein Repository oder mehrere?

15

Ein Mitarbeiter und ich sind auf ein Problem gestoßen, zu dem wir mehrere Meinungen haben.

Derzeit haben wir ein Git-Repository, in dem wir alle unsere Cronjobs aufbewahren. Es gibt ungefähr 20 Cron und sie hängen nicht wirklich zusammen, außer dass es sich um kleine Python-Skripte handelt, die für einige Aktivitäten unerlässlich sind. Wir verwenden eine fabric.pyDatei zum Bereitstellen und eine requirements.txtDatei zum Verwalten der Anforderungen für alle Skripts.

Grundsätzlich geht es darum, ob wir alle diese Skripte in einem einzigen Git-Repository aufbewahren oder ob wir sie in ihre eigenen Repositorys aufteilen sollen. Indem Sie sie in einem Repository aufbewahren, ist es einfacher, sie auf einem Server bereitzustellen. Wir können nur eine Cron-Datei für alle Skripte verwenden.

Dies fühlt sich jedoch falsch an, da die 20 Cronjobs nicht logisch miteinander verbunden sind. Wenn Sie eine requirements.txtDatei für alle Skripte verwenden, ist es außerdem schwierig, die Abhängigkeiten für ein bestimmtes Skript zu ermitteln, und alle müssen dieselben Paketversionen verwenden.

Wir könnten alle Skripte in ihre eigenen Repositorys aufteilen, aber dies schafft 20 verschiedene Repositorys, an die man sich erinnern und mit denen man sich befassen muss. Die meisten dieser Skripte sind nicht sehr umfangreich und diese Lösung scheint übertrieben zu sein.

Eine verwandte Frage ist, ob wir für alle Cronjobs eine große Crontab-Datei oder für jede eine separate Datei verwenden. Wie vermeidet es eine crontab-Installation, die andere zu überschreiben, wenn jede eine eigene Installation hat? Dies scheint auch ein Schmerz zu sein, da dann 20 verschiedene Cron-Dateien nachverfolgt werden müssten.

Kurz gesagt, unsere Hauptfrage und -frage ist, ob wir sie alle eng als ein Repository zusammenfassen oder ob wir sie mit ihren eigenen requirements.txt und fabfile.py in ein eigenes Repository aufteilen. Wir haben das Gefühl, dass wir wahrscheinlich auch über eine wirklich einfache Lösung nachdenken. Gibt es einen einfacheren Weg, um mit diesem Problem umzugehen?

Der Krug
quelle
Handelt es sich bei diesen Skripten um Cron-Jobs, die sich auf andere Anwendungen beziehen, oder handelt es sich buchstäblich nur um einen Dumping Ground von Utility-Skripten?
Greg Burghardt
Ich verstehe nicht, warum sie im selben Repository die gleichen Anforderungen haben müssen. Txt? Sie können jeweils unterschiedliche Anforderungen haben. Txt, wenn Sie sie in separaten Unterverzeichnissen des Repository ablegen ...
Sean Burton

Antworten:

16

Sofern Sie nicht einen bestimmten Grund für die Annahme haben, dass jeder von ihnen ein individuelles Repo verdient (Werden sie viel wachsen? Wahrscheinlich nicht!), Erscheint es vernünftiger, sie alle in ein Repo zu packen und sich die Mühe zu ersparen, alle zu klonen von ihnen aus 20 Repos.

Jedes in einem separaten Repo zu halten, scheint der Weg zu sein, ein Problem zu erstellen, bei dem es kein Problem gibt.

Erstellen Sie keine zusätzliche Arbeit für sich selbst (und andere).

Turm
quelle
2
Einverstanden - solange die Skripte gut benannt sind und die Duplizierung zwischen ihnen gering gehalten wird (z. B. freigegebene Bibliotheksprodukte), damit die Suche in grep nicht zu überladen ist, funktioniert dies meiner Meinung nach.
Danny Staple
1

Sofern es keinen wirklich guten Grund für die Aufteilung gibt (Leistung, überwältigende organisatorische / sicherheitstechnische Bedenken usw.), besteht mein Instinkt darin, die Quelldokumente im selben Repository zusammenzuhalten.

Das Aufteilen von Systemen in separate Repositorys führt im Allgemeinen zu Barrieren, die die Wiederverwendung verhindern. Da die Wiederverwendung nur so gut wie die einzige Möglichkeit ist, die Entwicklungskosten zu amortisieren, ist alles, was der Wiederverwendung im Wege steht, ipso facto eine schlechte Sache.

William Payne
quelle