De nombreux petits scripts, un référentiel ou plusieurs?

15

Un collègue et moi-même avons rencontré un problème sur lequel nous avons plusieurs opinions.

Actuellement, nous avons un référentiel git dans lequel nous gardons tous nos cronjobs. Il y a environ 20 crons et ils ne sont pas vraiment liés, sauf qu'ils sont tous de petits scripts python et essentiels pour certaines activités. Nous utilisons un fabric.pyfichier à déployer et un requirements.txtfichier pour gérer les exigences pour tous les scripts.

Notre problème est fondamentalement, conservons-nous tous ces scripts dans un référentiel git ou devrions-nous les séparer dans leurs propres référentiels? En les conservant dans un référentiel, il est plus facile de les déployer sur un serveur. Nous pouvons utiliser un seul fichier cron pour tous les scripts.

Cependant, cela ne va pas, car les 20 cronjobs ne sont pas logiquement liés. De plus, lorsque vous utilisez un requirements.txtfichier pour tous les scripts, il est difficile de comprendre quelles sont les dépendances pour un script particulier et ils doivent tous utiliser les mêmes versions de packages.

Nous pourrions séparer tous les scripts dans leurs propres référentiels, mais cela crée 20 référentiels différents qui doivent être mémorisés et traités. La plupart de ces scripts ne sont pas très volumineux et cette solution semble exagérée.

Une question connexe est la suivante: utilisons-nous un gros fichier crontab pour tous les cronjobs, ou un fichier distinct pour chacun? Si chacun a le sien, comment l'installation d'un crontab évite-t-elle d'écraser l'autre 19? Cela semble également être une douleur, car il y aurait alors 20 fichiers cron différents à suivre.

En bref, notre principale question et problème est de les garder tous étroitement regroupés en un seul référentiel ou de les séparer dans leur propre référentiel avec leurs propres requirements.txt et fabfile.py? Nous pensons que nous recherchons également une solution vraiment simple. Existe-t-il un moyen plus simple de résoudre ce problème?

La cruche
la source
Ces scripts sont-ils des tâches cron liées à d'autres applications, ou littéralement juste un dépotoir de scripts utilitaires?
Greg Burghardt
Je ne vois pas pourquoi les avoir dans le même référentiel signifierait qu'ils devraient partager le même requirements.txt? Ils peuvent chacun avoir un requirements.txt différent si vous les mettez dans des sous-répertoires séparés du référentiel ...
Sean Burton

Réponses:

16

À moins qu'il n'existe une raison spécifique pour que vous pensiez que chacun d'entre eux mérite un repo individuel (grandiront-ils beaucoup? Probablement pas!), Il semble plus raisonnable de les mettre tous dans un seul repo et de vous éviter la peine de les cloner tous d'entre eux à partir de 20 repos.

Garder chacun dans un référentiel séparé semble être le chemin de la création d'un problème là où un problème n'existe pas.

Ne créez pas de travail supplémentaire pour vous-même (et pour les autres).

Tour
la source
2
D'accord - tant que les scripts sont bien nommés et que la duplication est maintenue entre eux (c'est-à-dire les trucs de bibliothèque partagée) afin que les recherches grep ne soient pas trop encombrées, je pense que cela fonctionne.
Danny Staple
1

À moins qu'il n'y ait une très bonne raison à la séparation (performances; problèmes organisationnels / de sécurité écrasants, etc.), mon instinct est de conserver les documents source ensemble dans le même référentiel.

La division des systèmes en référentiels séparés crée généralement des barrières qui empêchent la réutilisation; étant donné que la réutilisation est à peu près la seule façon dont une organisation doit amortir le coût du développement, tout ce qui fait obstacle à la réutilisation est ipso facto une mauvaise chose.

William Payne
la source