Sean Farley <sean.michael.farley@gmail.com> [Tue, 22 Jan 2013 18:40:23 -0600] rev 18465
help: add documentation for new template functions
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 22 Jan 2013 11:39:14 +0100] rev 18464
changectx: fix the handling of `tip`
We can not use `len(repo,changelog)`, it may be a filtered revision. We now use
`repo,changelog.tip()` to fetch this information.
The `tip` command is also fixed and tested
Thanks goes to Idan Kamara for the initial report.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 22 Jan 2013 03:23:02 +0100] rev 18463
bisect: use changelog for iteration
With changelog filtering, we can not use xrange anymore. We have to use the
changelog to do the iteration. This way, the changelog excludes filtered
revision and we can safely use what we iterate over.
Without this changes, bisect crash with a traceback if there is filtered
revision in the repo. Tests have been updated.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 21 Jan 2013 19:40:15 +0100] rev 18462
documentation: update to new filter names
Changeset
f3b21beb9802 change filter names but forgot some documentation
updates.
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 21 Jan 2013 13:42:04 -0200] rev 18461
largefiles: enhance error message to make it more i18n-friendly
Matt Mackall <mpm@selenic.com> [Tue, 22 Jan 2013 17:55:14 -0600] rev 18460
merge with i18n
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Wed, 23 Jan 2013 00:51:53 +0100] rev 18459
largefiles: fix largefiles+subrepo update (
issue3752)
Override updaterepo() instead of individual methods that may not be called for
each subrepo. Add test.
Based on patch from Matt Harbison.
Changes the order of update-related messages (now largefiles comes before the
global status).
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 21 Jan 2013 13:47:14 -0200] rev 18458
debugsuccessorssets: fix typos in docstring
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 21 Jan 2013 13:30:53 -0200] rev 18457
i18n-pt_BR: synchronized with
f5fbe15ca744
Matt Mackall <mpm@selenic.com> [Sun, 20 Jan 2013 17:18:00 -0600] rev 18456
merge: only sort manifests in debug mode (
issue3769)
Matt Mackall <mpm@selenic.com> [Sat, 19 Jan 2013 17:26:19 -0600] rev 18455
Added signature for changeset
f5fbe15ca744
Matt Mackall <mpm@selenic.com> [Sat, 19 Jan 2013 17:26:16 -0600] rev 18454
Added tag 2.5-rc for changeset
f5fbe15ca744
Matt Mackall <mpm@selenic.com> [Sat, 19 Jan 2013 17:24:33 -0600] rev 18453
merge default into stable for 2.5 code freeze
Matt Mackall <mpm@selenic.com> [Sat, 19 Jan 2013 17:20:39 -0600] rev 18452
pathencode: don't use alloca() for safety/portability
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 19 Jan 2013 02:29:56 +0100] rev 18451
branchmap: display filtername when `updatebranch` fails to do its jobs
We have a very handy assert at the ends of `branchmap.updatecache` that check
the resulting branchmap is actually valid.
I know we do not like assert in mercurial but this one is very handy for
debugging. There is really not reason for `branchmap.updatecache` to have this
kind of issue but this happened and handful of time during the development of
this or introduction of other related feature. I advice to keep it around until
we are a bit more confident with the new code.
Mads Kiilerich <madski@unity3d.com> [Fri, 18 Jan 2013 01:24:29 +0100] rev 18450
scmutil: localize and improve 'not under root' message
Mads Kiilerich <madski@unity3d.com> [Fri, 18 Jan 2013 01:23:51 +0100] rev 18449
run-tests.py: don't let hg run interactively in debug mode
In normal test mode stdin is closed and hg is thus not interactive. In --debug
mode stdin is inherited from the running console and to the tests, and hg could
thus wait in prompts when running on Windows.
See http://selenic.com/pipermail/mercurial-devel/2013-January/047548.html .
Instead set ui.interactive=False to make Mercurial non-interactive. Other
commands might still work differently in the --debug environment.
This should solve the problem with hg waiting for input but still make it
possible to add --debugger to hg in a test and run run-tests.py with --debug.
Mads Kiilerich <madski@unity3d.com> [Fri, 18 Jan 2013 01:16:16 +0100] rev 18448
run-tests.py: backout "don't use console for stdin when running in debug mode"
f5842787a958 caused that some kind of interactive debugging no longer was
possible - such as running hg with --debugger in a test run with run-tests.py
--debug .
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 18 Jan 2013 23:41:48 +0100] rev 18447
rebase: properly handle unrebased revision between rebased one
With rebase taking multiple roots it is possible to have revision in the "rebase
domain" not rebased themself. We do not want rebased revision above them to be
detached. We want such revision to be rebased on the nearest rebased ancestors.
This allows to preserve the topology of the rebase set as much a possible
To achieve this we introduce a new state `revignored` which informs
`defineparents` of the situation.
The test in `test-rebase-obsolete.t` was actually wrote and his now fixed.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 18 Jan 2013 23:21:32 +0100] rev 18446
rebase: lose the comparison to `nullmerge`
For a proper behavior of the `--rev` revision we will need another possible
state for revision ignored by rebase. We alter the comparison to `nullmerge`
to match this future lower state too.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 18 Jan 2013 23:43:32 +0100] rev 18445
repoview: cache filtered changelog
Creating a new changelog object for each access is costly and prevents efficient
caching changelog side. This introduced a x5 performance regression in log
because chunk read from disk were never reused. We were jumping from about 100
disk read to about 20 000.
This changeset introduce a simple cache mechanism that help the last changelog
object created by a repoview. The changelog is reused until the changelog or the
filtering changes.
The cache invalidation is much more complicated than it should be. But MQ test
show a strange cache desync. I was unable to track down the source of this
desync in descent time so I'm not sure if the issue is in MQ or core. However
given the proximity to the 2.5 freeze, I'm choosing the inelegant but safe route
that makes the cache mechanism safer.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 18 Jan 2013 14:15:32 +0100] rev 18444
rebase: do not invent successor to skipped changeset
When rebase results in an empty a changeset it is "skipped" and no related
changeset is created at all. When we added obsolescence support to rebase (in
fc2a6114f0a0) it seemed a good idea to use its parent successor as the
successors for such dropped changesets. (see old version of the altered test).
This option was chosen because it seems a good way to hint about were the
dropped changeset "intended" to be. Such hint would have been used by automatic
evolution mechanism to rebase potential unstable children.
However, field testing of this version are not conclusive. It very often leads
to the creation of (totally unfounded) evolution divergence. This changeset
changes this behavior and mark skipped changesets as pruned (obsolete without
successors). This prevents the issue and seems semantically better probably a
win for obsolescence reading tool.
See example bellow for details:
User Babar has five changesets of interest:
- O, its current base of development.
- U, the new upstream
- A and C, some development changesets
- B another development changeset independent from A
O - A - B - C
\
U
Babar decides that B is more critical than the A and C and rebase it first
$ hg rebase --rev B --dest U
B is now obsolete (in lower case bellow). Rebase result, B', is its
successors.(note, C is unstable)
O - A - b - C
\
U - B'
Babar is now done with B', and want to rebase the rest of its history:
$ hg rebase --source A --dest B'
hg rebase process A, B and C. B is skipped as all its changes are already contained
in B'.
O - U - B' - A' - C'
Babar have the expected result graph wise, obsolescence marker are as follow:
B -> B' (from first rebase)
A -> A' (from second rebase)
C -> C' (from second rebase)
B -> ?? (from second rebase)
Before this changeset, the last marker is `B -> A'`. This cause two issues:
- This is semantically wrong. B have nothing to do with A'
- B has now two successors sets: (B',) and (A',). We detect a divergent
rewriting. The B' and A' are reported as "divergent" to Babar, confusion
ensues. In addition such divergent situation (divergent changeset are children
to each other) is tricky to solve.
With this changeset the last marker is `B -> ΓΈ`:
- This is semantically better.
- B has a single successors set (B',)
This scenario is added to the tests suite.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 17 Jan 2013 17:51:30 +0100] rev 18443
repoview: protect `base` computation from weird phase root
If for some reason the phase roots contains nullid, the set of filtered revs
will contains -1. That confuse Mercurial a lot. In particular this corrupt the
branchcache.
Standard code path does not result in nullid phase root. It can only result from
altered `.hg/store/phaseroots` or buggy extension. However better safe than
sorry.
Siddharth Agarwal <sid0@fb.com> [Fri, 18 Jan 2013 15:55:16 -0800] rev 18442
posix: don't compare atime when determining if a file has changed
A file's atime might change even if the file itself doesn't change. This might
cause us to invalidate caches more often than necessary.
Before this change, hg add often resulted in the dirstate being parsed twice
on systems that track atime. After this change, it is only parsed once. For a
repository with over 180,000 files, this speeds up hg add from 1.2 seconds to
1.0.
Augie Fackler <raf@durin42.com> [Fri, 05 Oct 2012 18:10:56 -0500] rev 18441
hg: replace DirCleanup class with normal try/finally use
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 16 Jan 2013 19:21:03 +0100] rev 18440
histedit: proper phase conservation (
issue3724)
Before this changeset, histedit created all new changesets according
phases.new-commit option without any regards for the phases of the original
changesets.
This changeset fix that using the phase of rewritten changeset to decide the
phase of the resulting changeset. In case of reordering or folding, we keep
secret item secret as it seems the safer path.
temporary commit creation are not affected. They are head only and stripped at
the end of the histedit.
As for the resolution of
issue3681 (obsolescence cycle prevention), we do not
handle changesets created by edit command.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 16 Jan 2013 19:19:56 +0100] rev 18439
test-histedit: reorder phases test and prepare for more
We are going to add a lot regarding phase of test while fixing
issue3724.
This movement allows to put them after this first phase test.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 16 Jan 2013 19:17:36 +0100] rev 18438
test-histedit: fix instability creation test
The current test does not rewrite anything and therefor does not create any
instability.
We also clean up the repo state after the test. This required the rebase
extension.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 16 Jan 2013 19:14:22 +0100] rev 18437
histedit: record histedit source (
issue3681)
Have histedit record the hex of the original changeset as already done by:
- graft
- commit --amend
- rebase
My main motivation for adding this is to prevent the creation of obsolescence cycle
(see
issue3681).
Note that commit created during edit are not affected yet.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 16 Jan 2013 19:11:06 +0100] rev 18436
histedit: factor most commit creation in a function
Later commits add two important items to histedit:
- Obsolescence cycle prevention
- Proper phase conservation
Those logics must be applied to all simple operations (pick, edit, mess) and
will require verbose code.
So we introduce a new function that will provide an entry point for this new.
logic.
The function build a closure to have a clear distinction between commit
arguments and data provided to the function to fulfil its logic.