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>