On Aug 8, 2007, at 6:25 AM, Brian Downing wrote:
On Wed, Aug 08, 2007 at 12:46:49AM +0200, Steffen Prohaska wrote:
I started to run the tests on cygwin in textmode. I chose the
following setup.
In addition to all the other stuff discussed, I believe you also need
to worry about the binaryness of stdin and stdout.
Looking at:
http://www.cygwin.com/cygwin-ug-net/using-textbinary.html
I think this can be achieved by putting something like:
setmode(0, O_BINARY);
setmode(1, O_BINARY);
at the start of git's main().
I agree. This is my understanding as well.
When I was trying to get this to work, I did this as well as fixing up
open() and fopen() calls as has already been discussed. What got me
to quit, however, was that I never found a decent way to make the Git
shell scripts binary safe, and enough of the system was in shell as to
make it pretty much useless for everyday use.
Did you find a way, maybe not as decent as you wished?
Looking at the examples on the above page:
To illustrate the various rules, we provide scripts to delete
CRs from
files by using the tr program, which can only write to standard
output.
The script
#!/bin/sh
# Remove \r from the file given as argument
tr -d '\r' < "$1" > "$1".nocr
will not work on a text mounted systems because the \r will be
reintroduced on writing. However scripts such as
#!/bin/sh
# Remove \r from the file given as argument
tr -d '\r' | gzip | gunzip > "$1".nocr
work fine. In the first case (assuming the pipes are binary) we
rely
on gunzip to set its output to binary mode, possibly overriding
the
mode used by the shell.
was all it took to convince me this was probably a fool's errand.
Yeah, it looks quite crazy. I started to search for an
option that would force the shell to provide redirection
in binary mode, overriding the standard rules. I found
the igncr option [1], which is not what I need. But
apparently there have been some efforts to deal with
line endings in bash beyond the cygwin standard rules.
Maybe there's a useful option that I haven't found yet.
[1] http://cygwin.com/ml/cygwin-announce/2007-01/msg00015.html
I wound up fixing our software so it would build on a binary mount,
which I decided was a much more sane solution.
Well, our software already builds and I was not even aware
that there is a problem with git on cygwin until I asked
more people to test it. I naively chose the default option
because I didn't have a reason to do otherwise. But
apparently there is an option, and people use this option.
My fear is that the first impression of git is too bad on
Windows if it can't handle textmode. I can't recommend it.
People will make me responsible for recommending them a
tool that only cause troubles or forces them to reconfigure
their cygwin, which worked for them for years. I even
remember that we had a policy to explicitly set cygwin
to textmode to avoid problems with cvs commits in combination
with Visual Studio 6.
Steffen
-
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