summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Harding <dharding@gmail.com>2012-09-30 07:24:16 +0100
committerAndrey Rahmatullin <wrar@wrar.name>2014-02-06 23:13:37 +0600
commitba675f93943bc6bfdc40eff68a57c95cd8ccf664 (patch)
tree674aa73f3a5bd27de02a493d26514679d7932573
parent9aec831d71876db0e638f90e641553ba9890e770 (diff)
downloadhg-fast-export-ba675f93943bc6bfdc40eff68a57c95cd8ccf664.tar.gz
Make hg-fast-export (actually) work on Windows
Because on Windows sys.stdout is initially in text mode, any LF characters written to it will be transformed to CRLF, which causes git to blow up. This change uses Windows platform-specific code to change sys.stdout to binary mode.
-rwxr-xr-xhg-fast-export.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/hg-fast-export.py b/hg-fast-export.py
index 0e0fa87..1fe2999 100755
--- a/hg-fast-export.py
+++ b/hg-fast-export.py
@@ -11,6 +11,14 @@ import re
import sys
import os
+if sys.platform == "win32":
+ # On Windows, sys.stdout is initially opened in text mode, which means that
+ # when a LF (\n) character is written to sys.stdout, it will be converted
+ # into CRLF (\r\n). That makes git blow up, so use this platform-specific
+ # code to change the mode of sys.stdout to binary.
+ import msvcrt
+ msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
+
# silly regex to catch Signed-off-by lines in log message
sob_re=re.compile('^Signed-[Oo]ff-[Bb]y: (.+)$')
# insert 'checkpoint' command after this many commits or none at all if 0