Compartilhamos um arquivo de build chamado build.sh, que cria um arquivo binário em um caminho específico. Como muitos desenvolvedores alteram o caminho neste arquivo build.sh em seu ambiente local com frequência e esquecem de alterá-lo de volta (queremos manter o caminho de build padrão no arquivo build.sh no branch remoto), um aviso de que um push forçado é necessário para enviar este arquivo para o branch remoto seria ótimo. (às vezes, mas não com frequência, realmente temos que alterar esse arquivo)
.gitignore não é uma opção, pois o arquivo já existe no repositório.
Usamos o bitbucket. Uma solução global seria melhor do que alterar as configurações do git localmente.
Alguma ideia?
Dizer aos desenvolvedores para não usar caminhos individuais certamente ajudaria, mas as pessoas geralmente não seguem isso.
build.sh é um script de shell, então faça com que ele carregue a configuração de um arquivo separado:
ou do usuário
~/.build.config
ou similar. Agora os desenvolvedores podem usar caminhos individuais sem se preocupar com mudanças no script principal.Você pode configurar um hook pre-receieve . Ele rejeitará pushes onde
build.sh
foi modificado, a menos que seja um commit explicitamente permitidoAqui está a documentação oficial do Bitbucket sobre ganchos de pré-recebimento .
Você também pode configurar uma palavra-chave específica
[ALLOW_BUILD_CHANGE]
para permitir a alteração do seu arquivo protegido:Observe que esta solução funciona para BitBucket Server e DataCenter
Você pode ter um arquivo .env para ambientes locais e .env-prod para produção.
.env deve estar em .gitignore, o que implica retirá-lo do repositório, para que as pessoas em seus ambientes locais definam seus próprios valores e não enfrentem problemas devido a outros enviando configurações conflitantes.
E .env-prod deve ser definido somente quando essa for a intenção.
É claro que você deve evitar o controle de versão de informações confidenciais, pois, se fizer isso, elas estarão tão seguras quanto qualquer pessoa que tenha acesso a elas, incluindo o bitbucket e qualquer pessoa que trabalhe lá, bem como seus scripts...