J'utilise Git dans Windows et je veux pousser le script shell exécutable dans git repo par un commit.
Habituellement, je dois faire deux étapes ( 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
Comment puis-je combiner ces deux étapes en une seule étape? configuration git? commande windows?
Rappel : deux réponses sont bonnes, git add --chmod=+x file
est prise en charge dans la nouvelle version git
Référence: voir la question dans les autorisations de fichier Git sur Windows pour le deuxième commit
git add --chmod=+x
c'est effectivement possible. Voir ma réponse ci - dessous , crédit à Edward Thomson .git add --chmod=+x
versionRéponses:
Il n'est pas nécessaire de le faire en deux validations, vous pouvez ajouter le fichier et le marquer comme exécutable en une seule validation:
Comme vous le constatez, après l'ajout, le mode est 0644 (c'est-à-dire non exécutable). Cependant, nous pouvons le marquer comme exécutable avant de valider:
Et maintenant, le fichier est en mode 0755 (exécutable).
Et maintenant, nous avons un seul commit avec un seul fichier exécutable.
la source
git 2.9.x / 2.10 (T3 2016) permettra en fait (grâce à Edward Thomson ):
Cela rend le processus plus rapide et fonctionne même s'il
core.filemode
est défini sur false.Voir commit 4e55ed3 (31 mai 2016) par Edward Thomson (
ethomson
) .Aidé par: Johannes Schindelin (
dscho
) .(Fusionné par Junio C Hamano -
gitster
- en commit c8b080a , 06 juil.2016 )la source
Si les fichiers ont déjà l'indicateur + x défini,
git update-index --chmod=+x
ne fait rien et git pense qu'il n'y a rien à valider, même si l'indicateur n'est pas enregistré dans le dépôt.Vous devez d'abord supprimer l'indicateur, exécuter la commande git, puis remettre l'indicateur:
alors git voit un changement et vous permettra de valider le changement.
la source
La note est tout d'abord que vous devez vous assurer d'avoir
filemode
définifalse
dans le fichier config git, ou utilisez cette commande:puis vous pouvez définir l'autorisation 0777 avec cette commande:
la source
Je n'ai pas de commande
touch
etchmod
dans mon cmd.exe etgit update-index --chmod=+x foo.sh
ne fonctionne pas pour moi.Je le résous finalement en mettant
skip-worktree
bit:la source