Yuya Nishihara <yuya@tcha.org> [Sun, 24 May 2015 17:59:55 +0900] rev 25384
revrange: clean up meaningless reconstruction of sets
They just exist for deduplication that was removed by the previous patch.
Yuya Nishihara <yuya@tcha.org> [Sun, 24 May 2015 17:53:22 +0900] rev 25383
revrange: drop unnecessary deduplication of revisions
Because "l" is a smartset, duplicated entries are omitted by addsets.
Gilles Moris <gilles.moris@free.fr> [Fri, 29 May 2015 22:23:58 +0200] rev 25382
summary: move the parents phase marker to commit line (issue4688)
The phase of the pending commit depends on the parent of the working directory
and on the phases.newcommit configuration.
First, this information rather depend on the commit line which describe the
pending commit.
Then, we only want to be advertised when the pending phase is going to be higher
than the default new commit phase.
So the format will change from
$ hg summary
parent: 2:ab91dfabc5ad
foo
parent: 3:24f1031ad244 tip
bar
branch: default
commit: 1 modified, 1 unknown, 1 unresolved (merge)
update: (current)
phases: 1 secret (secret)
to
parent: 2:ab91dfabc5ad
foo
parent: 3:24f1031ad244 tip
bar
branch: default
commit: 1 modified, 1 unknown, 1 unresolved (merge) (secret)
update: (current)
phases: 1 secret
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 25 May 2015 16:48:55 -0700] rev 25381
tags: support setting hgtags fnodes cache entries
An upcoming patch will teach bundle2 to transfer .hgtags fnodes
values. To support this, we need to support inserting values into
the cache.
Add functionality to do that.
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 25 May 2015 16:24:23 -0700] rev 25380
tags: support reading tags cache without populating
An upcoming patch will teach the bundle2 protocol to transfer .hgtags
fnodes to the client. We don't want this to incur any extra work
at serve time. Create an optional cache query mode that doesn't
populate the cache as a side-effect.
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 31 May 2015 17:41:35 -0700] rev 25379
check-commit: make foo_bar naming regexp less greedy
\s is equivalent to the character class [ \t\n\r\f\v]. Using \s+ in
a regular expression against input with multiple lines may match across
multiple lines.
For the regexp in question, "\+\s+" would match "+\n " and similar
sequences, leading to false positives for functions that were included
in diff context, after a modified hunk.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 27 May 2015 12:05:08 -0700] rev 25378
test: use bundle2 in test-http
Now that we have a bundle1 version of this test, we can move the
original to bundle2. This lets us handle the ouput change from using
the bundle2 protocol earlier.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 27 May 2015 12:03:31 -0700] rev 25377
test: copy test-http.t to test-http-bundle1.t
We want to keep both code paths tested. The test is a bit too extensive to
simply introduce dual testing in it so we make a copy for each protocol
version.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 27 May 2015 11:57:20 -0700] rev 25376
test: use bundle2 in test-ssh
Now that we have a bundle1 version of this test, we can move the main
version to bundle2. This lets us handle the ouput change from using
the bundle2 protocol earlier.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 27 May 2015 11:55:39 -0700] rev 25375
test: copy test-ssh.t to test-ssh-bundle1.t
We want to keep both code paths tested. The test is a bit too extensive to
simply introduce dual testing in it so we make a copy for each protocol
version.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 27 May 2015 04:39:24 -0700] rev 25374
test: lock test-unbundlehash to bundle1 usage
It is testing a bundle1 specific behavior. Bundle2 has its own way there. See
inline comment for details.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 27 May 2015 06:42:42 -0700] rev 25373
test: use bundle2 in test-acl
This test makes extensive use of --debug so moving to bundle2 based exchange
has a massive impact. We do it early to reduce the noise create by a future
usage of bundle2 as the default protocol.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 27 May 2015 11:37:11 -0700] rev 25372
test: use both bundle formats in test-pull-http
It is valuable to have both formats tested.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 27 May 2015 06:52:23 -0700] rev 25371
test: use bundle2 in test-http-proxy
The proxy test does not care about what protocol is used, but the new
protocol implies different traffic (and therefore different log
output). We switch it to bundle2 early to minimise the noise of using
bundle2 for exchange by default.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 27 May 2015 04:56:44 -0700] rev 25370
tests: use bundle2 for test-hook
Using bundle2 has an effect on which hooks are run when. We turn it on for
test-hooks early to reduce the noise of switching the default exchange to
bundle2.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 27 May 2015 04:57:03 -0700] rev 25369
pull: only prefetch bookmarks when using bundle1
All bundle2 servers now support the 'listkeys' part(1), so we'll
always be able to fetch bookmarks data at the same time as the
changeset. This should be enough to avoid the one race condition that
this bookmark prefetching is trying to work around. It even allows
future server to make sure everything is generated from the same
"transaction" if they become capable of such. The current code was
already overwriting the prefetched value with the one in bundle2
anyway. Note that this is not preventing all race conditions in
related to bookmark in 'hg pull' it makes nothing better and nothing
worse.
Reducing the number of listkeys calls will reduce the latency on pull.
The pre-fetch is also moved into a discovery step because it seems to belong
there.
(1) Because all servers not speaking 'pushkey' parts are compatible with the
'HG2X' protocol only.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 28 May 2015 14:01:53 -0700] rev 25368
pull: document the race condition with bookmark name
It seems valuable to document this in-place to help the next poor soul
looking at this code to understand what kind of beast he is currently
facing.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 28 May 2015 13:55:03 -0700] rev 25367
pull: only list remote bookmarks if -B is used to populate pulled heads
Listing remote bookmarks results in network traffic and latency. This
should be avoided when possible.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 Jun 2015 10:50:15 +0900] rev 25366
i18n-ja: synchronized with 8594d0b3018e
Yuya Nishihara <yuya@tcha.org> [Sat, 30 May 2015 12:46:30 +0900] rev 25365
hg: explicitly check that peer lookup object has instance() if call failed
If a "thing" is callable but raises TypeError for some reason, a callable
object would be returned. Thereafter, unfriendly traceback would be displayed:
Traceback (most recent call last):
...
File "mercurial/hg.pyc", line 119, in _peerorrepo
obj = _peerlookup(path).instance(ui, path, create)
AttributeError: 'function' object has no attribute 'instance'
Instead, we should show the reason why "thing(path)" didn't work:
Traceback (most recent call last):
...
File "hggit/__init__.py", line 89, in _local
p = urlcls(path).localpath()
TypeError: 'NoneType' object is not callable
If a "thing" is not callable, it must be a module or an object that implements
instance(). If that module didn't have instance(), the error message would be
"<unloaded module 'foo'> object is not callable". It doesn't make perfect sense,
but it isn't so bad as it can blame which module went wrong.
Yuya Nishihara <yuya@tcha.org> [Mon, 30 Mar 2015 16:23:35 +0900] rev 25364
extensions: show traceback on load failure if --traceback flag is set
Before this patch, there was no handy way to investigate the reason why
extension couldn't be loaded.
If ui.debug is set, tracebacks of both "hgext.foo" and "foo" are displayed
because the first ImportError could occur at very deep dependency module.
Yuya Nishihara <yuya@tcha.org> [Sun, 31 May 2015 14:40:28 +0900] rev 25363
ui: flush stdout before writing traceback to stderr
Sometimes a traceback message is paired with ui.debug(). This patch makes sure
that these messages are displayed in the right order.
Martin von Zweigbergk <martinvonz@google.com> [Wed, 27 May 2015 10:44:04 -0700] rev 25362
treemanifest: visit directory 'foo' when given e.g. '-X foo/ba?'
For globs like 'foo/ba?', match._roots() will return 'foo'. Since
visitdir(), excludes directories in the excluded roots, it would skip
the entire foo directory. This is incorrect, since 'foo/ba?' doesn't
mean that everything in foo/ should be exluded. Note that visitdir()
is called only from the treemanifest class, so this only affects tree
manifests. Fix by adding roots to the set of excluded roots only if
there are no excluded patterns.
Since 'glob' is the default pattern type for globs, we also need to
update some -X patterns in the tests to be of 'path' type to take
advantage of the visitdir tricks. For consistency, also update the -I
patterns.
It seems a little unfortunate that 'foo' in 'hg files -X foo' is
considered a pattern because of the implied 'glob' type, but improving
that is left for another day.
Laurent Charignon <lcharignon@fb.com> [Fri, 29 May 2015 14:24:50 -0700] rev 25361
phases: fix bug where native phase computation wasn't called
I forgot to include this change as a previous diff and the native code to
compute the phases was never called. The AttributeError was silently caught and
the pure implementation was used instead.
Matt Mackall <mpm@selenic.com> [Fri, 29 May 2015 17:00:55 -0500] rev 25360
merge with stable
Laurent Charignon <lcharignon@fb.com> [Wed, 27 May 2015 15:56:10 -0700] rev 25359
record: add default value for operation argument
This patch is part of a series of patches to change the recording ui to reflect
the operation currently running (commit, shelve, revert ...).
This patch adds the default value of the operation argument for record's
standard and curses interface to match what is displayed in the interface
as of today.
Laurent Charignon <lcharignon@fb.com> [Thu, 28 May 2015 16:41:47 -0700] rev 25358
record: precise documentation
This patch improves the documentation of the recordfilter function to explain
that we need a translated string for the 'operation' argument.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 27 May 2015 06:55:32 -0700] rev 25357
test: use both bundle formats in test-bookmarks-pushpull
It is valuable to have both formats tested.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 27 May 2015 06:35:34 -0700] rev 25356
test: explicitly test wire protocol discovery with bundle1 and bundle2
We want to make sure the behavior is similar in both cases.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 27 May 2015 06:37:56 -0700] rev 25355
test: use bundle2 for exchange in test-push-warn
Using bundle2 for exchange unlocks the usage of changegroup version 2. This
version of the changegroup held more information (delta base) that result in a
small increase in content size (20 bytes).
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 27 May 2015 04:34:03 -0700] rev 25354
test: use bundle2 for exchange in test-largefile
Using bundle2 for exchange unlock the usage of changegroup version 2. This
version of the changegroup held more information (delta base) that result in a
small increase in content size.
It also lead to reordering of output because the exchange scheduling is a bit
different.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 27 May 2015 04:30:40 -0700] rev 25353
test: use bundle2 for exchange in test-push-warn
Using bundle2 for exchange unlocks the usage of changegroup version 2. This
version of the changegroup held more information (delta base) that result in
a small increase in content size (20 bytes x 2 changes).