FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 13 Nov 2013 15:55:30 +0900] rev 20176
subrepo: check phase of state in each subrepositories before committing
Before this patch, phase of newly created commit is determined by
"phases.new-commit" configuration regardless of phase of state in each
subrepositories.
For example, this may cause the "public" revision in the parent
repository referring the "secret" one in subrepository.
This patch checks phase of state in each subrepositories before
committing in the parent, and aborts or changes phase of newly created
commit if subrepositories have more restricted phase than the parent.
This patch uses "follow" as default value of "phases.checksubrepos"
configuration, because it can keep consistency between phases of the
parent and subrepositories without breaking existing tool chains.
Matt Mackall <mpm@selenic.com> [Mon, 16 Dec 2013 12:59:32 -0600] rev 20175
merge with crew
Augie Fackler <raf@durin42.com> [Sat, 14 Dec 2013 12:48:12 -0500] rev 20174
http: backout
181108726ea5, which breaks on Python 2.4
Augie Fackler <raf@durin42.com> [Sat, 14 Dec 2013 11:58:26 -0500] rev 20173
test-module-imports: try and detect virtualenv breakage (
issue4129)
virtualenvs (among other things) break the stdlib module detection in
the import checker, and I don't see a good way to work around that for
now.
Stéphane Klein <contact@stephane-klein.info> [Mon, 25 Nov 2013 17:18:12 +0100] rev 20172
http: reuse authentication info after the first failed request (
issue3567)
Context: mercurial access to repository server with http access, and this
server is protected by basic auth.
Before patch:
* mercurial try an anonymous access to server, server return 401 response and
mercurial resend request with login / password information
After patch:
* mercurial try an anonymous access to server, server return 401
response. For all subsequent requests, mercurial keep in memory this
information (this server need basic auth information).
This patch reduce the number of http access against mercurial server.
Example, before patch :
10.10.168.170 - - [25/Oct/2013:15:44:51 +0200] "GET /hg/testagt?cmd=capabilities
HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:44:52 +0200] "GET /hg/testagt?cmd=capabilities
HTTP/1.1" 200 147 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:00 +0200] "GET /hg/testagt?cmd=capabilities
HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:01 +0200] "GET /hg/testagt?cmd=capabilities
HTTP/1.1" 200 147 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:03 +0200] "GET /hg/testagt?cmd=batch
HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:04 +0200] "GET /hg/testagt?cmd=batch
HTTP/1.1" 200 42 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:06 +0200] "GET /hg/testagt?cmd=getbundle
HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:07 +0200] "GET /hg/testagt?cmd=getbundle
HTTP/1.1" 200 61184 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:09 +0200] "GET /hg/testagt?cmd=listkeys
HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:10 +0200] "GET /hg/testagt?cmd=listkeys
HTTP/1.1" 200 15 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:12 +0200] "GET /hg/testagt?cmd=listkeys
HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:12 +0200] "GET /hg/testagt?cmd=listkeys
HTTP/1.1" 200 - "-" "mercurial/proto-1.0"
Example after patch :
10.10.168.170 - - [28/Oct/2013:11:49:14 +0100] "GET /hg/testagt?cmd=capabilities
HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
10.10.168.170 - - [28/Oct/2013:11:49:15 +0100] "GET /hg/testagt?cmd=capabilities
HTTP/1.1" 200 147 "-" "mercurial/proto-1.0"
10.10.168.170 - - [28/Oct/2013:11:49:17 +0100] "GET /hg/testagt?cmd=batch
HTTP/1.1" 200 42 "-" "mercurial/proto-1.0"
10.10.168.170 - - [28/Oct/2013:11:49:19 +0100] "GET /hg/testagt?cmd=getbundle
HTTP/1.1" 200 61184 "-" "mercurial/proto-1.0"
10.10.168.170 - - [28/Oct/2013:11:49:22 +0100] "GET /hg/testagt?cmd=listkeys
HTTP/1.1" 200 15 "-" "mercurial/proto-1.0"
10.10.168.170 - - [28/Oct/2013:11:49:24 +0100] "GET /hg/testagt?cmd=listkeys
HTTP/1.1" 200 - "-" "mercurial/proto-1.0"
In this last example, you can see only one 401 response.
Prasoon Shukla <prasoon92.iitr@gmail.com> [Thu, 12 Dec 2013 12:25:56 +0530] rev 20171
record: --user/-u now works with record when ui.username not set (
issue3857)
The -u flag didn't work when ui.username was not set and resulted in an
abort message. This was fixed by checking for the 'user' key in the opts
dictionary. If the key is present, the step causing the exception is not
executed.
Steve Hoelzer <shoelzer@gmail.com> [Wed, 11 Dec 2013 11:33:58 -0600] rev 20170
help: fix formatting of template example
Matt Mackall <mpm@selenic.com> [Fri, 13 Dec 2013 17:23:02 -0600] rev 20169
merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 04 Dec 2013 13:42:28 -0600] rev 20168
hgweb: avoid initialization race (
issue3953)
Matt Mackall <mpm@selenic.com> [Wed, 11 Dec 2013 18:33:42 -0600] rev 20167
mpatch: rewrite pointer overflow checks
Chris Jerdonek <chris.jerdonek@gmail.com> [Mon, 02 Dec 2013 07:49:49 -0800] rev 20166
parsers: clarify documentation of test-parseindex2.py
This change updates and improves the description of test-parseindex2.py.
In particular, it removes language that can be interpreted to mean that the
test module checks only the C implementation of parsers.parse_index2().
Rather, the module checks parsers.parse_index2(), which can be either the
C or pure Python implementation, depending on which version is being used.
As of
e57c532c3835, the module also does more than just compare the return
value with the original Python implementation.
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 21:24:48 -0600] rev 20165
merge with stable
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 21:24:26 -0600] rev 20164
tests: fix missing import in check-translations
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 20:54:02 -0600] rev 20163
merge with stable
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 20:51:15 -0600] rev 20162
Added signature for changeset
209e04a06467
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 20:51:12 -0600] rev 20161
Added tag 2.8.1 for changeset
209e04a06467
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 20:47:09 -0600] rev 20160
merge with stable
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 20:46:36 -0600] rev 20159
parsers: backout version mismatch detection from
21dafd8546d1
This introduced mandatory recompilations and breaks pure mode in tests
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 20:39:11 -0600] rev 20158
tests: fix Mac doctest escape code garbage for check-translations
Wagner Bruna <wbruna@yahoo.com> [Sun, 01 Dec 2013 18:26:42 -0200] rev 20157
i18n-pt_BR: synchronized with
734ff413eb7e
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 14:10:53 -0600] rev 20156
merge with stable
Chris Jerdonek <chris.jerdonek@gmail.com> [Fri, 29 Nov 2013 12:36:28 -0800] rev 20155
parsers: fail fast if Python has wrong minor version (
issue4110)
This change causes an informative ImportError to be raised when importing
the extension module parsers if the minor version of the currently-running
Python interpreter doesn't match that of the Python that was used when
compiling the extension module. 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 will result in a better
user experience in cases like the above. The information in the ImportError
will also simplify 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.
Andrew Shadura <andrew@shadura.me> [Sun, 01 Dec 2013 13:53:24 -0600] rev 20154
hgk: fix tag list parser (
issue4101)
As tags may have embedded spaces, and "hg tags" command doesn't escape them,
the output of the command doesn't make a well-formed list, so we can't just
iterate over it. Instead, apply a simple regexp to transform it to a list
which we actually use. Line boundary matching should be enabled.
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 13:45:00 -0600] rev 20153
merge with i18n
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 27 Nov 2013 22:47:32 +0900] rev 20152
i18n: add the tool to check Mercurial specific translation problems in *.po
Existing tool like "msgfmt --check" can check typical translation
problems (missing "%s" in msgstr, for example), but can't check
Mercurial specific ones.
For example, "msgfmt --check" can't check whether the translated
string given to "ui.promptchoice()" is correct or not, even though
problems like below cause run-time error or unexpected behavior:
- less or more choices than msgid,
- choices without '&', or
- choices with '&' followed by none
This patch adds the tool to check Mercurial specific translation
problems in *.po files.
Santiago Pay=C3=A0 i Miralta <santiagopim@gmail.com> [Wed, 27 Nov 2013 22:32:01 +0100] rev 20151
help: fix backwards bisect help example
Durham Goode <durham@fb.com> [Tue, 26 Nov 2013 16:30:52 -0800] rev 20150
unshelve: add tests for unknown files
Adds a basic test for shelving/unshelving with an unknown file present.
Adds a test for unshelving on top of an existing unknown file.
Durham Goode <durham@fb.com> [Tue, 26 Nov 2013 16:23:05 -0800] rev 20149
unshelve: don't commit unknown files during unshelve (
issue4113)
Previously, unshelve would temporarily commit unknown files (via addremove) in
an attempt to allow unshelving into unknown files. This produced unexpected
results, like the file time stamp changing and a .i file being created.
This change makes it no longer use addremove. It ignores unknown files
completely. If an unshelve would overwrite an unknown file, the unknown file is
moved to *.orig
The shelve continue/abort format is changed, but it just removes stuff from the
end of the file, so it can still read the old format.
Mads Kiilerich <madski@unity3d.com> [Tue, 26 Nov 2013 15:38:33 +0100] rev 20148
largefiles: don't crash on 'local renamed directory' actions
a12798938721 introduced splitstandin on all action filenames. It would however
crash on 'd' actions where the filename is None.
Fix that and add test coverage for that case.
Martin Geisler <martin@geisler.net> [Fri, 22 Nov 2013 19:13:07 +0100] rev 20147
glossary: don't mention obsolete graphlog extension