pre-receive hook output invalid characters

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Sorry for resending, but the previous version got dropped from the
main git mailing list due to a HTML-subpart. Converted to plain-text.

On Wed, Oct 31, 2012 at 4:45 PM, Erik Faye-Lund <kusmabite@xxxxxxxxx> wrote:
>
> On Wed, Oct 31, 2012 at 4:24 PM, <mnaoumov@xxxxxxxxx> wrote:
>>
>> If you add pre-receive hook in your git repository with the following
>> content
>>
>> #!/bin/sh
>>
>> echo Message
>> exit 1
>>
>> And then try to push you will get the following
>>
>> The bug is about these strange 3 last characters.
>>
>> Recently I raised a bug for GitExtensions but it seems to be msysgit
>> issue as I could reproduce it from PowerShell as well
>>
>> https://github.com/gitextensions/gitextensions/issues/1313



>
> What you're seeing is most likely a CR (a carriage return character).
> Windows has CRLF new-lines, and Unix uses only LF.
>
> My guess is that echo produces CRLF, and this gets carried through and
> incorrecly displayed.


OK, I can reproduce it in Git Bash now, and by doing "git push 2>&1 | od -c"
I can see that I'm getting "Message\033[K\n".

This looks a little bit puzzling, but the sequence matches ANSI_SUFFIX in
sideband.c. So it seems this is intentional. This dates back to ebe8fa73.

I wonder, shouldn't we check isatty also before assuming ANSI-sequences?

---8<---
diff --git a/sideband.c b/sideband.c
index d5ffa1c..bd3e5a8 100644
--- a/sideband.c
+++ b/sideband.c
@@ -29,7 +29,7 @@ int recv_sideband(const char *me, int in_stream, int out)

  memcpy(buf, PREFIX, pf);
  term = getenv("TERM");
- if (term && strcmp(term, "dumb"))
+ if (isatty(out) && term && strcmp(term, "dumb"))
  suffix = ANSI_SUFFIX;
  else
  suffix = DUMB_SUFFIX;
---8<---

Thoughts?
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]