Marcando scripts sh como executáveis no #Git. (#chmod #dev #windows #linux)

Marcando scripts sh como executáveis no #Git. (#chmod #dev #windows #linux)

Overview

Bem-vindo a um guia rápido e prático para todos que enfrentam desafios ao trabalhar com scripts sh entre diferentes sistemas operacionais! Neste post, vou compartilhar uma solução simples para uma problema comum: garantir que seus scripts sejam reconhecidos como executáveis, não importa onde você esteja trabalhando. Se você já se encontrou perdido entre o Windows e o Linux nesse aspecto, este artigo é para você.

Neste post mostro o comando para adicionar a propriedade +X (executável) em um script sh e como fazer para executar este comando em lote. Esta foi uma situação que apareceu quando estava utilizando o Windows para criar um repositório com scripts que seriam executados no Linux.

A vantagem deste comando é que você consegue salvar no repositório quais arquivos devem ser considerados como executáveis e quais não são. Definitivamente, esta é uma abordagem que deve ser utilizada com cautela.

Para fazer isso é simples:

  1. Adicione o arquivo no repositório
  2. Atualize a propriedade +x para ele.

Exemplo:

git add foo.sh
git update-index --chmod=+x foo.sh

Pronto. O arquivo foo.sh será sempre considerado como executável.

Definindo todos os arquivos .sh como executáveis

Ambos scripts devem ser executados no diretório raiz do repositório.

No Linux

find ./ -type f -name "*.sh" -exec git update-index --chmod=+x {} \;

No Windows (com PowerShell)

foreach ($file in Get-ChildItem -Path ./ -Filter *.sh -Recurse) {
    $filePath = $file | Resolve-Path -Relative
    & git update-index --chmod=+x $filePath
}

Se quiser, salve este comando em um script .ps1 e execute ele.

Espero ter ajudado.