Felipe Contreras <felipe.contreras@xxxxxxxxx> writes: > Sorry Amit, I assumed this patch made it to the list, but I just > realized it didn't; it doesn't allow HTML, and mails and silently > dropped (I hate that). > > So I'm sending it so the list can see it: > > It seems OK for me, but I would like to try it, and so far I haven't > managed to access Mercurial libraries at all from python scripts in > Windows. What steps did you follow? Thanks for keeping an eye on this part of the system. It seems that having an extra -rc cycle turned out to be not so bad an idea. > 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 >> + >> class Marks: >> >> def __init__(self, path): >> @@ -764,6 +782,9 @@ def main(args): >> else: >> is_tmp = False >> >> + if sys.platform in ['win32','cygwin']: >> + set_binmode(sys.stdout.fileno()) >> + >> gitdir = os.environ['GIT_DIR'] >> dirname = os.path.join(gitdir, 'hg', alias) >> branches = {} >> -- >> 1.8.1 -- 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