Kevin Bullock <kbullock@ringworld.org> [Fri, 04 Jan 2013 13:03:44 -0600] rev 18225
merge with crew-stable
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 04 Jan 2013 19:06:42 +0100] rev 18224
dispatch: handle empty `testedwith` value in extension
When extensions had an empty `testedwith` attribute the code tried to parse it
and failed. As a result the actual error were shallowed by a This crash.
We now treat empty strip as 'unknown'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 04 Jan 2013 19:05:20 +0100] rev 18223
destroyed: filter unknown before computing branchcache
Branchcache of filtered version need up to date phase data.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 02 Jan 2013 01:36:57 +0100] rev 18222
branchmap: disable fallback to unfiltered branchcache
Disables this simple optimisation to allow coming more powerfull approach: cache
collaboration.
Our goal is to have branchcache collaborate. This means that unfiltered
branchcache will fallback to some filtered branchcache if invalid. We can't have
the filtered branchcache to use the unfiltered one. That would loop.
Idan Kamara <idankk86@gmail.com> [Fri, 21 Dec 2012 17:19:52 +0100] rev 18221
localrepo: filter unknown nodes from the phasecache on destroyed
When commit is followed by strip (qrefresh), phasecache contains nodes that were
removed from the changelog. Since phasecache is filecached with .hg/store/phaseroots
which doesn't change as a result of stripping, we have to filter it manually.
If we don't write it immediately, the next time it is read from disk the nodes
will be filtered again. That's what happened before, but there's no reason not
to write it immediately.
The change in test-keyword.t is caused by the above.
Idan Kamara <idankk86@gmail.com> [Fri, 04 Jan 2013 06:11:29 +0100] rev 18220
phases: make _filterunknown a member function of phasecache
We'd like the ability to call filterunknown on an existing phasecache
instance after nodes are destroyed.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 04 Jan 2013 01:37:38 +0100] rev 18219
localrepo: drop `_cacheabletip` method
It iss dead code now.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 04 Jan 2013 01:25:55 +0100] rev 18218
branchmap: drop `_cacheabletip` usage in `updatecache`
Nobody overwrite the `_cacheabletip` any more. We always update the cache for
the whole repo and write it to disk (or at list try to). The `updatecache` code
is simplied to remove the double phase logic associated with _cacheabletip.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 28 Dec 2012 03:42:21 +0100] rev 18217
mq: drop `_cacheabletip` usage
Strip have dedicated work around to solve the same problem, strip is even a
fraction faster without that thanks to simpler update process of the branchcache.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 28 Dec 2012 02:34:32 +0100] rev 18216
bundlerepo: drop use of `_cacheabletip`
Now that bundlerepo use a read only VFS, we do not worry about what part of the
branchmap is written back to disk. Nothing is written at all.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 28 Dec 2012 02:32:47 +0100] rev 18215
bundlerepo: enforce reading from core repo only
We do not want anything computed with the bundle overlay to be written back in
the repo. Such write will likely contains invalid data.
The short terms goal of this change is to drop use of `_cacheabletip` in bundle
repo.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 04 Jan 2013 04:52:57 +0100] rev 18214
branchmap: ignore Abort error while writing cache
Read only vfs can now raise Abort exception. Note that encoding.local are also a
possible raiser.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 04 Jan 2013 01:07:25 +0100] rev 18213
vfs: add a read only vfs
This read only wrapper is intended to be used bundle repo. See follow up commit
for details.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 22 Dec 2012 19:41:11 +0100] rev 18212
branchmap: read return None in case of failure
This makes a clear distinction between having read a valid cache on disk or not.
This will help caches of various filtering level to collaborate.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 29 Dec 2012 00:40:18 +0100] rev 18211
clfilter: fallback to unfiltered version when linkrev point to filtered history
On `filectx`, linkrev may point to any revision in the repository. When the
repository is filtered this may lead to `filectx` trying to build `changectx`
for filtered revision. In such case we fallback to creating `changectx` on the
unfiltered version of the reposition. This fallback should not be an issue
because `changectx` from `filectx` are not used in complex operation that
care about filtering. It is complicated to work around the issue in a
clearer way as code raising such `filectx` rarely have access to the
repository directly.
Linkrevs create a lot of issue with filtering. It is stored in revlog entry at
creation time and never changed. Nothing prevent the changeset revision pointed
to become filtered. Several bogus behavior emerge from such situation. Those
bugs are complex to solve and not part of the current effort to install
filtering. This changeset is simple hack that prevent plain crash in favor on
minor misbehavior without visible effect.
This "hack" is longly documented in to code itself to help people that would
look at it in the future.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 24 Dec 2012 11:58:40 +0100] rev 18210
phases: prepare phase command for filtering
The phase command have some logic to report change made. We ensure this logic
run unfiltered.
With --force the command can change phase of a changeset for public to draft.
Such change can lead to obsolescence marker to apply again and the changeset to
be "hidden". If we do not run the logic unfiltered it could failed to fetch the
phase of a newly filtered changeset.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 24 Dec 2012 11:57:48 +0100] rev 18209
phases: avoid changectx creation while checking command result
This minor changesets saves the creation of a `changectx` ctx object only used to
fetch the revision number.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 04 Dec 2012 15:25:22 +0100] rev 18208
test: use obsolescence marker to test hidden
Instead of using a custom dedicated extension.
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Wed, 02 Jan 2013 13:59:07 +0100] rev 18207
test-command-template.t: make "age" filter test work on Feb 29th
reported by Julien Cristau.
Matt Mackall <mpm@selenic.com> [Wed, 02 Jan 2013 00:24:28 -0600] rev 18206
merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 02 Jan 2013 00:07:43 -0600] rev 18205
Added signature for changeset a4765077b65e
Matt Mackall <mpm@selenic.com> [Wed, 02 Jan 2013 00:07:40 -0600] rev 18204
Added tag 2.4.2 for changeset a4765077b65e
Matt Mackall <mpm@selenic.com> [Wed, 02 Jan 2013 00:03:31 -0600] rev 18203
merge with i18n
Matt Mackall <mpm@selenic.com> [Wed, 02 Jan 2013 00:02:22 -0600] rev 18202
merge i18n heads
Angel Ezquerra <angel.ezquerra@gmail.com> [Thu, 20 Dec 2012 19:22:12 +0100] rev 18201
hgweb, paper: add (Atom) subscribe links to the repository index
This is similar to the subscribe links that already exist in other templates.
Rather than the usual RSS and Atom links a single feed icon linking to the
atom-log is shown.
Angel Ezquerra <angel.ezquerra@gmail.com> [Tue, 04 Dec 2012 00:41:29 +0100] rev 18200
hgweb: add (Atom) subscribe link to the main paper template pages
The subscribe link is found at the bottom of the navigation sidebar.
This uses a free icon from http://feedicons.com.
Augie Fackler <raf@durin42.com> [Mon, 31 Dec 2012 21:50:35 -0600] rev 18199
test-command-template.t: fix test so it all year
This test started failing for me after midnight UTC on December
31st. Fixed it by specifying a date 7 years in the future more
precisely (rather than just adding 8 to the year and specifying
January 1st), which allows the test to pass both now and on 2012-12-01
at the same time.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 30 Dec 2012 03:49:15 +0100] rev 18198
amend: prevent loss of bookmark on failed amend
The active bookmark were moved to the temporary commit. When the transaction
were rollbacked, the bookmark were lost.
We now temporarly disable the bookmark to prevent this effect.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 29 Dec 2012 18:00:18 +0100] rev 18197
amend: invalidate dirstate in case of failure (issue3670)
The temporary commit created by amend update the dirstate. If the final commit
fails, we need to invalidate the change made to the dirstate, otherwise the
release of the wlock will write the dirstate created after the rollbacked
temporary commit.
This dirstate writing logic should probably be handled in the same object than
the transaction one. However such change are too big for stable.
Nikolaj Sjujskij <sterkrig@myopera.com> [Sat, 24 Nov 2012 01:40:39 +0400] rev 18196
i18n-ru: delete loose letter
Alexander Sauta <demosito@gmail.com> [Thu, 27 Dec 2012 07:32:51 +0000] rev 18195
i18n-ru: synchonized with 777084ac8416
Matt Mackall <mpm@selenic.com> [Thu, 20 Dec 2012 16:36:45 -0600] rev 18194
paper: sanity-check page feed links
filelog has feeds in header, but not in menu bar
help has header feeds pointing to tags
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Sun, 30 Dec 2012 19:19:52 +0100] rev 18193
zeroconf: use port from server instead of picking port from config (issue3746)
In order to get the port, wrap create server instead of
hgweb_mod/hgwebdir_mod.
Matt Mackall <mpm@selenic.com> [Thu, 20 Dec 2012 15:52:23 -0600] rev 18192
scmutil: don't try to match modes on filesystems without modes (issue3740)
Matt Mackall <mpm@selenic.com> [Sat, 22 Dec 2012 18:11:51 -0600] rev 18191
hgwebdir: honor web.templates and web.static for static files (issue3734)
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Sun, 30 Dec 2012 19:19:52 +0100] rev 18190
zeroconf: use port from server instead of picking port from config (issue3746)
In order to get the port, wrap create server instead of
hgweb_mod/hgwebdir_mod.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 24 Dec 2012 03:21:15 +0100] rev 18189
branchmap: enable caching for filtered version too
The `_branchcache` attribute is turned into a dictionary. Key are filter name and
value is a `branchcache` object. Unfiltered version is cached as `None` filter.
The attribute is renamed to `_branchcaches` to avoid confusion with the previous
one. Both old and new contents are dictionary even if their contents are
different. I prefer possible extension code to crash right away instead of just
messing the wrong dictionary.
As all different caches work isolated to each other, this code keeps the
previous behavior of using the unfiltered cache we nothing is filtered. This
is a cheap way to have cache collaborate and nullify potential impact in the
default case.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 01 Jan 2013 21:27:13 +0100] rev 18188
branchmap: report filtername when read fails
Now that we can have multiple one, we need to know which filecache failed to be
read from disk.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 24 Dec 2012 03:06:03 +0100] rev 18187
branchmap: use a different file name for filtered view of repo
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 24 Dec 2012 03:05:02 +0100] rev 18186
clfilter: ensure unfiltered repo have a filtername attribute too
That will allows to use `repo.filtername` for dispatch purpose.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 24 Dec 2012 03:04:12 +0100] rev 18185
branchmap: move the cache file name into a dedicated function
Filtered view of the repo will want to write they file name in a different file.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 01 Jan 2013 18:19:24 +0100] rev 18184
branchmap: read and write key part related to filtered revision
Now that we have a third part for the cache key we need to write and read it on
disk. It is only written when there is filtered revision. This keep the format
compatible with older version.
Notes that, at this state, filtered repository does not use any disk caches yet.
Augie Fackler <raf@durin42.com> [Tue, 01 Jan 2013 13:05:22 -0600] rev 18183
check-code: disallow defunct <> operator
Added a test for that and one other python3 check in
test-check-code.t.
Augie Fackler <raf@durin42.com> [Tue, 01 Jan 2013 13:04:40 -0600] rev 18182
largefiles: stop using <> operator in favor of !=
<> has been deprecated for a while, and != is futureproof
Augie Fackler <raf@durin42.com> [Tue, 01 Jan 2013 13:18:33 -0600] rev 18181
commands: fix implicit tuple that is invalid syntax in Python3
Augie Fackler <raf@durin42.com> [Tue, 01 Jan 2013 12:58:21 -0600] rev 18180
check-code: disallow two-argument form of raise
Using this old form makes any attempt to port to Python 3 harder, and
the new syntax is supported in 2.4 already.
Augie Fackler <raf@durin42.com> [Tue, 01 Jan 2013 13:25:07 -0600] rev 18179
httpclient: apply change df9aea1def3e: remove use of two-argument raise
Augie Fackler <raf@durin42.com> [Tue, 01 Jan 2013 13:21:15 -0600] rev 18178
test-symlink-os-yes-fs-no.py: clean up use of two-argument raise
This makes any attempt to port to Python 3 harder, and the new syntax
is supported in 2.4 already.
Augie Fackler <raf@durin42.com> [Tue, 01 Jan 2013 12:51:00 -0600] rev 18177
scmutil: clean up use of two-argument raise
This makes any attempt to port to Python 3 harder, and the new syntax
is supported in 2.4 already.
Augie Fackler <raf@durin42.com> [Tue, 01 Jan 2013 12:50:46 -0600] rev 18176
url: clean up use of two-argument raise
This makes any attempt to port to Python 3 harder, and the new syntax
is supported in 2.4 already.
Augie Fackler <raf@durin42.com> [Tue, 01 Jan 2013 12:50:23 -0600] rev 18175
win32: clean up use of two-argument raise
This makes any attempt to port to Python 3 harder, and the new syntax
is supported in 2.4 already.
Augie Fackler <raf@durin42.com> [Tue, 01 Jan 2013 12:50:04 -0600] rev 18174
commandserver: clean up use of two-argument raise
This makes any attempt to port to Python 3 harder, and the new syntax
is supported in 2.4 already.
Augie Fackler <raf@durin42.com> [Mon, 31 Dec 2012 21:50:35 -0600] rev 18173
test-command-template.t: fix test so it all year
This test started failing for me after midnight UTC on December
31st. Fixed it by specifying a date 7 years in the future more
precisely (rather than just adding 8 to the year and specifying
January 1st), which allows the test to pass both now and on 2012-12-01
at the same time.
Siddharth Agarwal <sid0@fb.com> [Fri, 28 Dec 2012 16:25:12 -0800] rev 18172
cmdutil: make getgraphlogrevs limit-aware
For a repository with over 400,000 changesets, this speeds up graphlog with a
small limit by around 0.05 seconds (~50%).
Siddharth Agarwal <sid0@fb.com> [Fri, 28 Dec 2012 16:25:00 -0800] rev 18171
cmdutil: stop pretending we can calculate revs for graphlog lazily
cmdutil.getgraphlogrevs does a ton of work trying to build a graphlog lazily,
and then cmdutil.graphlog comes along and destroys all of that.
graphmod.dagwalker requires that it be given the full list of revs upfront so
that it can perform filtering and tests against known revs.
For a repository with over 400,000 changesets, this speeds up graphlog by
around 0.02 seconds (~20% with a small limit).
Siddharth Agarwal <sid0@fb.com> [Fri, 28 Dec 2012 16:24:36 -0800] rev 18170
cmdutil: store a local ref to repo.hiddenrevs in getgraphlogrevs
On a repository with over 400,000 changesets, this speeds graphlog up by
around 0.03 seconds (~20% with a small limit).
Siddharth Agarwal <sid0@fb.com> [Fri, 28 Dec 2012 14:46:58 -0800] rev 18169
cmdutil: make getgraphlogrevs return revs in descending order
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 31 Dec 2012 18:11:18 -0600] rev 18168
branchmap: takes filtered revision in account for cache calculation
Tracking tipnode and tiprev is not enough to ensure validaty of the cache as
they do not help distinguish a cache that ignored various revisions below
tiprev.
To detect such difference, we build a hash of all ignored revisions. This hash
is then used when checking the validity of a cache for a repo.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 24 Dec 2012 02:57:23 +0100] rev 18167
branchmap: improve computation of target tip
With revision filtering the effective revision number of "tip" may be lower than:
len(changelog) - 1
We now use a more correct version preventing useless writing on disk in some
case.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 28 Dec 2012 00:13:32 +0100] rev 18166
branchmap: improve invalid cache message when reading
This factors out the generation of the message. This helps future error reporting
when reading cache for filtered repository.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 31 Dec 2012 17:46:22 -0600] rev 18165
histedit: allow operation from non-head if obsolete is enabled
Obsolescence markers can represent this situation just fine. Rewritten
revisions are marked as precursors of the ones creates by
histedit. Unaffected descendants become "unstable".
If obsolescence is not enabled we keep the current behavior of
aborting. This new behavior only applies when obsolete is
enabled and is subject to future discussion and changes.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 31 Dec 2012 17:45:52 -0600] rev 18164
rebase: allow non-head rebase-set when obsolete is enabled
Obsolescence markers can represent this situation just fine. Rebased
revisions are marked as precursors of the ones create by
rebase. Unrebased descendants becomes "unstable".
If obsolescence is not enabled we keep the current behavior of
aborting. This new behavior only applies when obsolete is
enabled and is subject to future discussion and changes.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 31 Dec 2012 17:44:18 -0600] rev 18163
amend: allow amend of non-head when obsolete is enabled
Obsolescence marker can represent this situation just fine. The old
version is marked as precursor of the new changeset. All its
descendants become "unstable".
If obsolescence is not enabled we keep the current behavior of
aborting. This new behavior only applies when obsolete is
enabled and is subject to future discussion and changes.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 21 Dec 2012 22:58:59 +0100] rev 18162
obsolete: factorise troubles detection during push
The use of the two methods introduced earlier allows a factorisation of the
push code preventing push of troubled changeset.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 17 Dec 2012 15:17:54 +0100] rev 18161
obsolete: introduce a troubles method on context
A troubled changeset may be affected by multiple trouble at the same time. This
new method returns a list of all troubles affecting a changes.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 17 Dec 2012 15:06:15 +0100] rev 18160
obsolete: introduce a troubled method on context
Allows to quickly check if a changeset is affected by any troubles.
(troubles are: unstable, bumped and divergent)
Mads Kiilerich <madski@unity3d.com> [Fri, 28 Dec 2012 14:22:24 +0100] rev 18159
tests: fix windows test failures
Mads Kiilerich <madski@unity3d.com> [Fri, 28 Dec 2012 14:13:06 +0100] rev 18158
merge with stable
Mads Kiilerich <madski@unity3d.com> [Fri, 28 Dec 2012 14:10:35 +0100] rev 18157
tests: fix windows test failures
Mads Kiilerich <madski@unity3d.com> [Thu, 13 Dec 2012 19:19:06 +0100] rev 18156
largefiles: better test coverage of wireproto and the http protocol
Mads Kiilerich <madski@unity3d.com> [Thu, 13 Dec 2012 19:19:06 +0100] rev 18155
largefiles: cleanup of warnings on errors getting largefiles
Especially the "no default or default-push path set in hgrc" was often very
misleading and didn't give any hint where it actually was looking.
A long error messages is better than several multi-line messages.
Mads Kiilerich <madski@unity3d.com> [Thu, 13 Dec 2012 19:19:06 +0100] rev 18154
largefiles: remove trivial portability wrappers
Mads Kiilerich <madski@unity3d.com> [Thu, 13 Dec 2012 19:19:06 +0100] rev 18153
largefiles: remove reporemove portability wrapper
Mads Kiilerich <madski@unity3d.com> [Thu, 13 Dec 2012 19:19:06 +0100] rev 18152
largefiles: remove findoutgoing portability wrapper
Mads Kiilerich <madski@unity3d.com> [Thu, 13 Dec 2012 19:19:06 +0100] rev 18151
largefiles: use constant for '.hglf/'
Problem: '.hglf' + '/' was computed in some tight loops. There is no need for
that.
Mads Kiilerich <madski@unity3d.com> [Thu, 13 Dec 2012 19:19:06 +0100] rev 18150
largefiles: use plain wjoin instead of the complex pathto
Mads Kiilerich <madski@unity3d.com> [Fri, 28 Dec 2012 11:55:57 +0100] rev 18149
largefiles: unindent code
Mads Kiilerich <madski@unity3d.com> [Thu, 13 Dec 2012 19:19:06 +0100] rev 18148
largefiles: simplify lfdirstate ignore handling - it is only for tracking .hglf
Mads Kiilerich <madski@unity3d.com> [Thu, 13 Dec 2012 19:19:06 +0100] rev 18147
largefiles: rename 'admin' to more descriptive 'lfstoredir'
Mads Kiilerich <madski@unity3d.com> [Thu, 13 Dec 2012 19:19:06 +0100] rev 18146
largefiles: simplify lfutil.getstandinmatcher by inlining getmatcher
Mads Kiilerich <madski@unity3d.com> [Thu, 13 Dec 2012 19:19:06 +0100] rev 18145
largefiles: remove overly complex handling of ignored and unknown files
Mads Kiilerich <madski@unity3d.com> [Fri, 28 Dec 2012 11:55:57 +0100] rev 18144
largefiles: introduce basic debugstate --large functionality
Very useful for debugging largefiles "performance" issues.
This is used for testing 03faf12fbee7.
Mads Kiilerich <madski@unity3d.com> [Fri, 28 Dec 2012 11:55:57 +0100] rev 18143
util: fold ENOENT check into unlinkpath, controlled by new ignoremissing flag
Refactor a common pattern.
Mads Kiilerich <madski@unity3d.com> [Fri, 28 Dec 2012 11:55:45 +0100] rev 18142
merge with stable
Mads Kiilerich <madski@unity3d.com> [Thu, 13 Dec 2012 19:19:06 +0100] rev 18141
largefiles: don't walk through all ignored files
Problem: 'hg status' with largefiles enabled would walk through all the files
that .hgignore said should be ignored. That made it slow if a lot of files were
.hgignored or the cache was cold.
It seems like there was a reason to this, but other improvements has rendered
this unnecessary.
Solution: .hgignore is now only ignored when that is requested (--ignore).
This is a minimal 'stable' change. There is room for other improvement.
Mads Kiilerich <madski@unity3d.com> [Thu, 13 Dec 2012 19:19:06 +0100] rev 18140
largefiles revert: update lfdirstate with result from first cleanliness check
Largefiles revert do for some reason have two lfdirstates and lfdirstatestatus
invocations in one function. The result from the first lfdirstate check was
however not written back to the lfdirstate, and some files was thus checked
twice.
Mads Kiilerich <madski@unity3d.com> [Thu, 13 Dec 2012 19:19:06 +0100] rev 18139
largefiles status: update lfdirstate with result from cleanliness check
Problem: 'hg status' kept checking largefiles with an unknown state until some
other command wrote the updated dirstate.
Solution: Add missing lfdirstate.write().
Mads Kiilerich <madski@unity3d.com> [Fri, 28 Dec 2012 11:16:01 +0100] rev 18138
bundlerepo: don't return the peer without bundlerepo from getremotechanges
Problem:
getremotechanges would return the 'other' repo if nothing was incoming and
there thus wasn't any bundle to base the repo on. The 'other' could be a http
peer which only implement the functionality available over the http protocol.
Transplant could thus fail with
TypeError: argument of type 'httppeer' is not iterable
Solution:
Return the local repo instead of the remote peer if there is no reason to place
a bundlerepo on top of the local repo.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 28 Dec 2012 00:02:40 +0100] rev 18137
strip: do not update branchcache during strip (issue3745)
At this moment, the cache is invalid, and will be thrown away.
Later the strip function will call the `localrepo.destroyed` method
that will update the branchmap cache.
Siddharth Agarwal <sid0@fb.com> [Wed, 26 Dec 2012 15:04:07 -0800] rev 18136
copies: do not track backward copies, only renames (issue3739)
The inverse of a rename is a rename, but the inverse of a copy is not a copy.
Presenting it as such -- in particular, stuffing it into the same dict as real
copies -- causes bugs because other code starts believing the inverse copies
are real.
The only test whose output changes is test-mv-cp-st-diff.t. When a backwards
status -C command is run where a copy is involved, the inverse copy (which was
hitherto presented as a real copy) is no longer displayed.
Keeping track of inverse copies is useful in some situations -- composability
of diffs, for example, since adding "a" followed by an inverse copy "b" to "a"
is equivalent to a rename "b" to "a". However, representing them would require
a more complex data structure than the same dict in which real copies are also
stored.
Siddharth Agarwal <sid0@fb.com> [Wed, 26 Dec 2012 15:03:58 -0800] rev 18135
copies: make debug messages more sensible
The -> in debug messages is currently overloaded to mean both source to dest
and dest to source. To fix this, we add explicit labels and make the arrow
direction consistent.
Siddharth Agarwal <sid0@fb.com> [Wed, 26 Dec 2012 14:50:17 -0800] rev 18134
copies: separate moves via directory renames from explicit copies
Currently the "copy" dict contains both explicit copies/moves made by a
context and pending moves that need to happen because the other context moved
the directory the file was in. For explicit copies, the dict stores a
destination to source map, while for pending moves via directory renames, it
stores a source to destination map. The merge code uses this fact in a non-
obvious way to differentiate between these two cases.
We make this explicit by storing these pending moves in a separate dict. The
dict still has a source to destination map, but that is called out in the
docstring.
Kevin Bullock <kbullock@ringworld.org> [Wed, 26 Dec 2012 11:16:18 -0600] rev 18133
merge with stable
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 24 Dec 2012 02:49:59 +0100] rev 18132
branchmap: move validity logic in the object itself
In several place, We check if a branchcache is still valid regarding the current
state of the repository. This changeset puts this logic in a method of the object
that can be reused when necessary.
A branch map is considered valid whenever it is up to date or a strict subset of
the repository state.
The change will help making branchcache aware of filtered revision.
The change in keyword is expected. the branch cache is actually invalid after
the amend. The previous check did not detected it.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 22 Dec 2012 17:08:15 +0100] rev 18131
branchmap: make update a method
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 24 Dec 2012 02:22:04 +0100] rev 18130
branchmap: make update responsible to update the cache key
The update function have all necessary data to keep the branchcache key
up to date with its value.
This saves assignment to the cache key that each caller of update had to do by
hand.
The strip case is a bit more complicated to handles from inside the function but
I do not expect any impact.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Sat, 22 Dec 2012 02:11:12 +0100] rev 18129
branchmap: factorise changelog access in update
This both improves readability and performance. Access to changelog of filtered
repository currently have a minor overhead.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 20 Dec 2012 16:28:43 +0100] rev 18128
branchmap: make write a method on the branchmap object
Pierre-Yves David <pierre-yves.david@logilab.fr> [Sat, 22 Dec 2012 02:04:49 +0100] rev 18127
branchmap: simplify write signature
All necessary data (cache value and key) are now stored in the branchcache
object. Any extra parameter is superfluous.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Sat, 22 Dec 2012 02:06:26 +0100] rev 18126
branchmap: add the tiprev (cache key) on the branchmap object
The actual cache key used on disk is the (tipnode, tiprev) pair. There is no
reason not to use the revision number for the in memory version.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Sat, 22 Dec 2012 01:59:05 +0100] rev 18125
branchmap: add the tipnode (cache key) on the branchcache object
Gathering data and cache key paves the way to a lot of simplification.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Sat, 22 Dec 2012 01:44:42 +0100] rev 18124
branchmap: store branchcache in a dedicated object
Value and key of branchcache would benefit from being hold by the same object.
Moreover some logic (update, write, validation) could be move on such object.
The creation of this object is the first step toward this move. The result will
clarify branchcache related code and hide most of the detail in the class
itself. This encapsulation will greatly helps implementation of branchcache for
filtered view of the repo.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Sat, 22 Dec 2012 01:34:23 +0100] rev 18123
branchmap: `stream_in` write remote branchcache to local one
The previous code was writing it to a non existent `branchcache` attribute. We
now write is to the proper `_branchcache` attribute and initialize the
`_branchcachetip` at the same time.
We keep writing it to disk, the previous code had this part right.
Mads Kiilerich <mads@kiilerich.com> [Mon, 24 Dec 2012 13:26:13 +0100] rev 18122
bookmarks: fix head selection for merge with two bookmarked heads
A type mismatch caused the search for the other head to fail. The code is
fragile, and instead it ended up using the 'first' bookmark head, but the
ordering is undefined and it could thus randomly use the wrong bookmarkhead
and fail with:
$ hg up -q -C e@diverged
$ hg merge
abort: merging with a working directory ancestor has no effect
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 20 Dec 2012 14:45:17 +0100] rev 18121
branchmap: extract updatebranchcache from repo
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 19 Dec 2012 14:49:06 +0100] rev 18120
branchmap: extract _updatebranchcache from repo
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 19 Dec 2012 14:47:38 +0100] rev 18119
branchmap: _updatebranchmap does not need to be filtered
The `_updatebranchmap` method on repo does not need to be filtered as all
callers are already handling filtering themself.
The fact it is filtered may had even lead to buggy behaviors, but by chances the method
make very sparse use of the repo object.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 19 Dec 2012 14:46:57 +0100] rev 18118
branchmap: extract read logic from repo
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 20 Dec 2012 13:37:37 +0100] rev 18117
branchmap: extract write logic from localrepo
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 19 Dec 2012 14:43:33 +0100] rev 18116
branchmap: create a mercurial.branchmap module
This is the foundation stone for an extraction of branches map logic from local
repository class. Most of the branches map logic have very few caller and
therefor does not fit in the current criteria for code held by the localrepo
class. Important change will be made to this code in relation with revision
filtering. So we extract it in a dedicated module before adding additional
complexity.
Follow up commit do the actual code movement.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 20 Dec 2012 12:17:44 +0100] rev 18115
bundlerepo: use _cacheabletip mechanism in bundlerepo
Instead of preventing any cache write we allow writing cache for all content of
the original repo.
The motivation for this change is to drop the custom _writebranchcache of
bundlerepo to help extraction of the branchmap logic out of localrepo.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 20 Dec 2012 13:23:29 +0100] rev 18114
branchmap: merge _branchtags into updatebranchcache
Now that nobody overwrite it, there is no reasons for `_branchtags` to remains
separated from `updatebranchcache`.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 19 Dec 2012 17:39:49 +0100] rev 18113
branchmap: factorise access to changelog in updatebranchcache
This prepares merge of `updatebranchcache` and `_branchtags`.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 20 Dec 2012 11:52:50 +0100] rev 18112
branchmap: simplify _branchtags using a new _cacheabletip method
The current _branchtags method is a remnant of an older, much larger function.
Its only remaining role is to help MQ to alter the version of branchcache we
store on disk. As MQ mutates the repository it ensures persistent cache does not
contain anything it is likely to alter.
This changeset makes explicit the stable vs volatile part of repository and
reduces the MQ specific code to the computation of this limit. The main
_branchtags code now handles this possible limit in all cases.
This will help to extract the branchmap logic from the repository.
The new code of _branchtags is a bit duplicated, but as I expect major
refactoring of this section I'm not keen to setup factorisation function here.
Dirkjan Ochtman <dirkjan@ochtman.nl> [Thu, 20 Dec 2012 21:26:30 +0100] rev 18111
hook: disable demandimport before importing hooks
This solved an obscure bug for me. In upgrading Distribute on the server, a
patch was added to has a try: import a except ImportError thing that's only
supposed to work with Python 3.3. I'm using 2.7. My hook failed with an
ImportError because of this. It seems kind of sensible to turn off
demandimport before importing the hook, since the except ImportError pattern
is used quite a bit in Python code (including in other Distribute code).
Adrian Buehlmann <adrian@cadifra.com> [Thu, 20 Dec 2012 15:18:41 +0100] rev 18110
test-pathencode: accept --seed parameter in hex as well
test-pathencode.py outputs the seed value in hex if it finds a deviation.
This change allows to specify the seed value as a command line
parameter for test-pathencode.py in hex as well.
Angel Ezquerra <angel.ezquerra@gmail.com> [Thu, 13 Dec 2012 23:37:53 +0100] rev 18109
subrepo: append subrepo path to subrepo error messages
This change appends the subrepo path to subrepo errors. That is, when there
is an error performing an operation a subrepo, rather than displaying a message
such as:
pushing subrepo MYSUBREPO to PATH
searching for changes
abort: push creates new remote head HEADHASH!
hint: did you forget to merge? use push -f to force
mercurial will show:
pushing subrepo MYSUBREPO to PATH
searching for changes
abort: push creates new remote head HEADHASH! (in subrepo MYSUBREPO)
hint: did you forget to merge? use push -f to force
The rationale for this change is that the current error messages make it hard
for TortoiseHg (and similar tools) to tell the user which subrepo caused the
push failure.
The "(in subrepo MYSUBREPO)" message has been added to those subrepo methods
were it made sense (by using a decorator). We avoid appending "(in subrepo XXX)"
multiple times when subrepos are nexted by throwing a "SubrepoAbort" exception
after the extra message is appended. The decorator will then "ignore" (i.e. just
re-raise) the exception and never add the message again.
A small drawback of this method is that part of the exception trace is lost when
the exception is catched and re-raised by the annotatesubrepoerror decorator.
Also, because the state() function already printed the subrepo path when it
threw an error, that error has been changed to avoid duplicating the subrepo
path in the error message.
Note that I have also updated several subrepo related tests to reflect these
changes.
Kevin Bullock <kbullock@ringworld.org> [Thu, 20 Dec 2012 13:49:31 -0600] rev 18108
tests: fix some slash-based Windows failures
Bryan O'Sullivan <bryano@fb.com> [Thu, 20 Dec 2012 11:40:04 -0800] rev 18107
inotify: on Python < 2.6, socket.error lacks errno
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 18 Dec 2012 01:51:08 +0100] rev 18106
hidden: invalidate hiddenrevs when needed
The `hiddenrevs` cache is volatile too (It use content from `obscache`). When
unsure it is invalidated when necessary. In a near future, the cache will
probably be moved to `revsfiltercache`