Gostaria de saber se faz sentido dividir o projeto no qual estou trabalhando em dois repositórios, em vez de um.
Pelo que posso dizer:
- O frontend será escrito em html + js
- Back-end em .net
- O back-end não depende do front-end e o front-end não depende do back-end
- O front-end usará uma API repousante implementada no back-end.
- O front-end pode estar hospedado em qualquer servidor http estático.
A partir de agora, o repositório tem esta estrutura:
raiz:
- a parte dianteira/*
- back-end / *
Eu acho que é um erro manter os dois projetos no mesmo repositório. Como os dois projetos não têm dependências entre si, eles devem pertencer a repositórios individuais e, se necessário, a um repositório pai que possua submódulos.
Foi-me dito que é inútil e que não obteremos nenhum benefício em fazer isso.
Aqui estão alguns dos meus argumentos:
- Temos dois módulos que não dependem entre si.
- Ter o histórico de origem de ambos os projetos a longo prazo pode complicar as coisas (tente pesquisar no histórico por algo no front-end enquanto você tiver metade dos commits que não têm nenhuma relação com o bug que está procurando)
- Conflito e fusão (isso não deve acontecer, mas ter alguém empurrando para o back-end forçará outro desenvolvedor a puxar alterações de back-end para empurrar alterações de front-end).
- Um desenvolvedor pode trabalhar apenas no back-end, mas sempre precisará puxar o front-end ou o contrário.
- A longo prazo, quando será a hora de implantar. De alguma forma, o front-end pode ser implantado em vários servidores estáticos enquanto você possui um servidor de back-end. Em todos os casos, as pessoas serão forçadas a clonar o back-end inteiro ou a criar scripts personalizados para enviar a todos os servidores apenas o front-end ou remover o back-end. É mais fácil empurrar / puxar apenas o front-end ou back-end do que ambos, se apenas um for necessário.
- Contra-argumento (uma pessoa pode trabalhar nos dois projetos), Crie um terceiro repositório com o submódulo e desenvolva-o. O histórico é mantido separado em módulos individuais e você sempre pode criar tags nas quais a versão do back-end / front-end realmente funciona em sincronia. Ter o front-end / back-end juntos em um repo não significa que eles trabalharão juntos. É apenas mesclar a história em um grande repositório.
- Ter front-end / back-end como submódulos facilitará as coisas se você quiser adicionar um freelancer ao projeto. Em alguns casos, você realmente não deseja dar acesso total à base de código. Ter um grande módulo tornará as coisas mais difíceis se você quiser restringir o que os "estranhos" podem ver / editar.
- Introdução e correção de bugs, inseri um novo bug no frontend. Então alguém corrige um bug no back-end. Com um repositório, a reversão antes do novo bug também reverterá o back-end, o que pode dificultar a correção. Eu precisaria clonar o back-end em uma pasta diferente para que o back-end funcionasse enquanto corrigia o bug no front-end ... depois tentava refazer as coisas ... Ter dois repositórios será indolor porque mover o HEAD de um repo ganhou mude o outro. E testar contra versões diferentes do back-end será indolor.
Alguém pode me dar mais argumentos para convencê-los ou pelo menos me dizer por que não faz sentido (mais complicado) dividir o projeto em dois submódulos. O projeto é novo e a base de código tem alguns dias, portanto não é muito cedo para corrigir.