Não tenho 100% de certeza dos aspectos positivos. Aqui estão alguns negativos
Você acaba adicionando dependências a servidores / pontos de extremidade de terceiros que podem não ser estáveis.
Já tive com o bower que o repositório de algumas dependências foi excluído ou movido. Assim, um novo desenvolvedor aparece, clona meu repositório, digita
bower install
e obtém erros para repositórios não acessíveis. Se, em vez disso, eu fiz o check-in do código de terceiros no meu repositório, esse problema desaparece.
Isso é resolvido como o OP sugere, se você estiver obtendo deps de cópias mantidas em um servidor que você executa.
Mais difícil para noobs.
Trabalho com estudantes de arte com muito pouca experiência em linha de comando. Eles fazem arte com Processing, arduino, Unity3D e se dão bem com muito pouco conhecimento técnico. Eles queriam usar algum HTML5 / JavaScript que escrevi. Passos por causa do pavilhão
- Faça o download do Zip do repositório no github (observe que está à direita de todos os repositórios no github. Porque eles não conhecem o git)
- Faça o download e instale o nó (para que possamos executar o npm para instalar o bower)
- Instale git ou msysgit (porque o bower exige e não está instalado nas máquinas de muitos alunos)
- Instalar o caramanchão (
npm install -g bower
)
bower install
(finalmente para obter nossas dependências)
As etapas 2 a 5 podem ser excluídas se apenas fizermos o check-in dos arquivos no repositório do github. Esses passos provavelmente parecem super fáceis para você e para mim. Para os alunos, eles eram muito confusos e queriam saber para que todos os passos, onde e para que servem, poderiam ser um bom aprendizado, mas possivelmente inteiramente ortogonais ao tópico da classe e, provavelmente, rapidamente esquecidos.
Adiciona outro passo ao puxar.
Já aconteceu muitas vezes que eu faço git pull origin master
e testo meu código, e leva de 5 a 10 minutos para lembrar que eu precisava digitar bower install
para obter os deps mais recentes. Tenho certeza que isso é facilmente resolvido com um gancho de script pull.
Isso torna o git mais difícil de ramificar
Se dois galhos têm deps diferentes, você meio que está ferrado. Suponho que você possa digitar bower install
depois de cada git checkout
. Tanta velocidade.
Quanto aos seus pontos positivos, acho que existem contra exemplos para cada um desses
Facilita o processo de distribuição e importação de módulos compartilhados, especialmente atualizações de versão.
vs o que? Certamente não é mais fácil de distribuir. Puxar um repo em vez de 20 não é mais fácil e é mais provável que falhe. Veja o nº 1 acima
Remove os módulos compartilhados do controle de origem, acelerando e simplificando os check-outs / check-ins (quando você tem aplicativos com mais de 20 bibliotecas, esse é um fator real).
Por outro lado, significa que você depende de outros para correções. Ou seja, se seus departamentos estão obtendo de uma fonte de terceiros e você precisa de um bug corrigido, você deve esperar que eles apliquem seu patch. Pior, você provavelmente não pode apenas pegar a versão que deseja, mais o seu patch; você deve escolher a versão mais recente, que pode não ser compatível com o seu projeto.
Você pode resolver isso clonando os repositórios separadamente e, em seguida, aponte os deps do projeto para suas cópias. Em seguida, você aplica as correções em suas cópias. Claro que você também pode fazer isso se apenas copiar a fonte no seu repositório
Permite mais controle ou conscientização sobre quais bibliotecas de terceiros são usadas em sua organização.
Isso parece discutível. Apenas exija que os desenvolvedores coloquem as bibliotecas de terceiros em sua própria pasta <ProjectRoot>/3rdparty/<nameOfDep>
. É fácil ver quais bibliotecas de terceiros são usadas.
Não estou dizendo que não há pontos positivos. A última equipe em que participei tinha> 100 de terceiros. Só estou apontando que nem tudo são rosas. Estou avaliando se devo me livrar do caramanchão para minhas necessidades, por exemplo.