threads / discuss / 2105

cygwin: t3200-branch.sh fails with "List form of pipe open not implemented at -e line 22."

Subject: cygwin: t3200-branch.sh fails with "List form of pipe open not implemented at -e line 22."

## tl;dr

6 messages between Oct 14, 2005 and Oct 17, 2005.

replies: 5people: 3as markdown or json

Alex Riesen· Oct 14, 2005, 12:46 UTC · lore
Now, how broken is that:

The message comes from one of the hooks, which are executed even though they never meant to, because cygwin apparently uses file content or name to detect executability (on FAT).

I just remove the hooks from repositories atm.
Junio C Hamano· Oct 14, 2005, 16:09 UTC · re: Alex Riesen · lore

Re: cygwin: t3200-branch.sh fails with "List form of pipe open not implemented at -e line 22."

Alex Riesen <raa.lkml@gmail.com> writes:
Show 7 quoted lines
> Now, how broken is that:
>
> The message comes from one of the hooks, which are executed even
> though they never meant to, because cygwin apparently uses file
> content or name to detect executability (on FAT).
>
> I just remove the hooks from repositories atm.
Ah, that indeed is broken.
We probably should fix it at two levels.

Unless a test is trying to make sure the hook mechanism works, I think we should not have them in the t/trash/ test repository. The initial git-init-db done at the end of t/test-lib.sh should be changed to run with an explicit --template= parameter to not copy templates from random places. If somebody is going to do this and supply a tested patch to me, it will also be nice to add tests to specifically check the hook mechanism while she is at it.

I think the original idea of using executable bit to control whether the hook is enabled or not is still sound, but it may be safer to have hooks in templates to have a suffix such as .sample in their names *and* be executable --- the set of hooks copied from default templates are still disabled, but now instead of asking users to "chmod +x foo-hook", we ask them to "mv foo-hook.sample foo-hook" if she wants to enable it.

H. Peter Anvin· Oct 14, 2005, 17:57 UTC · re: Alex Riesen · lore

Re: cygwin: t3200-branch.sh fails with "List form of pipe open not implemented at -e line 22."

Alex Riesen wrote:
Show 7 quoted lines
> Now, how broken is that:
> 
> The message comes from one of the hooks, which are executed even
> though they never meant to, because cygwin apparently uses file
> content or name to detect executability (on FAT).
> 
> I just remove the hooks from repositories atm.
I think the bottom line is "don't use FAT".
	-hpa
Alex Riesen· Oct 15, 2005, 21:18 UTC · re: H. Peter Anvin · lore

Re: cygwin: t3200-branch.sh fails with "List form of pipe open not implemented at -e line 22."

H. Peter Anvin, Fri, Oct 14, 2005 19:57:29 +0200:
Show 10 quoted lines
> >Now, how broken is that:
> >
> >The message comes from one of the hooks, which are executed even
> >though they never meant to, because cygwin apparently uses file
> >content or name to detect executability (on FAT).
> >
> >I just remove the hooks from repositories atm.
> 
> I think the bottom line is "don't use FAT".
> 

I'm afraid I have to. NTFS isn't much better (newly created files still have no correct attribute) and is slower (sometimes much slower). Not that I have a choice, anyway: it's a typical corporate workstation locked as down as possible.

Junio C Hamano· Oct 16, 2005, 07:46 UTC · re: Alex Riesen · lore

Re: cygwin: t3200-branch.sh fails with "List form of pipe open not implemented at -e line 22."

Alex Riesen <raa.lkml@gmail.com> writes:
>> >The message comes from one of the hooks, which are executed even
>> >though they never meant to, because cygwin apparently uses file
>> >content or name to detect executability (on FAT).

Is this one of the hooks we ship as examples? If so, that means worse brokenness than just test failing. It means that the hook is not usable in your environment.

I presume it is this line in pre-commit sample hook:
    open $fh, "-|", qw(git-diff-index -p -M --cached HEAD);

Is Perl on Cygwin incapable of handle this in general, or is it just what is on your machine being behind?

In the meantime, I've changed two things:
 - Earlier, tests run in a trash/ repository that was
   initialized with user's random templates.  This was *wrong*.
   It now uses freshly built templates that came from the
   source.
 - Further, hooks are disabled in the trash/ repository used for
   tests.  When we later add tests for hooks (HINTS, anybody
   ;-)), they can add their own anyway.
Alex Riesen· Oct 17, 2005, 08:40 UTC · re: Junio C Hamano · lore

Re: cygwin: t3200-branch.sh fails with "List form of pipe open not implemented at -e line 22."

On 10/16/05, Junio C Hamano <junkio@cox.net> wrote:
Show 16 quoted lines
> Alex Riesen <raa.lkml@gmail.com> writes:
>
> >> >The message comes from one of the hooks, which are executed even
> >> >though they never meant to, because cygwin apparently uses file
> >> >content or name to detect executability (on FAT).
>
> Is this one of the hooks we ship as examples?  If so, that
> means worse brokenness than just test failing.  It means that
> the hook is not usable in your environment.
>
> I presume it is this line in pre-commit sample hook:
>
>     open $fh, "-|", qw(git-diff-index -p -M --cached HEAD);
>
> Is Perl on Cygwin incapable of handle this in general, or is it
> just what is on your machine being behind?
ActiveState's Windows port of Perl 5.8.6.

$ perl -e 'open $fh, "-|", qw(git-diff-index -p -M --cached HEAD)' List form of pipe open not implemented at -e line 1.

I think it is not implemented because of Win32 lacking fork(2).

← back to recent threads