annotate contrib/win32/mercurial.ini @ 20742:3681de20b0a7

parsers: fail fast if Python has wrong minor version (issue4110) This change causes an informative ImportError to be raised when importing the parsers extension module if the minor version of the currently-running Python interpreter doesn't match that of the Python used when compiling the extension module. This change also exposes a parsers.versionerrortext constant in the C implementation of the module. Its presence can be used to determine whether this behavior is present in a version of the module. The value of the constant is the leading text of the ImportError raised and is set to "Python minor version mismatch". Here is an example of what the new error looks like: Traceback (most recent call last): File "test.py", line 1, in <module> import mercurial.parsers ImportError: Python minor version mismatch: The Mercurial extension modules were compiled with Python 2.7.6, but Mercurial is currently using Python with sys.hexversion=33883888: Python 2.5.6 (r256:88840, Nov 18 2012, 05:37:10) [GCC 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66))] at: /opt/local/Library/Frameworks/Python.framework/Versions/2.5/Resources/ Python.app/Contents/MacOS/Python The reason for raising an error in this scenario is that Python's C API is known not to be compatible from minor version to minor version, even if sys.api_version is the same. See for example this Python bug report about incompatibilities between 2.5 and 2.6+: http://bugs.python.org/issue8118 These incompatibilities can cause Mercurial to break in mysterious, unforeseen ways. For example, when Mercurial compiled with Python 2.7 was run with 2.5, the following crash occurred when running "hg status": http://bz.selenic.com/show_bug.cgi?id=4110 After this crash was fixed, running with Python 2.5 no longer crashes, but the following puzzling behavior still occurs: $ hg status ... File ".../mercurial/changelog.py", line 123, in __init__ revlog.revlog.__init__(self, opener, "00changelog.i") File ".../mercurial/revlog.py", line 251, in __init__ d = self._io.parseindex(i, self._inline) File ".../mercurial/revlog.py", line 158, in parseindex index, cache = parsers.parse_index2(data, inline) TypeError: data is not a string which can be reproduced more simply with: import mercurial.parsers as parsers parsers.parse_index2("", True) Both the crash and the TypeError occurred because the Python C API's PyString_Check() returns the wrong value when the C header files from Python 2.7 are run with Python 2.5. This is an example of an incompatibility of the sort mentioned in the Python bug report above. Failing fast with an informative error message results in a better user experience in cases like the above. The information in the ImportError also simplifies troubleshooting for those on Mercurial mailing lists, the bug tracker, etc. This patch only adds the version check to parsers.c, which is sufficient to affect command-line commands like "hg status" and "hg summary". An idea for a future improvement is to move the version-checking C code to a more central location, and have it run when importing all Mercurial extension modules and not just parsers.c.
author Chris Jerdonek <chris.jerdonek@gmail.com>
date Wed, 04 Dec 2013 20:38:27 -0800
parents a5354990502d
children 5a3197cbe415
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9322
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
1 ; System-wide Mercurial config file.
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
2 ;
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
3 ; !!! Do Not Edit This File !!!
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
4 ;
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
5 ; This file will be replaced by the installer on every upgrade.
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
6 ; Editing this file can cause strange side effects on Vista.
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
7 ;
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
8 ; http://bitbucket.org/tortoisehg/stable/issue/135
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
9 ;
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
10 ; To change settings you see in this file, override (or enable) them in
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
11 ; your user Mercurial.ini file, where USERNAME is your Windows user name:
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
12 ;
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
13 ; XP or older - C:\Documents and Settings\USERNAME\Mercurial.ini
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
14 ; Vista or later - C:\Users\USERNAME\Mercurial.ini
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
15
4749
778bab992732 Convert default mercurial.ini file to Windows line endings
Lee Cantey <lcantey@gmail.com>
parents: 3432
diff changeset
16
5142
2ffe3e2a1ac2 merge with crew-stable
Thomas Arendsen Hein <thomas@intevation.de>
parents: 4749 5081
diff changeset
17 [ui]
9322
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
18 ; editor used to enter commit logs, etc. Most text editors will work.
4749
778bab992732 Convert default mercurial.ini file to Windows line endings
Lee Cantey <lcantey@gmail.com>
parents: 3432
diff changeset
19 editor = notepad
7662
8aa338cd0df3 Update mercurial.ini file packaged in win32 installer
Pascal Quantin <pascal.quantin@wavecom.com>
parents: 5142
diff changeset
20 ; show changed files and be a bit more verbose if True
8aa338cd0df3 Update mercurial.ini file packaged in win32 installer
Pascal Quantin <pascal.quantin@wavecom.com>
parents: 5142
diff changeset
21 ; verbose = True
9322
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
22
7662
8aa338cd0df3 Update mercurial.ini file packaged in win32 installer
Pascal Quantin <pascal.quantin@wavecom.com>
parents: 5142
diff changeset
23 ; username data to appear in commits
8aa338cd0df3 Update mercurial.ini file packaged in win32 installer
Pascal Quantin <pascal.quantin@wavecom.com>
parents: 5142
diff changeset
24 ; it usually takes the form: Joe User <joe.user@host.com>
8aa338cd0df3 Update mercurial.ini file packaged in win32 installer
Pascal Quantin <pascal.quantin@wavecom.com>
parents: 5142
diff changeset
25 ; username = Joe User <j.user@example.com>
8aa338cd0df3 Update mercurial.ini file packaged in win32 installer
Pascal Quantin <pascal.quantin@wavecom.com>
parents: 5142
diff changeset
26
9322
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
27 ; In order to push/pull over ssh you must specify an ssh tool
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
28 ;ssh = "C:\Progra~1\TortoiseSVN\bin\TortoisePlink.exe" -ssh -2
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
29 ;ssh = C:\cygwin\bin\ssh
4749
778bab992732 Convert default mercurial.ini file to Windows line endings
Lee Cantey <lcantey@gmail.com>
parents: 3432
diff changeset
30
9322
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
31 ;
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
32 ; For more information about mercurial extensions, start here
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
33 ; http://www.selenic.com/mercurial/wiki/index.cgi/UsingExtensions
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
34 ;
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
35 ; Extensions shipped with Mercurial
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
36 ;
4749
778bab992732 Convert default mercurial.ini file to Windows line endings
Lee Cantey <lcantey@gmail.com>
parents: 3432
diff changeset
37 [extensions]
9322
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
38 ;acl =
19512
f84036df71ad win32: update Inno Setup installer script and extensions list
Pascal Quantin <pascal.quantin@gmail.com>
parents: 17278
diff changeset
39 ;blackbox =
9322
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
40 ;bugzilla =
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
41 ;children =
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
42 ;churn =
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
43 ;color =
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
44 ;convert =
11269
5f01fd602542 win32text: mark this extension as deprecated
Martin Geisler <mg@aragost.com>
parents: 10474
diff changeset
45 ;eol =
9322
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
46 ;extdiff =
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
47 ;fetch =
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
48 ;gpg =
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
49 ;hgcia =
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
50 ;hgk =
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
51 ;highlight =
17278
ef5d70655143 win32: update Inno Setup installer extensions list
Pascal Quantin <pascal.quantin@gmail.com>
parents: 16242
diff changeset
52 ;histedit =
9322
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
53 ;interhg =
17278
ef5d70655143 win32: update Inno Setup installer extensions list
Pascal Quantin <pascal.quantin@gmail.com>
parents: 16242
diff changeset
54 ;largefiles =
9322
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
55 ;keyword =
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
56 ;mq =
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
57 ;notify =
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
58 ;pager =
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
59 ;patchbomb =
10474
601a9d67825a Add progress extension to win32 default config file
Pascal Quantin <pascal.quantin@gmail.com>
parents: 9322
diff changeset
60 ;progress =
9322
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
61 ;purge =
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
62 ;rebase =
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
63 ;record =
17278
ef5d70655143 win32: update Inno Setup installer extensions list
Pascal Quantin <pascal.quantin@gmail.com>
parents: 16242
diff changeset
64 ;relink =
ef5d70655143 win32: update Inno Setup installer extensions list
Pascal Quantin <pascal.quantin@gmail.com>
parents: 16242
diff changeset
65 ;schemes =
ef5d70655143 win32: update Inno Setup installer extensions list
Pascal Quantin <pascal.quantin@gmail.com>
parents: 16242
diff changeset
66 ;share =
19946
b7aec4c881d1 win32: add shelve extension to mercurial.ini
Pascal Quantin <pascal.quantin@gmail.com>
parents: 19512
diff changeset
67 ;shelve =
9322
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
68 ;transplant =
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
69 ;win32mbcs =
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
70 ;zeroconf =
4749
778bab992732 Convert default mercurial.ini file to Windows line endings
Lee Cantey <lcantey@gmail.com>
parents: 3432
diff changeset
71
9322
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
72 ;
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
73 ; Define external diff commands
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
74 ;
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
75 [extdiff]
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
76 ;cmd.bc3diff = C:\Program Files\Beyond Compare 3\BCompare.exe
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
77 ;cmd.vdiff = C:\Progra~1\TortoiseSVN\bin\TortoiseMerge.exe
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
78 ;cmd.vimdiff = gvim.exe
16242
55174ab81973 extdiff: escape filenames with vim/DirDiff and make quoting work with Windows
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14159
diff changeset
79 ;opts.vimdiff = -f "+next" "+execute 'DirDiff' fnameescape(argv(0)) fnameescape(argv(1))"
9322
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
80
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
81
7663
b0a0eb28a933 Package hgk Tcl/Tk script in win32 installer
Pascal Quantin <pascal.quantin@wavecom.com>
parents: 7662
diff changeset
82 [hgk]
b0a0eb28a933 Package hgk Tcl/Tk script in win32 installer
Pascal Quantin <pascal.quantin@wavecom.com>
parents: 7662
diff changeset
83 ; Replace the following with your path to hgk, uncomment it and
9322
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
84 ; install ActiveTcl (or another win32 port like tclkit)
7663
b0a0eb28a933 Package hgk Tcl/Tk script in win32 installer
Pascal Quantin <pascal.quantin@wavecom.com>
parents: 7662
diff changeset
85 ; path="C:\Program Files\Mercurial\Contrib\hgk.tcl"
9322
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
86 ; vdiff=vdiff
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
87
4749
778bab992732 Convert default mercurial.ini file to Windows line endings
Lee Cantey <lcantey@gmail.com>
parents: 3432
diff changeset
88
9322
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
89 ;
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
90 ; The git extended diff format can represent binary files, file
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
91 ; permission changes, and rename information that the normal patch format
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
92 ; cannot describe. However it is also not compatible with tools which
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
93 ; expect normal patches. so enable git patches at your own risk.
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
94 ;
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
95 [diff]
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
96 ;git = false
81900431589f mercurial.ini: provide more useful info
Steve Borho <steve@borho.org>
parents: 7663
diff changeset
97 ;nodates = false
7662
8aa338cd0df3 Update mercurial.ini file packaged in win32 installer
Pascal Quantin <pascal.quantin@wavecom.com>
parents: 5142
diff changeset
98