Muitos scripts pequenos, um repositório ou vários?

15

Eu e um colega de trabalho encontramos um problema sobre o qual temos várias opiniões.

Atualmente, temos um repositório git no qual mantemos todos os nossos cronjobs. Existem cerca de 20 crons e eles não são realmente relacionados, exceto pelo fato de serem todos pequenos scripts python e essenciais para alguma atividade. Estamos usando um fabric.pyarquivo para implantar e um requirements.txtarquivo para gerenciar requisitos para todos os scripts.

Nosso problema é basicamente: mantemos todos esses scripts em um repositório git ou devemos separá-los em seus próprios repositórios? Mantendo-os em um repositório, é mais fácil implantá-los em um servidor. Podemos usar apenas um arquivo cron para todos os scripts.

No entanto, isso parece errado, pois os 20 cronjobs não estão relacionados logicamente. Além disso, ao usar um requirements.txtarquivo para todos os scripts, é difícil descobrir quais são as dependências de um script específico e todas elas precisam usar as mesmas versões de pacotes.

Poderíamos separar todos os scripts em seus próprios repositórios, mas isso cria 20 repositórios diferentes que precisam ser lembrados e tratados. A maioria desses scripts não é muito grande e essa solução parece ser um exagero.

Uma questão relacionada é: usamos um grande arquivo crontab para todos os cronjobs ou um arquivo separado para cada um? Se cada um possui o seu, como a instalação de um crontab evita sobrescrever o outro 19? Isso também parece uma dor, pois haveria então 20 arquivos cron diferentes para acompanhar.

Resumindo, nossa principal questão e problema é mantê-los agrupados em um único repositório ou separá-los em seu próprio repositório com seus próprios requisitos.txt e fabfile.py? Nós sentimos que provavelmente também estamos procurando alguma solução realmente simples. Existe uma maneira mais fácil de lidar com esse problema?

O Jarro
fonte
Esses scripts agendam trabalhos relacionados a outros aplicativos ou literalmente apenas um depósito de scripts de utilitários?
precisa
Não vejo por que tê-los no mesmo repositório significaria que precisariam compartilhar os mesmos requisitos.txt. Podem cada um tem uma requirements.txt diferente se você colocá-los em subdiretórios separados do repositório ...
Sean Burton

Respostas:

16

A menos que exista um motivo específico para você pensar que cada um deles merece um repo invidual (eles crescerão muito? Provavelmente não!), Parece mais razoável colocar todos eles em um repo e poupar o trabalho de clonar todos deles de 20 repos.

Manter cada um em um repositório separado parece o caminho para criar um problema em que ele não existe.

Não crie trabalho extra para você (e outros).

Torre
fonte
2
Concordo - desde que os scripts sejam bem nomeados e a duplicação seja mantida baixa entre eles (ou seja, coisas da biblioteca compartilhada), para que as pesquisas grep não sejam muito confusas, acho que isso funciona.
Danny Staple
1

A menos que haja uma boa razão para a divisão (desempenho; preocupações organizacionais / de segurança, etc.), meu instinto é manter os documentos de origem juntos no mesmo repositório.

A divisão de sistemas em repositórios separados geralmente cria barreiras que inibem a reutilização; como a reutilização é apenas a única maneira pela qual uma organização amortiza o custo de desenvolvimento, qualquer coisa que atrapalhe a reutilização é ipso facto uma coisa ruim.

William Payne
fonte