Yuya Nishihara <yuya@tcha.org> [Thu, 22 Sep 2016 15:52:09 +0900] rev 35269
test-log: test that fctx.ancestors() can't index parents only by linkrev
This covers a possible bug that could be caused by the following change:
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -1047,7 +1047,7 @@ class basefilectx(object):
while True:
for parent in c.parents()[:cut]:
- visit[(parent.linkrev(), parent.filenode())] = parent
+ visit[parent.linkrev()] = parent
if not visit:
break
c = visit.pop(max(visit))
Boris Feld <boris.feld@octobus.net> [Tue, 17 Oct 2017 15:27:22 +0200] rev 35268
pull: retrieve bookmarks through the binary part when possible
This makes pull consistent with the part used by push and provide us with a
more compact representation of bookmarks.
In addition, this opens the way for smarter bookmark exchanges (e.g. filtering
by names or only sending the bookmark relevant to the pulled set, etc).
Boris Feld <boris.feld@octobus.net> [Tue, 17 Oct 2017 15:27:17 +0200] rev 35267
getbundle: add support for 'bookmarks' boolean argument
This new argument requests a 'bookmarks' part from the server. It is meant to
be used instead of the "listkeys" request.
Boris Feld <boris.feld@octobus.net> [Tue, 17 Oct 2017 15:26:16 +0200] rev 35266
bundle2: support a 'records' mode for the 'bookmarks' part
In this mode, the bookmarks changes are record in the 'bundleoperation' records
instead of inflicted to the repository. This is necessary to use the part when
pulling.
Boris Feld <boris.feld@octobus.net> [Tue, 17 Oct 2017 15:39:34 +0200] rev 35265
bundle2: add a 'modes' dictionary to the bundle operation
This new attribute allows the codes requesting an unbundling to pass important
information to individual part handlers. The current target use case is to
allow for receiving 'bookmarks' part without directly updating local
repository, but just recording the received data instead. This is necessary
for pull where the remote bookmarks are processed locally. I expect the
concept to be beneficial to other parts in the future.
To clarify the bookmark behavior on pull, the remote bookmark value are not just
taken -as-is- into the local repository. There is an extra step to detect
bookmark divergence. The remote bookmarks data are stored until this processing
happens.
Boris Feld <boris.feld@octobus.net> [Tue, 17 Oct 2017 12:38:13 +0200] rev 35264
bookmark: use the 'bookmarks' bundle2 part to push bookmark update (
issue5165)
We use the new binary parts we introduced earlier to exchange bookmark. The
payload is a bit more compact since we use binary and the length of bookmarks
is no longer constrained to 255.
.. fix:: Issue 5165
Bookmark, whose name is longer than 255, can again be exchanged again
between 4.4+ client and servers.
Boris Feld <boris.feld@octobus.net> [Tue, 17 Oct 2017 12:37:39 +0200] rev 35263
bookmark: introduce in advance a variant of the exchange test
We are about to introduce a new way to push bookmark to server. We introduce
the test variant before actually updating the exchange to help the output
changes to stand out when it happens.
Boris Feld <boris.feld@octobus.net> [Sun, 15 Oct 2017 19:22:56 +0200] rev 35262
push: move bundle2-pushkey based bookmarks exchange in its own function
We are about to introduce an alternative way to push bookmark over bundle2.
Boris Feld <boris.feld@octobus.net> [Tue, 17 Oct 2017 12:07:24 +0200] rev 35261
bookmark: add pushkey hook compatiblity to the bundle2 part
Currently, pushing a bookmark update triggers a pushkey hooks. It is likely
that users in the wild use such hooks to control bookmark movement. Using a non
push-key mechanism to exchange bookmark means these hooks are no longer called,
possibly breaking existing users setup. So we add explicit call to the pushkey
hooks in the handling of the bundle2 part. This behavior can be disabled with a
new config knob: 'server.bookmarks-pushkey-compat'.
Boris Feld <boris.feld@octobus.net> [Sun, 15 Oct 2017 18:02:11 +0200] rev 35260
bookmark: introduce a 'bookmarks' part
This part can carry and apply bookmarks information. We start with adding the
core behavior of the part. In its current form, the part is only suitable for
push since it plain update the bookmark without consideration for the local
state. Support of the behavior needed for pulling will be added in later
changesets.
Boris Feld <boris.feld@octobus.net> [Mon, 13 Nov 2017 04:22:45 +0100] rev 35259
push: include a 'check:bookmarks' part when possible
Before updating the actual bookmark update, we can start with updating the way
we check for push race. Checking bookmarks state earlier is useful even if we
still use pushkey. Aborting before the changegroup is added can save a lot of
time.
Boris Feld <boris.feld@octobus.net> [Sun, 15 Oct 2017 15:01:03 +0200] rev 35258
bookmark: add a 'check:bookmarks' bundle2 part
This part checks that bookmarks are still at the node they are expected to be.
This allows a pushing client to detect push race where the repository was
updated between the time it discovered the server state and the time it managed
to finish its push.
Such checking already exists when pushing bookmark through pushkey. This new
part can be inserted at the beginning of the bundle, triggering abort earlier.
In addition, we would like to move away from pushey to push bookmark. A step
useful to solve
issue5165.
Boris Feld <boris.feld@octobus.net> [Sun, 15 Oct 2017 14:59:55 +0200] rev 35257
bookmark: add methods to binary encode and decode bookmark values
Coming new bundle2 parts related to bookmark will use a binary encoding. It
encodes a series of '(bookmark, node)' pairs. Bookmark name has a high enough
size limit to not be affected by
issue5165. (64K length, we are well covered)
Augie Fackler <augie@google.com> [Wed, 06 Dec 2017 09:25:43 -0500] rev 35256
tests: remove {a..h} bashism from remotenames
I'm not bothering with a check-code test because this is a weird
construct that I didn't even know existed before it was breaking the
BSD build, and it also appears to fail if /bin/sh is dash like it is
on our Linux builder.
Differential Revision: https://phab.mercurial-scm.org/D1605
Anton Shestakov <av6@dwimlabs.net> [Wed, 06 Dec 2017 12:10:16 +0800] rev 35255
hgweb: move common vertex code to Graph.prototype
Just to give some context to the return values: vertex() needs to return two
HTML elements as strings, <li> to be used as a background and a <li> to be
shown in foreground. The latter was made obsolete recently when changesets
started to be rendered server-side, but background elements are still useful
for now.
Anton Shestakov <av6@dwimlabs.net> [Wed, 06 Dec 2017 12:01:07 +0800] rev 35254
hgweb: create Graph methods using a prototype
This way it's possible to call the original methods even if they were
overridden.
Anton Shestakov <av6@dwimlabs.net> [Wed, 06 Dec 2017 11:59:19 +0800] rev 35253
hgweb: remove unused Graph.cur property
It was introduced in
0dba955c2636, but was already unused. I missed it in
e46f0b653002.
Augie Fackler <augie@google.com> [Tue, 05 Dec 2017 16:58:00 -0500] rev 35252
tests: remove shell function helper from test-largefiles-misc
Now that all the complexity is in a Python script, we can just
directly invoke the tool.
Differential Revision: https://phab.mercurial-scm.org/D1599
Augie Fackler <augie@google.com> [Tue, 05 Dec 2017 16:44:20 -0500] rev 35251
contrib: ban find(1)'s -printf operator, as it is a GNU-ism
Differential Revision: https://phab.mercurial-scm.org/D1598
Augie Fackler <augie@google.com> [Wed, 06 Dec 2017 16:45:38 -0500] rev 35250
merge with stable
Yuya Nishihara <yuya@tcha.org> [Tue, 05 Dec 2017 21:56:48 +0900] rev 35249
repoview: include filter name in repr for debugging
Yuya Nishihara <yuya@tcha.org> [Tue, 05 Dec 2017 21:50:33 +0900] rev 35248
repoview: extract a factory function of proxy class
This makes sure that dynamically-created class objects are isolated from
local binding of repo instances. The type cache is moved to module level
as it isn't tied to each instance.
Yuya Nishihara <yuya@tcha.org> [Tue, 05 Dec 2017 21:37:30 +0900] rev 35247
repoview: do not include filter name in name of proxy class
The type object is shared across all filters. I'll add __repr__() instead.
Yuya Nishihara <yuya@tcha.org> [Tue, 05 Dec 2017 21:31:01 +0900] rev 35246
setup: convert version strings to unicode on Python 3
Fixes the following error:
stderr from 'hg log -T x
-r only(.,'b'4.4.2'')':
b' hg: parse error at 10: unexpected token: symbol'
Yuya Nishihara <yuya@tcha.org> [Thu, 30 Nov 2017 22:43:03 +0900] rev 35245
thirdparty: move selectors2 module to where it should be
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 28 Nov 2017 05:50:45 +0530] rev 35244
rewriteutil: use precheck() in uncommit and amend commands
Differential Revision: https://phab.mercurial-scm.org/D1526
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 24 Nov 2017 03:44:50 +0530] rev 35243
rewriteutil: add a precheck function to check if revs can be rewritten
The precheck function is intended to be used before we start rewritting
changesets.
Differential Revision: https://phab.mercurial-scm.org/D1503
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 24 Nov 2017 03:40:33 +0530] rev 35242
rewriteutil: add utility function to check if we can create new unstable cset
This patch adds a new file which will contain utility functions related to
rewritting changesets. It also adds a utility function to check if the
rewritting operation creates new unstable changesets and are we allowed to
create them.
This rewriteutil.py introduced in this patch and the utility functions added in
the upcoming patches exists in the evolve extension are being ported from there.
Differential Revision: https://phab.mercurial-scm.org/D1502
Jun Wu <quark@fb.com> [Tue, 05 Dec 2017 12:23:48 -0800] rev 35241
test-run-tests: do not rebuild hg in the test
d600bda4 and
fc0f3ed0 added code to call `$PYTHON run-tests.py ...`. That
will rebuild hg, is slow and could have other crashes from setup.py, like:
Unable to find a working hg binary to extract the version from the
repository tags
Therefore use `run-tests.py -l` instead.
Differential Revision: https://phab.mercurial-scm.org/D1595
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 09 Nov 2017 12:10:03 +0530] rev 35240
remotenames: consider existing data while storing newer data
Previously reviewed as D1357.
Differential Revision: https://phab.mercurial-scm.org/D1551