Eu tenho um script bash em um repositório git. Eu usei git pull
dentro do script para atualizar. Mas, às vezes, quando faço alterações no próprio script, todo o script trava porque é alterado durante a execução. Eu quero algo para atualizar este arquivo, mas não durante a execução.
Como eu poderia fazer isso?
maneira universal
Uma das maneiras comuns de resolver esse problema é ter duas versões do script - uma para executar e outra para armazenar no repositório. Funciona para qualquer sistema de controle de versão e mesmo se o script for baixado da web.
Por exemplo, você pode ter
update.sh.in
(adicionar ao repositório):Copie manualmente esse arquivo em
update.sh
, inclua-o em.gitignore
. Execute oupdate.sh
.O truque aqui é que as três primeiras linhas não devem ser modificadas. Desde que a cópia de
.sh.in
into.sh
permaneça na mesma posição do script - ela pode ser executada sem problemas.A
.in
extensão é uma extensão tradicional para várias ferramentas que geram script real ou código-fonte a partir de arquivos de modelo.Ganchos GIT
Outra maneira, também comum, mas talvez nem tanto: é usar git hooks. Essa é uma abordagem específica do GIT. Você pode escrever scripts adicionais e colocá-los dentro
.git/hooks
do diretório. O Git chamará esses scripts em vários pontos de execução.Você não especificou o que exatamente precisa fazer ao lado
git pull
. Mas provavelmente você pode colocar seu trabalho especial em.git/hooks/pre-rebase
ou.git/hook/post-merge
. que são chamados automaticamente paragit pull
.Para uma lista completa de ganchos, leia aqui: https://git-scm.com/docs/githooks