Hi, 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? 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 -- 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