Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Updating file permissions with git-bash on Windows 7

How do I update file permissions with git-bash on Windows 7?

I've tried the following without success:

$ ls -al scripts/script.sh -rw-r--r--    1 myUid   Administ       70 Sep  8 11:24 scripts/script.sh  $ git update-index --chmod=+x scripts/script.sh  $ ls -al scripts/script.sh -rw-r--r--    1 myUid   Administ       70 Sep  8 11:24 scripts/script.sh  $ chmod +x scripts/script.sh  $ ls -al scripts/script.sh -rw-r--r--    1 myUid   Administ       70 Sep  8 11:24 scripts/script.sh 
like image 691
blueberryfields Avatar asked Sep 08 '14 17:09

blueberryfields


People also ask

How do I give permission to a file in bash?

We can provide the executable permission by using the below command, chmod +x filename.sh. chmod (Change Mode) - Using chmod we can change the access permissions to file system objects. +x - It makes the file executable.

How do I give git permission to run a file?

The solution is to use the Git update-index command to assign the execute permissions. This will assign execute permissions to the bash file. After that you can commit the changes to the repo.


2 Answers

You are probably using NTFS or FAT32 on Windows, and those filesystems do not support the executable permission. Instead, cygwin looks at the file name and contents to determine whether it's executable:

Files are considered to be executable if the filename ends with .bat, .com or .exe, or if its content starts with #!.

So you should make sure that the bash file starts with a shebang (e.g. #!/bin/bash). Then, you should be able to just execute the file, disregarding the permission output of ls.

like image 117
Yogu Avatar answered Sep 24 '22 22:09

Yogu


If you're updating scripts in a windows environment that are being deployed to a linux filesystem, even though they are permitted to run locally, you may still find yourself needing to grant execute before pushing.

From this article on Change file permissions when working with git repo's on windows:

  1. Open up a bash terminal like git-bash on Windows
  2. Navigate to the .sh file where you want to grant execute permissions
  3. Check the existing permissions with the following command:

    git ls-files --stage  

    Which should return something like 100644

  4. Update the permissions with the following command

    git update-index --chmod=+x 'name-of-shell-script' 
  5. Check the file permission again

    git ls-files --stage  

    Which should return something like 100755

  6. Commit changes and push!

git bash on windows

like image 41
KyleMit Avatar answered Sep 24 '22 22:09

KyleMit