On Mon, Jan 28, 2013 at 4:13 PM, Amit Bakshi <ambakshi@xxxxxxxxx> wrote: > git clone hangs on windows (msysgit/cygwin), and > file.write would return errno 22 inside of mercurial's > windows.winstdout wrapper class. This patch sets > stdout's mode to binary, fixing both issues. > --- > contrib/remote-helpers/git-remote-hg | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) > > diff --git a/contrib/remote-helpers/git-remote-hg > b/contrib/remote-helpers/git-remote-hg > index 328c2dc..95f4c1f 100755 > --- a/contrib/remote-helpers/git-remote-hg > +++ b/contrib/remote-helpers/git-remote-hg > @@ -62,6 +62,24 @@ def get_config(config): > output, _ = process.communicate() > return output > > +# > +# On Windows (msysgit/cygwin) have to set stdout to binary > +# mode (_O_BINARY is 32768). Otherwise clone hangs, and pushing > +# to remote fails when doing a write to mercurial's wrapper > +# windows.winstdout wrapper class. > +# > +def set_binmode(fd): > + try: > + if sys.platform == "win32": > + import msvcrt > + msvcrt.setmode(fd, os.O_BINARY) > + elif sys.platform == 'cygwin': > + import ctypes > + msvcrt = ctypes.CDLL('msvcrt.dll') > + msvcrt._setmode(fd, 32768) # On Cygwin os.O_BINARY is different > + except OSError: > + pass I tried many things, and it seems it's true that we need to set the binary mode in Windows, but it seemed to work fine cygwin. I saw in many places the workaround for 'win32', but I didn't find the one for 'cygwin'. Where did you find it? Did you test in cygwin? Is it needed there? Cheers. -- Felipe Contreras -- 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