Re: [PATCH] git-remote-hg: set stdout to binary mode on win32

2013-05-19 Thread Junio C Hamano
Felipe Contreras felipe.contre...@gmail.com 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 ambak...@gmail.com 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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] git-remote-hg: set stdout to binary mode on win32

2013-05-19 Thread Felipe Contreras
On Mon, Jan 28, 2013 at 4:13 PM, Amit Bakshi ambak...@gmail.com 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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] git-remote-hg: set stdout to binary mode on win32

2013-05-18 Thread Felipe Contreras
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 ambak...@gmail.com 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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html