Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 30 Jan 2012 17:37:45 +0100] rev 16681
mq: qimport need wlock for --push - do that after releasing lock
qimport locking was introduced for phases in
29ea059be33c.
Mads Kiilerich <mads@kiilerich.com> [Sat, 12 May 2012 20:06:02 +0200] rev 16680
tag: run commit hook when lock is released (
issue3344)
Bryan O'Sullivan <bryano@fb.com> [Sat, 12 May 2012 20:25:33 +0200] rev 16679
parsers: strictly check for 20-byte hashes where they're required
Martin Geisler <martin@geisler.net> [Sat, 12 May 2012 22:12:54 +0200] rev 16678
templater: handle SyntaxError when parsing ui.logtemplate
Before, Mercurial would crash with a traceback ending with
SyntaxError: unmatched quotes
if you configured
[ui]
logtemplate = {rev}\n
The SyntaxError is now catched and the string is re-parsed without
requiring quotes.
Wagner Bruna <wbruna@softwareexpress.com.br> [Tue, 08 May 2012 15:31:14 -0300] rev 16677
i18n-pt_BR: synchronized with
95ca6c8b38da
Martin Geisler <mg@lazybytes.net> [Fri, 11 May 2012 18:41:04 +0200] rev 16676
progress: fix indentation
Martin Geisler <mg@lazybytes.net> [Fri, 11 May 2012 15:13:13 +0200] rev 16675
test-progress: fix whitespace typo
Matt Mackall <mpm@selenic.com> [Sat, 12 May 2012 13:20:26 +0200] rev 16674
merge with stable
Mads Kiilerich <mads@kiilerich.com> [Wed, 25 Apr 2012 01:35:39 +0200] rev 16673
tests: unify the last sh tests
This requires a slightly smarter check-code check for sed output filtering.
Mads Kiilerich <mads@kiilerich.com> [Wed, 25 Apr 2012 01:35:39 +0200] rev 16672
tests: run most check-code sh checks on continued lines too
Some false errors are degraded to warnings and whitelisted.
Martin Geisler <mg@lazybytes.net> [Fri, 11 May 2012 15:09:06 +0200] rev 16671
merge with main
Martin Geisler <mg@lazybytes.net> [Fri, 11 May 2012 13:42:37 +0200] rev 16670
children: use hg reST role for example
Augie Fackler <raf@durin42.com> [Fri, 11 May 2012 04:42:29 -0500] rev 16669
fetch: mark extension as deprecated
Augie Fackler <raf@durin42.com> [Fri, 11 May 2012 06:15:46 -0500] rev 16668
children: mark extension as deprecated
Martin Geisler <mg@lazybytes.net> [Fri, 11 May 2012 14:00:51 +0200] rev 16667
extensions: don't suggest commands from deprecated extensions
Augie Fackler <raf@durin42.com> [Fri, 11 May 2012 04:33:33 -0500] rev 16666
extensions: fix documentation of disabledcmd return value
Bryan O'Sullivan <bryano@fb.com> [Sat, 12 May 2012 10:55:08 +0200] rev 16665
revlog: speed up prefix matching against nodes
The radix tree already contains all the information we need to
determine whether a short string is an unambiguous node identifier.
We now make use of this information.
In a kernel tree, this improves the performance of
"hg log -q -r
24bf01de75" from 0.27 seconds to 0.06.
Bryan O'Sullivan <bryano@fb.com> [Sat, 12 May 2012 10:55:08 +0200] rev 16664
parsers: ensure that nullid is always present in the radix tree
Bryan O'Sullivan <bryano@fb.com> [Sat, 12 May 2012 10:55:07 +0200] rev 16663
parsers: allow hex keys
Matt Mackall <mpm@selenic.com> [Sat, 12 May 2012 12:23:49 +0200] rev 16662
merge with stable
Henrik Stuart <hg@hstuart.dk> [Sat, 12 May 2012 10:20:57 +0200] rev 16661
revset: add function for matching extra data (
issue2767)
Levi Bard <levi@unity3d.com> [Fri, 11 May 2012 18:51:35 +0200] rev 16660
graft: implement --log (
issue3438)
Patrick Mezard <patrick@mezard.eu> [Sat, 12 May 2012 00:24:07 +0200] rev 16659
phase: make if abort on nullid for the good reason
The good reason being you cannot call retractboundary() on nullid, not
revset.set() cannot resolve '-1'.
Patrick Mezard <patrick@mezard.eu> [Sat, 12 May 2012 00:24:07 +0200] rev 16658
phases: make advance/retractboundary() atomic
Before this, if advanceboundary() failed after updating some roots but
before calling retractboundary(), the phase cache would be left in an
invalid state, marked dirty, and written as such. This patch approach is
to turn advance/retractboundary() into phasecache methods, then operate
on copies and merge them back on success.
With the same technique, we can ensure the atomicity of combinations of
advance/retractboundary() calls, like those performed in changegroup
handling code.
Patrick Mezard <patrick@mezard.eu> [Sat, 12 May 2012 00:24:07 +0200] rev 16657
phases: introduce phasecache
The original motivation was changectx.phase() had special logic to
correctly lookup in repo._phaserev, including invalidating it when
necessary. And at other places, repo._phaserev was accessed directly.
This led to the discovery that phases state including _phaseroots,
_phaserev and _dirtyphase was manipulated in localrepository.py,
phases.py, repair.py, etc. phasecache helps encapsulating that.
This patch replaces all phase state in localrepo with phasecache and
adjust related code except for advance/retractboundary() in phases.
These still access to phasecache internals directly. This will be
addressed in a followup.
Patrick Mezard <patrick@mezard.eu> [Sat, 12 May 2012 00:19:30 +0200] rev 16656
mq: introduce mq.check setting
When:
[mq]
check = True
is set, qpush, qpop and qgoto behave as if -c/--check were passed. If
incompatible options like -f/--force or --exact are set, this setting is
ignored.
This setting enables what many users expect mq default behaviour to be.
Patrick Mezard <patrick@mezard.eu> [Sat, 12 May 2012 00:19:30 +0200] rev 16655
mq: introduce qgoto --check
Patrick Mezard <patrick@mezard.eu> [Sat, 12 May 2012 00:19:30 +0200] rev 16654
mq: introduce qpush --check
qpush --check let you qpush with uncommitted files not overlapping
patched files.
Patrick Mezard <patrick@mezard.eu> [Sat, 12 May 2012 00:19:30 +0200] rev 16653
mq: introduce qpop --check
qpop --check let you qpop with uncommitted files if they do not
intersect with files touched by the popped patches.
David Soria Parra <dsp@php.net> [Sat, 12 May 2012 09:43:12 +0200] rev 16652
pager: check if signal.SIGPIPE exists
We have to check for signal.SIGPIPE before we attempt
to set it.
Matt Mackall <mpm@selenic.com> [Sat, 12 May 2012 10:02:47 +0200] rev 16651
diffhelpers: harden testhunk
Yuya Nishihara <yuya@tcha.org> [Sat, 12 May 2012 16:10:01 +0900] rev 16650
patch: fix segfault against unified diffs which start line is zero
Since
2b1ec74c961f, if a chunk starts with "@@ -0,1", oldstart turns into
a negative value. Because diffhelpers.testhunk() doesn't expect negative bstart,
it bypasses "alen > blen - bstart" condition and segfaults at
"PyList_GET_ITEM(b, i + bstart)".
Steven Stallion <sstallion@gmail.com> [Fri, 11 May 2012 22:48:19 -0700] rev 16649
bugzilla: fix transport initialization on python 2.4
Bryan O'Sullivan <bryano@fb.com> [Tue, 08 May 2012 15:31:00 -0700] rev 16648
bisect: set HG_NODE when runing a command
When running a command, set the environment variable HG_NODE to
tell the command which changeset is being visited.
Bryan O'Sullivan <bryano@fb.com> [Tue, 08 May 2012 15:29:09 -0700] rev 16647
bisect: track the current changeset (
issue3382)
Introduce a new revset feature, bisect(current), that identifies
the changeset currently being bisected.
Jesse Glick <jesse.glick@oracle.com> [Fri, 04 May 2012 15:56:45 -0400] rev 16646
localrepo: optimize internode status calls using withflags
Introduce manifestdict.withflags() to get a set of all files which have any
flags set, since these are likely to be a minority. Otherwise checking .flags()
for every file is a lot of dictionary lookups and is quite slow.
Jesse Glick <jesse.glick@oracle.com> [Fri, 04 May 2012 15:54:55 -0400] rev 16645
localrepo: optimize internode status calls using match.always
Introduce match.always() to check if a match object always says yes, i.e.
None was passed in. If so, mfmatches should not bother iterating every file in
the repository.
Na'Tosha Bard <natosha@unity3d.com> [Fri, 11 May 2012 23:11:43 +0200] rev 16644
largefiles: add --all-largefiles flag to clone (
issue3188)
Augie Fackler <raf@durin42.com> [Fri, 04 May 2012 16:00:33 -0500] rev 16643
httpclient: update to revision
892730fe7f46 of httpplus
Matt Mackall <mpm@selenic.com> [Sat, 12 May 2012 00:06:11 +0200] rev 16642
merge with stable
Bryan O'Sullivan <bryano@fb.com> [Tue, 08 May 2012 14:46:04 -0700] rev 16641
parsers: use the correct maximum radix tree depth
Previously, we would not use more than half of a SHA-1 hash when
constructing and searching the tree.
Patrick Mezard <patrick@mezard.eu> [Wed, 09 May 2012 18:45:14 +0200] rev 16640
revset: make matching() preserve input revision order
Jesse Glick <jesse.glick@oracle.com> [Thu, 10 May 2012 14:17:05 -0400] rev 16639
revset: documentation typo "metatadata"
Na'Tosha Bard <natosha@unity3d.com> [Fri, 11 May 2012 15:32:22 +0200] rev 16638
largefiles: fix deletion of multiple missing largefiles (
issue3329)
Levi Bard <levi@unity3d.com> [Fri, 11 May 2012 15:15:50 +0200] rev 16637
addremove: document default similarity behavior (
issue3429)
Na'Tosha Bard <natosha@unity3d.com> [Fri, 11 May 2012 14:42:26 +0200] rev 16636
largefiles: follow normal codepath for addremove if non-largefiles repo (
issue3249)
Patrick Mezard <patrick@mezard.eu> [Fri, 11 May 2012 16:57:26 +0200] rev 16635
mq: add --no-backup for qpush/qpop/qgoto
Patrick Mezard <patrick@mezard.eu> [Fri, 11 May 2012 16:18:47 +0200] rev 16634
mq: backup local changes in qpush --force
qpush help says the following about --force:
1- When -f/--force is applied, all local changes in patched files will
be lost.
2- Apply on top of local changes
In practice, qpush --force will attempt to apply the patch on top of
local changes, and on success will merge them in the pushed patch. On
failure, patched files will contain a mix of local changes (where the
patch could not apply) and a mix of patch changes (were it applied). So,
local changes are less lost than entangled with a mass of other changes.
This patch makes qpush --force backup all locally modified files touched
by the next patch being applied. When multiple patches are being pushed,
this logic is repeated for each patch. Note that modified but
successfully patched files are preserved as well.
Patrick Mezard <patrick@mezard.eu> [Fri, 11 May 2012 16:17:02 +0200] rev 16633
mq: backup local changes in qpop --force (
issue3433)
David Soria Parra <dsp@php.net> [Fri, 11 May 2012 16:08:49 +0200] rev 16632
pager: remove quiet flag
With the pager running as a child process, exiting the pager doesn't
result in a broken pipe message. To distinguish the exit broken pipe code
from a mercurial abort we register the default action for SIGPIPE. This
results in a 141 exit code instead of a 255. On windows SIGPIPE doesn't
exists and a ValueError will be thrown.
Brodie Rao <brodie@sf.io> [Fri, 11 May 2012 15:45:37 +0200] rev 16631
pager: preserve Hg's exit code (and fix Windows support) (
issue3225)
This changes how the pager extension invokes the pager. Prior to this change,
the extension would fork Hg and exec the pager in the parent process. This
loses Hg exit code, and it doesn't work on Windows.
Now the pager is invoked using the subprocess library, and an atexit handler is
registered that makes Hg wait for the pager to exit before it exits itself.
Note that if you exit the pager before Hg is done running, you'll get an exit
code of 255, which is caused by Python blowing up due to a broken pipe. If you
set pager.quiet=True, you'll get the OS-level return code of 141.
Idan Kamara <idankk86@gmail.com> [Fri, 11 May 2012 18:33:45 +0300] rev 16630
amend: preserve extra dict (
issue3430)
Adrian Buehlmann <adrian@cadifra.com> [Wed, 09 May 2012 09:58:50 +0200] rev 16629
parser: use PyInt_FromSsize_t in index_stats
Eliminates
mercurial/parsers.c(515) : warning C4244: 'function' : conversion from
'Py_ssize_t' to 'long', possible loss of data
mercurial/parsers.c(520) : warning C4244: 'function' : conversion from
'Py_ssize_t' to 'long', possible loss of data
mercurial/parsers.c(521) : warning C4244: 'function' : conversion from
'Py_ssize_t' to 'long', possible loss of data
when compiling for Windows x64 target using the Microsoft compiler.
PyInt_FromSsize_t does not exist for Python 2.4 and earlier, so we define a
fallback in util.h to use PyInt_FromLong when compiling for Python 2.4.
redstone [Fri, 11 May 2012 10:53:12 -0700] rev 16628
localrepo: cleanup var names and comments
Cosmetic cleanups. Fix comment typo referring to the notion of multiple tips.
Make variable describing a generator end in 'gen'.
Fix another var containing a node not to end with 'rev'.
Levi Bard <levi@unity3d.com> [Fri, 11 May 2012 17:26:58 +0200] rev 16627
transplant: manually transplant pullable changesets with --log
Patrick Mezard <patrick@mezard.eu> [Thu, 10 May 2012 18:52:07 +0200] rev 16626
phases: stop modifying localrepo in writeroots()
Also pass the phaseroots being written for clarity. repo._dirtyphases
was already reset to False at call site.
Patrick Mezard <patrick@mezard.eu> [Thu, 10 May 2012 18:52:04 +0200] rev 16625
phases: stop modifying localrepo in readroots()
phasedefaults is also passed explicitely to help the casual reader
understand where it is used without grepping all the sources.
Patrick Mezard <patrick@mezard.eu> [Thu, 10 May 2012 18:21:15 +0200] rev 16624
phases: call filterunknown() in readroots()
One less function manipulating localrepo state.
Patrick Mezard <patrick@mezard.eu> [Thu, 10 May 2012 18:21:15 +0200] rev 16623
repair: no need to call filterunknown() in strip()
Calling strip() will eventually trigger localrepo.destroyed() which will
invalidate _parseroots. It will call filterunknown() upon reload.
Changes to test-keyword.t are related to commit --debug running after
either qpop or rollback.
Patrick Mezard <patrick@mezard.eu> [Thu, 10 May 2012 18:21:15 +0200] rev 16622
test-phases: test changing null revision phase
The behaviour is correct but for bad reasons: the repo.set() call in
phase command fails for '-1'. It should be rejected explicitely by phase
boundary commands, sadly this is hard to do because phase changes are
not applied atomically.
Matt Mackall <mpm@selenic.com> [Fri, 11 May 2012 14:48:24 +0200] rev 16621
merge with stable
Bryan O'Sullivan <bryano@fb.com> [Fri, 11 May 2012 02:32:26 -0700] rev 16620
tests: fix test-parseindex2.py when run with --pure
Bryan O'Sullivan <bryano@fb.com> [Fri, 11 May 2012 01:55:33 -0700] rev 16619
changelog: ensure that nodecache is valid (
issue3428)
This ensures that an out-of-process hook can see an incoming changegroup.
Bryan O'Sullivan <bryano@fb.com> [Tue, 08 May 2012 14:48:50 -0700] rev 16618
parsers: change the type of nt_level
We should generally prefer Py_ssize_t whenever we are talking about
lengths.
Bryan O'Sullivan <bryano@fb.com> [Tue, 08 May 2012 14:48:48 -0700] rev 16617
parsers: change the type signature of hexdigit
An upcoming change will make use of this.
Bryan O'Sullivan <bryano@fb.com> [Tue, 08 May 2012 14:48:44 -0700] rev 16616
parsers: allow nt_find to signal an ambiguous match
Bryan O'Sullivan <bryano@fb.com> [Tue, 08 May 2012 14:48:39 -0700] rev 16615
parsers: factor out radix tree initialization
Bryan O'Sullivan <bryano@fb.com> [Tue, 08 May 2012 14:46:06 -0700] rev 16614
parsers: update ntrev when we stop scanning
This prevents us from inserting some nodes twice, wasting work.
Matt Mackall <mpm@selenic.com> [Tue, 08 May 2012 15:46:51 -0500] rev 16613
tests: set a standard terminal type
This makes test-ui-color.py happy when run in a dumb terminal.
Spotted by Jesse Glick <jesse.glick@oracle.com>
Travis Herrick <tthetoad@gmail.com> [Sun, 06 May 2012 17:12:22 -0700] rev 16612
branches: quiet option observes other parameters
Nikolaj Sjujskij <sterkrig@myopera.com> [Tue, 08 May 2012 23:59:39 +0400] rev 16611
build: fix hgrc manpage building with docutils 0.9
Since docutils 0.9, `roman` module has been moved from module directory root
(i.e. `site-packages/roman.py`) to `docutils.utils` module. Therefore `import
roman` statement should be wrapped in `try: ... except ImportError: ...` block
to handle importing correctly.
Idan Kamara <idankk86@gmail.com> [Wed, 09 May 2012 02:46:58 +0300] rev 16610
context: fix call to util.safehasattr
Patrick Mezard <patrick@mezard.eu> [Sat, 05 May 2012 12:21:22 +0200] rev 16609
alias: inherit command optionalrepo flag (
issue3298)
Commands working without a repository, like "init", are listed in
commands.norepo. Commands optionally using a repository, like "showconfig", are
listed in commands.optionalrepo. Command aliases were inheriting the former but
not the latter.
Mads Kiilerich <mads@kiilerich.com> [Mon, 07 May 2012 00:52:11 +0200] rev 16608
tests: improve test of hg-ssh and make the test pass on windows
Mads Kiilerich <mads@kiilerich.com> [Mon, 07 May 2012 00:52:08 +0200] rev 16607
hg-ssh: exit with 255 instead of -1 on error
Unix sh would cast -1 to 255 anyway, but on windows -1 become 0. Better be
explicit with the 255 everywhere.
Mads Kiilerich <mads@kiilerich.com> [Mon, 07 May 2012 00:49:01 +0200] rev 16606
hg-ssh: use %s for printing paths in error messages
This avoids \\ if this ever is run on windows - for example in the test suite.
Mads Kiilerich <mads@kiilerich.com> [Mon, 07 May 2012 00:48:51 +0200] rev 16605
tests: accept \ in test-casefolding on windows
Adrian Buehlmann <adrian@cadifra.com> [Tue, 08 May 2012 11:20:07 +0200] rev 16604
parsers: statically initializing tp_new to PyType_GenericNew is not portable
As detailed on http://docs.python.org/extending/newtypes.html (quote):
"In this case, we can just use the default implementation provided by the API
function PyType_GenericNew(). We’d like to just assign this to the
tp_new slot, but we can’t, for portability sake. On some platforms or
compilers, we can’t statically initialize a structure member with a function
defined in another C module, so, instead, we’ll assign the tp_new slot in the
module initialization function just before calling PyType_Ready()."
Fixes "gcc (GCC) 3.4.5 (mingw-vista special r3)" complaining with:
mercurial/parsers.c:1096: error: initializer element is not constant
mercurial/parsers.c:1096: error: (near initialization for `indexType.tp_new')
Matt Mackall <mpm@selenic.com> [Tue, 08 May 2012 12:05:45 -0500] rev 16603
merge with stable
Matt Mackall <mpm@selenic.com> [Sun, 06 May 2012 14:37:51 -0500] rev 16602
context: add copies method with caching
Matt Mackall <mpm@selenic.com> [Sun, 06 May 2012 14:20:53 -0500] rev 16601
filectx: handle some other simple cases for finding merge ancestor
Matt Mackall <mpm@selenic.com> [Sun, 06 May 2012 14:15:17 -0500] rev 16600
graft: remark on empty graft
Matt Mackall <mpm@selenic.com> [Fri, 04 May 2012 17:27:14 -0500] rev 16599
filectx: make ancestor require actx
When grafting or rebasing, we need to know the target ancestor.
Patrick Mezard <patrick@mezard.eu> [Mon, 07 May 2012 21:49:45 +0200] rev 16598
pure/base85: align exception type/msg on base85.c
brendan mentioned on IRC that b64decode raises a TypeError too, but while the
previous exception type may be better in general, it is much easier to make it
behave like the related C code and changes nothing for mercurial itself.
Matt Mackall <mpm@selenic.com> [Mon, 07 May 2012 15:40:50 -0500] rev 16597
parsers: fix refcount bug on corrupt index
When we encounter a corrupt index, we "fail" the init but our
destructor still gets called. On some systems, this was causing us to
attempt to decref a dangling to self->data.
Patrick Mezard <patrick@mezard.eu> [Fri, 04 May 2012 14:19:55 +0200] rev 16596
subrepo: do not traceback on .hgsubstate parsing errors
Note that aborting in subrepo.state() prevents "repairing" commands like revert
to be issued. The user will have to edit the .hgsubstate manually (but he
probably had already otherwise this would not be failing). The same behaviour
already happens with invalid .hgsub entries.
Patrick Mezard <patrick@mezard.eu> [Fri, 04 May 2012 14:19:52 +0200] rev 16595
subrepo: ignore blank lines in .hgsubstate (
issue3424)
Reported by Sebastian Krysmanski <infomail@lordb.de>
hlian [Fri, 04 May 2012 14:36:40 -0400] rev 16594
largefiles: in putlfile, ensure tempfile's directory exists prior to creation
Let R be a repo served by an hg daemon on a machine with an empty largefiles
cache. Pushing a largefiles repo to R will result in a no-such-file-or-directory
OSError because putlfile will attempt to create a temporary file in
R/.hg/largefiles, which does not yet exist.
This patch also adds a regression test for this scenario.
Bryan O'Sullivan <bryano@fb.com> [Wed, 02 May 2012 17:15:11 -0700] rev 16593
bisect: save current state before running a command
This prevents an external command being run during a bisect from
querying stale data.
Martin Geisler <mg@aragost.com> [Mon, 07 May 2012 13:40:58 +0200] rev 16592
merge with stable
Yuya Nishihara <yuya@tcha.org> [Sun, 06 May 2012 23:58:04 +0900] rev 16591
commands: parse ui.strict config item as bool
Martin Geisler <mg@aragost.com> [Mon, 07 May 2012 10:02:50 +0200] rev 16590
check-code: catch unnecessary s.strip().split() calls
Martin Geisler <mg@aragost.com> [Fri, 04 May 2012 15:29:07 +0200] rev 16589
tags: line.rstrip().split() can be replaced with line.split()
The line looks like "123 <node> <node>" and does not start with
whitespace: it was therefore not significant that rstrip was used
instead of strip. Furthermore, the first part is fed to int, which
will itself strip away whitespace before converting the string to an
integer.
Martin Geisler <mg@aragost.com> [Fri, 04 May 2012 15:24:00 +0200] rev 16588
phases: line.strip().split() == line.split()
Martin Geisler <mg@lazybytes.net> [Sun, 06 May 2012 14:36:42 +0200] rev 16587
merge with stable
Patrick Mezard <patrick@mezard.eu> [Sun, 06 May 2012 13:14:58 +0200] rev 16586
largefiles: fix "hg status dir" missing regular files (
issue3421)
largefiles status implementation attemps to rewrite the input match objects to
match the "standins" as well as the regular files. When fixing the directories
listed in match.files(), if there was related standin entry, it was kept and
the original path discarded. But directories can appear both as regular and
standin entries.