¿Muchos guiones pequeños, un repositorio o múltiples?

15

Un compañero de trabajo y yo nos hemos topado con un problema sobre el que tenemos múltiples opiniones.

Actualmente tenemos un repositorio git en el que mantenemos todos nuestros cronjobs. Hay alrededor de 20 crons y no están realmente relacionados, excepto por el hecho de que todos son pequeños scripts de Python y esenciales para alguna actividad. Estamos utilizando un fabric.pyarchivo para implementar y un requirements.txtarchivo para administrar los requisitos de todos los scripts.

Nuestro problema es básicamente, ¿mantenemos todos estos scripts en un repositorio git o deberíamos separarlos en sus propios repositorios? Al mantenerlos en un repositorio, es más fácil implementarlos en un servidor. Podemos usar un solo archivo cron para todos los scripts.

Sin embargo, esto se siente mal, ya que los 20 cronjobs no están relacionados lógicamente. Además, cuando se usa un requirements.txtarchivo para todos los scripts, es difícil determinar cuáles son las dependencias de un script en particular y todos tienen que usar las mismas versiones de paquetes.

Podríamos separar todos los scripts en sus propios repositorios, pero esto crea 20 repositorios diferentes que deben ser recordados y tratados. La mayoría de estos scripts no son muy grandes y esa solución parece exagerada.

Una pregunta relacionada es, ¿utilizamos un gran archivo crontab para todos los cronjobs, o un archivo separado para cada uno? Si cada uno tiene el suyo, ¿cómo evita la instalación de un crontab sobrescribir los otros 19? Esto también parece una molestia, ya que entonces habría 20 archivos cron diferentes para realizar un seguimiento.

En resumen, nuestra pregunta y problema principal es ¿los mantenemos todos juntos como un único repositorio o los separamos en su propio repositorio con sus propios requisitos.txt y fabfile.py? Sentimos que probablemente también estamos buscando alguna solución realmente simple. ¿Hay una manera más fácil de lidiar con este problema?

La jarra
fuente
¿Estos scripts son trabajos cron relacionados con otras aplicaciones, o literalmente solo un vertedero de scripts de utilidad?
Greg Burghardt
No veo por qué tenerlos en el mismo repositorio significaría que tendrían que compartir los mismos requisitos.txt. Cada uno puede tener requisitos diferentes. Txt si los coloca en subdirectorios separados del repositorio ...
Sean Burton

Respuestas:

16

A menos que exista una razón específica para que piense que cada uno de ellos merece un repositorio invidual (¿crecerán mucho? ¡Probablemente no!) Parece más razonable ponerlos a todos en un repositorio y ahorrarse la molestia de clonarlos de ellos de 20 repos.

Mantener cada uno en un repositorio separado parece ser el camino para crear un problema donde no existe un problema.

No cree trabajo extra para usted (y para otros).

Torre
fuente
2
De acuerdo: siempre y cuando los scripts estén bien nombrados y la duplicación se mantenga baja entre ellos (es decir, cosas de la biblioteca compartida) para que las búsquedas grep no estén demasiado abarrotadas, creo que esto funciona.
Danny Staple, el
1

A menos que haya una buena razón para la división (rendimiento; preocupaciones abrumadoras de organización / seguridad, etc.), mi instinto es mantener los documentos de origen juntos en el mismo repositorio.

La división de los sistemas en repositorios separados generalmente crea barreras que inhiben la reutilización; Dado que la reutilización es casi la única forma en que una organización tiene que amortizar el costo de desarrollo, cualquier cosa que se interponga en la reutilización es ipso facto algo malo.

William Payne
fuente