git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Update hook in Cygwin

From
Shawn Pearce <spearce@spearce.org>
Date
Mar 8, 2006, 14:44 UTC
Message-ID
<20060308144413.GA516@spearce.org>
In-Reply-To
<440EDDE4.9070405@op5.se>
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.
Previous: Andreas EricssonNext: Christopher Faylor
Message 3 of 4 in “Update hook in Cygwin”
  1. Niklas HöglundMar 8, 2006
  2. Andreas EricssonMar 8, 2006
  3. Shawn PearceMar 8, 2006
  4. Christopher FaylorMar 8, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.