DEV Community

Ryo Kuroyanagi
Ryo Kuroyanagi

Posted on

17 4

Chmod +x by Git on Windows

TL;DR The following Git command is chmod +x equivalent. You can run it on your Windows machine and the permission is reflected to git repo once you commit the change.

git update-index --chmod=+x script.sh
Enter fullscreen mode Exit fullscreen mode

Background

I've been a mac user for long time since I started coding. However, I'm Windows system recently for machine learning / 3DGC. Windows OS has the different file permission management system and it's not compatible to Linux / macOS.

I use Github Actions to run tests and build on Ubuntu. Sometimes bash script is used to pack complicated commands into scripts used in Actions. I found that the bash scripts can be run on Windows with Git for Windows terminal even the Linux execution permission is not set. However, once I push my scripts and try to run it on Ubuntu on Github Actions, it does not work because of a lack of permission.

Change permission and check if it has changed

As I put at the top of this article, the following command gives the execution permission to a script.

git update-index --chmod=+x script.sh
Enter fullscreen mode Exit fullscreen mode

git ls-tree head command shows the permissions like the below when a script file script.sh is created on Windows. It says the permission is 644.

100644 blob <hash> script.sh
Enter fullscreen mode Exit fullscreen mode

After we have used the chmod equivalent command, Git automatically stages the change. Once, we commit the change, the permission changes to like the below. Now we see 755 permission of the file.

100755 blob <hash> script.sh
Enter fullscreen mode Exit fullscreen mode

That's it ! Hope this helps who are working on cross platforms.

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (1)

Collapse
 
alastairs profile image
Alastair Smith • Edited

For anyone else looking for an alias, I created it like so:

git config --global alias.chmod "update-index --chmod"
Enter fullscreen mode Exit fullscreen mode

which can then be invoked like git chmod +x script.sh.

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay