5

I have created the following git hook to update my web application when new changes are pushed to the repository

#!/bin/sh
#Update the server version to HEAD

echo "Updating webapp..."
unset $(git rev-parse --local-env-vars)
(cd /var/www/webapp && git pull -q)

However, if I add new files they get the wrong permissions. They are only readable by the owner and not by the group or by other users. But I need them to be readable by everyone. Locally they have the right permission bits. And even when I run the hook manually from the shell, it works correctly. It only doesn't work when the script is called as a hook.

Any ideas how to fix that?

PS: I am using git 1.7

Simon
  • 1,521
  • 2
  • 13
  • 20

1 Answers1

8

Git does not store permissions, apart from the executable bit. So, on checkout, files are created with the default permissions, which depend on your umask.

I guess, when you are calling the hook manually, you have a more liberal umask set. You can override the umask with the umask shell command. For your purposes, 0022 is probably fine.

Lars Noschinski
  • 3,667
  • 16
  • 29
  • 1
    Setting `umask 0022` in our shell script immediately before the git pull worked perfectly. Thanks! – joachim Feb 22 '12 at 13:02