Eu uso o Git no Windows e quero inserir o script de shell executável no repositório do git por uma confirmação.
Normalmente eu preciso fazer dois passos ( git commit
).
$ vi install.sh
$ git add install.sh
$ git commit -am "add new file for installation" # first commit
[master f2e92da] add support for install.sh
1 files changed, 18 insertions(+), 3 deletions(-)
create mode 100644 install.sh
$ git update-index --chmod=+x install.sh
$ git commit -am "update file permission" # second commit
[master 317ba0c] update file permission
0 files changed
mode change 100644 => 100755 install.sh
Como posso combinar esses dois passos em um passo? configuração git? comando do windows?
Lembrar : duas respostas são boas, git add --chmod=+x file
são suportadas na nova versão git
Referência: veja a pergunta em permissões de arquivo Git no Windows para segunda confirmação
git add --chmod=+x
é realmente possível. Veja minha resposta abaixo , crédito para Edward Thomson .git add --chmod=+x
versãoRespostas:
Não é necessário fazer isso em duas confirmações; você pode adicionar o arquivo e marcá-lo como executável em uma única confirmação:
Como você observa, após adicionar, o modo é 0644 (ou seja, não executável). No entanto, podemos marcá-lo como executável antes de confirmar:
E agora o arquivo está no modo 0755 (executável).
E agora temos um único commit com um único arquivo executável.
fonte
O git 2.9.x / 2.10 (terceiro trimestre de 2016) na verdade permitirá isso (graças a Edward Thomson ):
Isso torna todo o processo mais rápido e funciona mesmo se
core.filemode
for definido como falso.Veja commit 4e55ed3 (31 de maio de 2016) por Edward Thomson (
ethomson
) .Ajudado por: Johannes Schindelin (
dscho
) .(Mesclado por Junio C Hamano -
gitster
- na confirmação c8b080a , 06 de julho de 2016)fonte
Se os arquivos já tiverem o sinalizador + x definido,
git update-index --chmod=+x
não fará nada e o git achará que não há nada a confirmar, mesmo que o sinalizador não esteja sendo salvo no repositório.Você deve primeiro remover a flag, executar o comando git e depois colocar a flag de volta:
então o git vê uma mudança e permitirá que você efetue a alteração.
fonte
A nota é primeiramente que você deve ter certeza de que está
filemode
definidofalse
no arquivo config git, ou use este comando:e, em seguida, você pode definir a permissão 0777 com este comando:
fonte
Não tenho
touch
echmod
comando no meu cmd.exe egit update-index --chmod=+x foo.sh
não funciona para mim.Finalmente resolvo definindo
skip-worktree
bit:fonte