--bundle 3 leaves all of the compiled C extensions and other DLLs outside of
the library.zip, so we no longer add the installer folder to the system PATH.
Instead, we now ship a small bin/hg.cmd and it is placed in the PATH.
Switching to py2exe --bundle 3 is necessary because the higher bundle options
are not supported on x64.
The Python 'is' operator compares object identity, so it should
definitely not be applied to string or number literals, which Python
implementations are free to represent with a temporary object.
This should catch the following kinds of bogus expressions (examples):
x is 'foo' x is not 'foo'
x is "bar" x is not "bar"
x is 42 x is not 42
x is -36 x is not -36
As originally proposed by Martin Geisler, amended with catching
negative numbers.
This syntax file adds:
* Highlighting of comments, output, and commands (with sh highlighting
in commands).
* Folding for output and blocks of commands+output.
* Setting tab/indent settings to 2 spaces, because that's what's defined by the
unified test file format.
As stated in http://msdn.microsoft.com/en-us/library/cc664727.aspx, when you
compile an application with MSVC 2008 SP1 it is bound by default to the
original CRT version (9.0.21022.8). This is the case for Python 2.6 up to 3.1.
If the wrong CRT version is embedded in the Inno Setup installer, with a PC
that does not have the MSVC 2008 redistributable package installed, hg will
refuse to launch with an error: "the system cannot execute the specified
program".
This patch adds a fixer that accounts for changes in python packages, as the
framework provided by lib2to3 is only able to track changes in module names.
This fixer (hopefully) can fix any change in one-level hierarchies.
To exemplify, this fixer can successfully change an import from
"email.MIMEMultipart" to "email.mime.multipart".
This patch implements a script that inherits most of its functionality from
hg's setup.py and adds support to calling 2to3 during invocation with python3.
The motivation of having this script around is twofold:
1) It enables py3k crazies to test mercurial in py3k and, hopefully, patch it
more easily, so it can improve the py3k support to eventually run there.
2) Being separated from the main setup.py eliminates the need to make hg's
setup.py even more cluttered, and enables "independent" development until
the port is done.
Some considerations about the structure of this patch:
Mercurial already overrides the behavior of build_py, this patch tweaks it a bit
more to add support to call 2to3 with a custom fixer* location for Mercurial.
There is also a need of having the core C modules built *before* the
translation process starts, otherwise 2to3 will think those are global modules.
* A fixer is a python module that transforms python 2.x code in python 3.x
code.
This patch implement a fixer that replaces all calls to the '%' when bytes
arguments are used to a call to bytesformatter(), a function that knows how to
format byte strings. As one can't be sure if a formatting call is done when
only variables are used in a '%' call, these calls are also translated. The
bytesformatter, in runtime, makes sure to return the "raw" % operation if
that's what was intended.
This patch adds some ugly constructs. The first of them is bytesformatter, a
function that formats strings like when '%' is called. The main motivation for
this function is py3k's strange behavior:
>>> 'foo %s' % b'bar'
"foo b'bar'"
>>> b'foo %s' % b'bar'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for %: 'bytes' and 'bytes'
>>> b'foo %s' % 'bar'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for %: 'bytes' and 'str'
In other words, if we can't format bytes with bytes, and recall that all
mercurial strings will be converted by a fixer, then things will break badly if
we don't take a similar approach.
The other addition with this patch is that the os.environ dictionary is
monkeypatched to have bytes items. Hopefully this won't be needed in the
future, as python 3.2 might get a os.environb dictionary that holds bytes
items.
This patch implements a 2to3 fixer that converts all plain strings in a python
source file to byte strings syntax. Example:
foo = 'Normal string'
would become
foo = b'Normal string'
The motivation behind this fixer can be found in
http://selenic.com/pipermail/mercurial-devel/2010-June/022363.html or, in other
words: the current hg source assumes that _most_ strings are "meant" to be byte
sequences, so it makes sense to make the convertion implemented by this patch.
As mentioned above, not all mercurial modules want to use strings as bytes,
examples include i18n (which uses unicode), and demandimport (in py3k, module
names are normal strings, thus unicode, and there's no need for a convertion).
Therefore, these modules are blacklisted in the fixer. There are also a few
functions that can take only unicode arguments, thus the convertion shouldn't
be done for those.
The old check would only detect any/all at the beginning of a line.
The regexp was probably just modeled after the preceding regexp which
(correctly) finds the 'with' keyword at the beginning of a line.
We now complain about 'any(' and 'all(' anywhere in a line, unless it
is preceded by 'def'. This allows us to define our own compatibility
wrapper in util and use 'util.any(' in the code.
Otherwise, the shrunken index file always has mode 0600 thanks to
mkstemp(). This is annoying on a server, where multiple users may need
to read/write the manifest. chmod()ing the data file is not strictly
necessary, but it's nice for consistency.
Even though the name of the project is Docutils, most packagers use
the package name python-docutils to fit into the naming scheme of
other packages written in Python. The name is used by Fedora, EPEL,
DAG, Mandriva, and a few other distributions.
The default encoding and encoding mode are computed at runtime and can
vary from system to system. The two remaining default values in the
completion help texts (number of directories to strip on import and
default bundle name) are fixed in the source code.
Overwriting instead of appending to the file removes the [defaults]
section put into the file by run-tests.py.
It also defeats the --inotify option to run-tests.py.
(Nothing was broken yet, but the lack of -d "0 0" cause changeset
hashes to change unexpectedly in a test case I was editing.)
Another tool had -10 already. Since 'merge' is clearly a worst-case
tool (internal), lowering to -100 ensures there's plenty of room for
slightly better cases.
The version is already shown in the title bar of the feature selection dialog
and in the text of the welcome dialog. It's unusual for Windows programs to repeat
the version in the root feature.
This helps external tool customisation. The logfunc argument must be a
function called to report errors. A new logger class is also added to
keep the old behaviour by default.
Without this, Mercurial is registered under the installed programs
on Windows as just 'Mercurial', which is unusual for a program to do
on Windows.
Including the version in the registered product name registers the
software in the Windows control panel of installed programs as, for
example, 'Mercurial 1.5' (for 1.5), or as
'Mercurial 1.5.1032' for a stable 1.5+32-d9a6645d6d9b
'Mercurial 1.5.5080' for a unstable 1.5+80-1119076dd3e8
when using http://bitbucket.org/tortoisehg/thg-winbuild to create
daily builds.
Furthermore, the install UI texts in the built installer database (MSI
file) are more clear on what the user is about to install, as, for example,
the text in the initial installer dialog now reads
"The Setup Wizard will install Mercurial 1.5 on your computer"
instead of just
"The Setup Wizard will install Mercurial on your computer"
Based on a patch by Benoit Boissinot, adapted to the pluggable sort
algorithm design. toposort_reversepostorder() is a very good
performer; it's designed to recreate what the revlog would have looked
like if Mercurial had parent deltas now. toposort_postorderreverse()
is unstable and very inconsistent, but perhaps with some work it could
be made better.
This is simply a convenience to the user, they can click next until the
installer goes away. Optimally, the checkbox would be hidden or removed,
but that requires rewriting the UI.
Moving the file from the misc directory of the thg-winbuild repo, which
uses mercurial's contrib/wix.
This file is displayed by the install UI sequence, so it belongs to the
WiX sources quite closely.
It happens to be installed by the msi installer, too.
1) adds a :DiffReview command to review code changes
in the current workspace.
2) removes the need to have patchutils (specifically filterdiff)
installed on the system by implementing patch extraction in
pure vim script.
* meld - provide labels for the three panes
* diffmerge - add registry key for detection, improve arguments
* beyond compare - add linux version
* winmerge - improve arguments
* araxis - add configuration, including registry key for detection
* misc - provide default priorities for more tools
check-code is a simple regex-based framework for checking our code and
tests for common style and portability errors. Currently, it knows a
fair amount about our Python and C style, and a little about common
shell script portability problems.
* Require Python 2.4 or later
* Note that hgk uses tk - but don't require it
* Remove bashism to support ksh
* Install mq.el
* Handle uncompressed man pages