Mercurial > hg
view contrib/win32/ReadMe.html @ 45095:8e04607023e5
procutil: ensure that procutil.std{out,err}.write() writes all bytes
Python 3 offers different kind of streams and it’s not guaranteed for all of
them that calling write() writes all bytes.
When Python is started in unbuffered mode, sys.std{out,err}.buffer are
instances of io.FileIO, whose write() can write less bytes for
platform-specific reasons (e.g. Linux has a 0x7ffff000 bytes maximum and could
write less if interrupted by a signal; when writing to Windows consoles, it’s
limited to 32767 bytes to avoid the "not enough space" error). This can lead to
silent loss of data, both when using sys.std{out,err}.buffer (which may in fact
not be a buffered stream) and when using the text streams sys.std{out,err}
(I’ve created a CPython bug report for that:
https://bugs.python.org/issue41221).
Python may fix the problem at some point. For now, we implement our own wrapper
for procutil.std{out,err} that calls the raw stream’s write() method until all
bytes have been written. We don’t use sys.std{out,err} for larger writes, so I
think it’s not worth the effort to patch them.
author | Manuel Jacob <me@manueljacob.de> |
---|---|
date | Fri, 10 Jul 2020 12:27:58 +0200 |
parents | 0ab651b5f77c |
children | ed43b6fa847e |
line wrap: on
line source
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Mercurial for Windows</title> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" > <style type="text/css"> <!-- html { font-family: sans-serif; margin: 1em 2em; } p { margin-top: 0.5em; margin-bottom: 0.5em; } pre { margin: 0.25em 0em; padding: 0.5em; background-color: #EEE; border: thin solid #CCC; } .indented { padding-left: 10pt; } --> </style> </head> <body> <h1>Mercurial for Windows</h1> <p>Welcome to Mercurial for Windows!</p> <p> Mercurial is a command-line application. You must run it from the Windows command prompt (or if you're hard core, a <a href="http://www.mingw.org/">MinGW</a> shell). </p> <p class="indented"> <i>Note: the standard <a href="http://www.mingw.org/">MinGW</a> msys startup script uses rxvt which has problems setting up standard input and output. Running bash directly works correctly.</i> </p> <p> For documentation, please visit the <a href="https://mercurial-scm.org/">Mercurial web site</a>. You can also download a free book, <a href="https://book.mercurial-scm.org/">Mercurial: The Definitive Guide</a>. </p> <p> By default, Mercurial installs to <tt>C:\Program Files\Mercurial</tt>. The Mercurial command is called <tt>hg.exe</tt>. </p> <h1>Testing Mercurial after you've installed it</h1> <p> The easiest way to check that Mercurial is installed properly is to just type the following at the command prompt: </p> <pre> hg </pre> <p> This command should print a useful help message. If it does, other Mercurial commands should work fine for you. </p> <h1>Configuration notes</h1> <h4>Default editor</h4> <p> The default editor for commit messages is 'notepad'. You can set the <tt>EDITOR</tt> (or <tt>HGEDITOR</tt>) environment variable to specify your preference or set it in <tt>mercurial.ini</tt>: </p> <pre> [ui] editor = whatever </pre> <h4>Configuring a Merge program</h4> <p> It should be emphasized that Mercurial by itself doesn't attempt to do a Merge at the file level, neither does it make any attempt to Resolve the conflicts. </p> <p> By default, Mercurial will use the merge program defined by the <tt>HGMERGE</tt> environment variable, or uses the one defined in the <tt>mercurial.ini</tt> file. (see <a href="https://mercurial-scm.org/wiki/MergeProgram">MergeProgram</a> on the Mercurial Wiki for more information) </p> <h1>Reporting problems</h1> <p> Before you report any problems, please consult the <a href="https://mercurial-scm.org/">Mercurial web site</a> and see if your question is already in our list of <a href="https://mercurial-scm.org/wiki/FAQ">Frequently Answered Questions</a> (the "FAQ"). </p> <p> If you cannot find an answer to your question, please feel free to send mail to the Mercurial mailing list, at <a href="mailto:mercurial@mercurial-scm.org">mercurial@mercurial-scm.org</a>. <b>Remember</b>, the more useful information you include in your report, the easier it will be for us to help you! </p> <p> If you are IRC-savvy, that's usually the fastest way to get help. Go to <tt>#mercurial</tt> on <tt>irc.freenode.net</tt>. </p> <h1>Author and copyright information</h1> <p> Mercurial was written by <a href="http://www.selenic.com">Matt Mackall</a>, and is maintained by Matt and a team of volunteers. </p> <p> The Windows installer was written by <a href="http://www.serpentine.com/blog">Bryan O'Sullivan</a>. </p> <p> Mercurial is Copyright 2005-2020 Matt Mackall and others. </p> <p> Mercurial is free software; you can redistribute it and/or modify it under the terms of the <a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt">GNU General Public License version 2</a> or any later version. </p> <p> Mercurial is distributed in the hope that it will be useful, but <b>without any warranty</b>; without even the implied warranty of <b>merchantability</b> or <b>fitness for a particular purpose</b>. See the GNU General Public License for more details. </p> </body> </html>