From: Felipe Contreras <felipe.contreras@gmail.com>
To: Amit Bakshi <ambakshi@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] git-remote-hg: set stdout to binary mode on win32
Date: Sun, 19 May 2013 00:33:46 -0500 [thread overview]
Message-ID: <CAMP44s3H5e3ffoA04pdJx-pfKMGiRBTmjAn6NceP+s6_TYo1GA@mail.gmail.com> (raw)
In-Reply-To: <CAFGOX=V0A=2kMpxtNvsjgEtMt=zsm_-zX_DJo0qkV9y1_C4Haw@mail.gmail.com>
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@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
next parent reply other threads:[~2013-05-19 5:34 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CAFGOX=V0A=2kMpxtNvsjgEtMt=zsm_-zX_DJo0qkV9y1_C4Haw@mail.gmail.com>
2013-05-19 5:33 ` Felipe Contreras [this message]
2013-05-19 7:48 ` [PATCH] git-remote-hg: set stdout to binary mode on win32 Junio C Hamano
2013-05-19 11:23 ` Felipe Contreras
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAMP44s3H5e3ffoA04pdJx-pfKMGiRBTmjAn6NceP+s6_TYo1GA@mail.gmail.com \
--to=felipe.contreras@gmail.com \
--cc=ambakshi@gmail.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).