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

Re: [PATCH] disable post-checkout test on Cygwin

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 17, 2009, 20:42 UTC
Message-ID
<7v63i7ridk.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<20090317202818.GA13458@blimp.localdomain>
Alex Riesen <raa.lkml@gmail.com> writes:
Show 20 quoted lines
> Johannes Sixt, Tue, Mar 17, 2009 17:59:09 +0100:
>> Junio C Hamano schrieb:
>> > Alex Riesen <raa.lkml@gmail.com> writes:
>> > 
>> >> It is broken because of the tricks we have to play with
>> >> lstat to get the bearable perfomance out of the call.
>> >> Sadly, it disables access to Cygwin's executable attribute,
>> >> which Windows filesystems do not have at all.
>> > 
>> > Hmm, perhaps when checking hooks to see if they are executable, Cygwin
>> > port should avoid using the "tricks"?  Compared to paths inside the
>> > worktree the number of hooks is a lot smaller, no?
>> 
>> Hmm. Nowadays, we run hooks through run_hook() in run_command.c. It uses
>
> The problem is that copy_templates_1 does an lstat on the files in
> templates directory and gets 0666 mode (regular file, non-exec) for
> executable file under current Cygwin port. The st_mode of that lstat
> is passed to copy_file mentioned, which is useless now as we use the
> Win32 version of lstat, which doesn't do x-bit.
Ahhh.

I do not mind the patch as a band-aid to make the testsuite pass, so I'll apply your patch as-is. Thanks.

But isn't this something shops that do deploy Cygwin version of git want to see fixed, so that they can have a site-wide policy implemented in the hooks copied from templates? I think we could pass mode 0 to copy_files() and have the function special case it (and allow a platform specific copy_files() implementated by Cygwin). lstat() in the copy_templates_1() codepath is primarily done to see if we need to descend into a directory or symlink() and our use of st.st_mode to pass to copy_files() is a no cost side effect on platforms with x-bit support.

>> access(..., X_OK), not lstat(). We don't play games with access(), do we?
>
> access(..., X_OK) will return -1.

That codepath would also need to be fixed if Cygwin wants to use hooks, I would guess.

Previous: Alex RiesenNext: Alex Riesen
Message 5 of 14 in “disable post-checkout test on Cygwin”
  1. disable post-checkout test on CygwinAlex Riesen, Mar 17, 2009
  2. Junio C HamanoMar 17, 2009
  3. Johannes SixtMar 17, 2009
  4. Alex RiesenMar 17, 2009
  5. Junio C HamanoMar 17, 2009
  6. Define a version of lstat(2) specially for copy operationAlex Riesen, Mar 17, 2009
  7. Mark LevedahlMar 18, 2009
  8. Alex RiesenMar 18, 2009
  9. Junio C HamanoMar 18, 2009
  10. Johannes SixtMar 18, 2009
  11. Junio C HamanoMar 18, 2009
  12. Johannes SixtMar 18, 2009
  13. Junio C HamanoMar 18, 2009
  14. Alex RiesenMar 17, 2009

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.