Re: Update hook in Cygwin
Andreas Ericsson <ae@op5.se> wrote:
Show 27 quoted lines
> Niklas Höglund wrote:
> >Hi.
> >
> >After creating a couple of repositories and pushing and cloning them,
> >I get the following:
> >
> >$ git push --all origin
> >...
> >hooks/update: line 88: mail: command not found
> >
> >This is in cygwin. I'm rather glad I don't have the mail command
> >installed, as I don't want mails going anywhere.
> >
> >The update hook contains the following comment:
> >
> ># To enable this hook:
> ># (1) change the recipient e-mail address
> ># (2) make this file executable by "chmod +x update".
> >
> >But my impression after a cursory look at it is that it would always
> >call "mail" whenever it is run, and since all files are executable in
> >Windows (AFAIK), it would always be run.
>
>
> I was under the impression that the cygwin abstraction layer had some
> unixy permission thing on top of NTFS. Perhaps that's wrong. If you
> remove the hook it won't be called.
I've seen the same thing with the hooks on Cywin. I would consider it to be a bug in either GIT or Cygwin but I haven't decided which yet.
If you look at the share/git-core/templates directory on a real UNIX system would see that the hooks are not marked executable by default when installed. They are copied non-executable into each new repository by git-init-db. Since they aren't executable they don't get run.
But on Cygwin the hooks appear to be getting installed and are marked executable in share/git-core/templates. So when git-init-db copies them over to the new repository they are by default enabled.
Removing the execute bit from the files in share/git-core/templates doesn't help; for some reason git-init-db is still copying them with the execute bit enabled. I haven't spent the time to figure out why yet; so I just run rm .git/hooks/* on every repository I come across.
BTW: chmod a-x .git/hooks/* also works as the Cygwin unixy permission
layer will remember the change.
--
Shawn.