Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:17:35 +0100] rev 40927
test: enable sparse-revlog for test-ssh-proto.t
We are about to enable sparse-revlog globally. To help with reviewing the
tests change, we isolate them in individual changesets.
Differential Revision: https://phab.mercurial-scm.org/D5336
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:16:12 +0100] rev 40926
test: enable sparse-revlog for test-ssh-bundle1.t
We are about to enable sparse-revlog globally. To help with reviewing the
tests change, we isolate them in individual changesets.
Differential Revision: https://phab.mercurial-scm.org/D5335
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:15:51 +0100] rev 40925
test: enable sparse-revlog for test-sparse-requirement.t
We are about to enable sparse-revlog globally. To help with reviewing the
tests change, we isolate them in individual changesets.
Differential Revision: https://phab.mercurial-scm.org/D5334
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:15:37 +0100] rev 40924
test: enable sparse-revlog for test-revlog-v2.t
We are about to enable sparse-revlog globally. To help with reviewing the
tests change, we isolate them in individual changesets.
Differential Revision: https://phab.mercurial-scm.org/D5333
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:15:21 +0100] rev 40923
test: enable sparse-revlog for test-repo-compengines.t
We are about to enable sparse-revlog globally. To help with reviewing the
tests change, we isolate them in individual changesets.
Differential Revision: https://phab.mercurial-scm.org/D5332
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:14:54 +0100] rev 40922
test: enable sparse-revlog for test-remotefilelog-log.t
We are about to enable sparse-revlog globally. To help with reviewing the
tests change, we isolate them in individual changesets.
Differential Revision: https://phab.mercurial-scm.org/D5331
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:14:22 +0100] rev 40921
test: enable sparse-revlog for test-remotefilelog-clone-tree.t
We are about to enable sparse-revlog globally. To help with reviewing the
tests change, we isolate them in individual changesets.
Differential Revision: https://phab.mercurial-scm.org/D5330
Boris Feld <boris.feld@octobus.net> [Wed, 28 Nov 2018 20:00:57 +0100] rev 40920
test: enable sparse-revlog for test-remotefilelog-clone.t
We are about to enable sparse-revlog globally. To help with reviewing the
tests change, we isolate them in individual changesets.
Differential Revision: https://phab.mercurial-scm.org/D5329
Boris Feld <boris.feld@octobus.net> [Wed, 28 Nov 2018 20:01:08 +0100] rev 40919
test: enable sparse-revlog for test-phases.t
We are about to enable sparse-revlog globally. To help with reviewing the
tests change, we isolate them in individual changesets.
Differential Revision: https://phab.mercurial-scm.org/D5328
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:12:37 +0100] rev 40918
test: enable sparse-revlog for test-narrow-clone.t
We are about to enable sparse-revlog globally. To help with reviewing the
tests change, we isolate them in individual changesets.
Differential Revision: https://phab.mercurial-scm.org/D5327
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:12:15 +0100] rev 40917
test: enable sparse-revlog for test-narrow-clone-stream.t
We are about to enable sparse-revlog globally. To help with reviewing the
tests change, we isolate them in individual changesets.
Differential Revision: https://phab.mercurial-scm.org/D5326
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:12:01 +0100] rev 40916
test: enable sparse-revlog for test-narrow-clone-no-ellipsis.t
We are about to enable sparse-revlog globally. To help with reviewing the
tests change, we isolate them in individual changesets.
Differential Revision: https://phab.mercurial-scm.org/D5325
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:09:19 +0100] rev 40915
test: enable sparse-revlog for test-lfs-serve.t
We are about to enable sparse-revlog globally. To help with reviewing the
tests change, we isolate them in individual changesets.
Differential Revision: https://phab.mercurial-scm.org/D5324
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:09:08 +0100] rev 40914
test: enable sparse-revlog for test-lfs-largefiles.t
We are about to enable sparse-revlog globally. To help with reviewing the
tests change, we isolate them in individual changesets.
Differential Revision: https://phab.mercurial-scm.org/D5323
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:08:56 +0100] rev 40913
test: enable sparse-revlog for test-lfconvert.t
We are about to enable sparse-revlog globally. To help with reviewing the
tests change, we isolate them in individual changesets.
Differential Revision: https://phab.mercurial-scm.org/D5322
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:06:10 +0100] rev 40912
test: enable sparse-revlog for test-init.t
We are about to enable sparse-revlog globally. To help with reviewing the
tests change, we isolate them in individual changesets.
Differential Revision: https://phab.mercurial-scm.org/D5321
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:08:42 +0100] rev 40911
test: enable sparse-revlog for test-http-protocol.t
We are about to enable sparse-revlog globally. To help with reviewing the
tests change, we isolate them in individual changesets.
Differential Revision: https://phab.mercurial-scm.org/D5320
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:04:59 +0100] rev 40910
test: enable sparse-revlog for test-hgweb-commands.t
We are about to enable sparse-revlog globally. To help with reviewing the
tests change, we isolate them in individual changesets.
Differential Revision: https://phab.mercurial-scm.org/D5319
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:04:04 +0100] rev 40909
test: enable sparse-revlog for test-debugcommands.t
We are about to enable sparse-revlog globally. To help with reviewing the
tests change, we isolate them in individual changesets.
Differential Revision: https://phab.mercurial-scm.org/D5318
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:02:18 +0100] rev 40908
test: enable sparse-revlog for test-clone-uncompressed.t
We are about to enable sparse-revlog globally. To help with reviewing the
tests change, we isolate them in individual changesets.
Differential Revision: https://phab.mercurial-scm.org/D5317
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:03:04 +0100] rev 40907
test: enable sparse-revlog for test-clonebundles.t
We are about to enable sparse-revlog globally. To help with reviewing the
tests change, we isolate them in individual changesets.
Differential Revision: https://phab.mercurial-scm.org/D5316
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:43:34 +0100] rev 40906
test: enable sparse-revlog for test-bundle.t
We are about to enable sparse-revlog globally. To help with reviewing the
tests change, we isolate them in individual changesets.
Differential Revision: https://phab.mercurial-scm.org/D5315
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:13:01 +0100] rev 40905
test: make sure sparse-revlog does not interfer with test-parseindex.t
That test carefully craft revlog to reproduce issues. We do not want new revlog
behavior to interfere with that.
Differential Revision: https://phab.mercurial-scm.org/D5314
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:41:23 +0100] rev 40904
test: explicitly disable sparse-revlog in test-http-bad-server.t
The `test-http-bad-server.t` test is very fragile with hard-coded number all
around. Adding any new capability have massive consequences on it that are
long and tiresome to handle. Since the test check more generic protocol level
behavior, it does not need to follow all new capabilities. Disabling the
capabilities is a much simpler way to avoid the issue.
We make sure `sparse-revlog` will not impact this test once turned on by
default.
Differential Revision: https://phab.mercurial-scm.org/D5313
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:40:33 +0100] rev 40903
test: explicitly disable sparse-revlog in test-generaldelta.t
That test is about testing generaldelta without further improvement. We ensure
it will stay that way even if sparse-revlog is turned on by default. The
sparse-revlog format is tested on his own in a different test file.
Differential Revision: https://phab.mercurial-scm.org/D5312
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 01:42:03 +0100] rev 40902
sparse-revlog: disable sparse-revlog if config disable general-delta
Sparse-revlog requires general-delta in order to work. If general-delta is
explicitly disabled through configuration, we should honor that and also
disabled sparse-revlog.
This change will be more relevant when sparse-revlog is enabled by default.
Differential Revision: https://phab.mercurial-scm.org/D5311
Boris Feld <boris.feld@octobus.net> [Mon, 12 Nov 2018 00:48:11 +0100] rev 40901
test: fix config typo in test-upgrade-repo.t
Differential Revision: https://phab.mercurial-scm.org/D5310
Pulkit Goyal <pulkit@yandex-team.ru> [Mon, 10 Dec 2018 15:45:46 +0300] rev 40900
tests: use $RUNTESTDIR instead of $TESTDIR in narrow-library.sh
This is done so that third party extensions can use narrow-library.sh in tests.
Differential Revision: https://phab.mercurial-scm.org/D5400
Boris Feld <boris.feld@octobus.net> [Mon, 10 Dec 2018 10:21:08 +0100] rev 40899
tests: update network related errors for Debian 9
We have a CI job that runs the Mercurial tests in parallel. Some of the
network related failures seems to be different on the environment. Oddly,
those failures happens only when running the tests in parallel, not when
running the test file only.
I have no idea how to get the windows formatted message for the error, if
someone could give me an hand, I will update this changeset with the value.
Differential Revision: https://phab.mercurial-scm.org/D5401
Yuya Nishihara <yuya@tcha.org> [Sun, 04 Nov 2018 16:57:05 +0900] rev 40898
util: implement pop() on lrucachedict
This moves __delitem__() to pop() as the requirement is pretty much the same,
and reimplement __delitem__() by using pop().
Yuya Nishihara <yuya@tcha.org> [Wed, 31 Oct 2018 22:29:05 +0900] rev 40897
util: add method to peek item in lrucachedict
I want a function that doesn't unnecessarily update the internal state of
the cache dict after fork().
Yuya Nishihara <yuya@tcha.org> [Wed, 31 Oct 2018 22:05:45 +0900] rev 40896
commandserver: loop over selector events
An IPC socket will be waited by the same selector.
Yuya Nishihara <yuya@tcha.org> [Wed, 31 Oct 2018 22:03:07 +0900] rev 40895
commandserver: remove redundant "if True" block
Yuya Nishihara <yuya@tcha.org> [Wed, 31 Oct 2018 22:02:38 +0900] rev 40894
commandserver: extract handler of new socket connection
This prepares for adding an IPC socket.
Yuya Nishihara <yuya@tcha.org> [Wed, 31 Oct 2018 21:57:11 +0900] rev 40893
commandserver: pass around option to hook repo instance creation
This is necessary to wrap a repo instance so the master process will be
notified on repo.close().
Matt Harbison <matt_harbison@yahoo.com> [Sun, 09 Dec 2018 19:40:54 -0500] rev 40892
py3: stop subscripting socket.error
In 3.3 and later, this is now an alias for OSError. I hacked up the server code
enough that I was able to trigger the exception handler in server.py from
test-http-bundle1.t. Other instances of this either subscript through the
`args` member, or reference the errno or strerror attributes.
Note that on Windows, the errno value seems to reflect the Winsock error, so the
various tests for EPIPE seem like they would always fail. But that seems to be
the case in py2 as well.
Boris Feld <boris.feld@octobus.net> [Sun, 09 Dec 2018 16:49:55 +0100] rev 40891
test: update test-logtoprocess.t to not requires less
The test previously assumed that a working pager was present in the test
environment. Update it to use the fakepager instead.
Differential Revision: https://phab.mercurial-scm.org/D5399
Matt Harbison <matt_harbison@yahoo.com> [Sun, 09 Dec 2018 21:23:34 -0500] rev 40890
py3: quote several instances of $PYTHON for Windows
Python3 lives in Program Files by default. The last remaining unquoted instance
is in test-hghave.t. I can't figure out how to quote that, as it either
complains:
'c:\\Program' is not recognized as an internal or external command,
operable program or batch file.
or
$TESTTMP.sh: line 22: "C:/Program Files/Python37/python.exe": $ENOENT$
Matt Harbison <matt_harbison@yahoo.com> [Sun, 09 Dec 2018 18:35:35 -0500] rev 40889
py3: adapt test-largefiles-wireproto.t to python3
Matt Harbison <matt_harbison@yahoo.com> [Sun, 09 Dec 2018 13:53:08 -0500] rev 40888
py3: byteify test-push-race.t
Matt Harbison <matt_harbison@yahoo.com> [Sun, 09 Dec 2018 13:33:36 -0500] rev 40887
py3: convert filename to bytes in test-hardlinks.t
Windows was complaining about passing str to CreateFileA() in win32.py.
Martin von Zweigbergk <martinvonz@google.com> [Sat, 08 Dec 2018 23:41:54 -0800] rev 40886
narrow: keep bookmarks temporarily stripped for as long as commits are
The narrow extension also has support for shallowness and for
inserting older commits on pull. It works by temporarily stripping
newer commits, adding the older commits, then re-applying the stripped
bundle. The regular Mercurial server uses that when you widen,
although it shouldn't be necessary there. Our Google-internal server
does it when the user requests an older commit.
Our Google-internal tests fail since 7caf632e30c3 (filecache:
unimplement __set__() and __delete__() (API), 2018-10-20). I haven't
quite understood the problem, but it's related to the way we
temporarily hide bookmarks while the commits they point to are
stripped. When a transaction is started, Mercurial tries to read
various things from the repo for the transaction summary. That leads
to computation of hidden commits, which leads to an attempt to find
commits pinned by bookmarks. This is the reason we temporarily hide
the bookmarks. I think the aforementioned commit makes the restored
bookmarks visible earlier than before (which seems like an
improvement), so we can no longer incorrectly rely on the
repo._bookmarks field being cached too long (IIUC).
This patch makes it so we restore the temporarily hidden bookmarks
only after the temporary bundle has been re-applied. It also adapts
the code to update the repo.__bookmarks field using the pattern
described in the aforementioned commit instead of writing directly to
the fiels.
I have spent many hours trying to understand what was going on here,
but I still don't know if this can also happen without our custom
server. So this patch unfortunately does not add any tests; I have
only been able to test the fix using our Google-internal tests.
Differential Revision: https://phab.mercurial-scm.org/D5398
Martin von Zweigbergk <martinvonz@google.com> [Sat, 08 Dec 2018 23:04:11 -0800] rev 40885
narrow: drop obsolete support for old Mercurial
Not needed since narrow is shipped with core.
Differential Revision: https://phab.mercurial-scm.org/D5397
Martin von Zweigbergk <martinvonz@google.com> [Thu, 06 Dec 2018 10:15:41 -0800] rev 40884
tests: test that narrow preserves bookmarks on widen
When widening inserts older commits in the changelog, we have to
preserve bookmarks so they are not removed by the call to
repair.strip() we temporarily do. We didn't have any tests for that
before.
Differential Revision: https://phab.mercurial-scm.org/D5396
Martin von Zweigbergk <martinvonz@google.com> [Fri, 07 Dec 2018 14:23:17 -0800] rev 40883
rebase: clarify that commits that become empty are skipped
Our message just said that it created no changes, but we didn't
explicitly say that that meant that the the commit was not rebased. It
also wasn't clear why it created no changes, so this patch also
clarifies that that was because the changes were already in the
destination.
Differential Revision: https://phab.mercurial-scm.org/D5395
Martin von Zweigbergk <martinvonz@google.com> [Fri, 07 Dec 2018 14:17:09 -0800] rev 40882
rebase: format commit in usual way when explaining that it became empty
We use the _ctxdesc() for other similar messages, so it seems we
should use it here too.
Differential Revision: https://phab.mercurial-scm.org/D5394
Yuya Nishihara <yuya@tcha.org> [Mon, 29 Oct 2018 21:50:53 +0900] rev 40881
rust: propagate error of index_get_parents() properly
Before, rustla_contains() would return 0 on error, and the exception would
be cleared or noticed somewhere else. We need to propagate the error from
AncestorsIterator up to the FFI surface.
Yuya Nishihara <yuya@tcha.org> [Sun, 02 Dec 2018 22:20:38 +0900] rev 40880
rust: look up HgRevlogIndex_GetParents() from symbol table
And removes the unused index_get_parents_checked() function.
I expect the Index struct will be turned into a pyobject type, though I
haven't written any PoC-level patches yet.
Yuya Nishihara <yuya@tcha.org> [Sun, 02 Dec 2018 22:10:37 +0900] rev 40879
revlog: add public CPython function to get parent revisions
Since this is a public function, it validates the input revision, and supports
nullrev. index_get_parents_checked() will be replaced by this function.
Yuya Nishihara <yuya@tcha.org> [Sun, 02 Dec 2018 21:41:24 +0900] rev 40878
revlog: rename indexType to HgRevlogIndex_Type as it's a global symbol
It follows the CPython naming convention, but uses Hg instead of Py.
Yuya Nishihara <yuya@tcha.org> [Sun, 02 Dec 2018 21:37:42 +0900] rev 40877
revlog: export symbol of indexType
The idea is to wrap the index object with rust-cpython. I haven't tried it,
but it should be doable. We'll probably need a better interface than raw
function pointers to do more in Rust.
Yuya Nishihara <yuya@tcha.org> [Sun, 02 Dec 2018 21:33:43 +0900] rev 40876
setup: fix path of rust source dependencies
Appears that they were screwed up while moving the source files around.
Since rust-direct-ffi sources are automatically added to the depends list,
we only need to list hg-core sources.
Martin von Zweigbergk <martinvonz@google.com> [Sun, 04 Mar 2018 08:50:12 -0800] rev 40875
rebase: remove now-unnecessary arguments to _abort()
Since _abort() is now an instance method, we don't need to pass state
that's available on "self".
Differential Revision: https://phab.mercurial-scm.org/D5393
Martin von Zweigbergk <martinvonz@google.com> [Sun, 04 Mar 2018 08:41:29 -0800] rev 40874
rebase: move abort() onto rebaseruntime
The function depends on a lot of the state of rebaseruntime, so it
makes sense for it to be an instance method. This will let us remove
many of the arguments to the method. That will be done in a later
patch.
Differential Revision: https://phab.mercurial-scm.org/D5392
Martin von Zweigbergk <martinvonz@google.com> [Wed, 21 Mar 2018 16:46:28 -0700] rev 40873
cleanupnodes: trust caller when "moves" is not None
If "moves" (indicating how to move bookmarks) is None, we fill it out
based on "replacements" (indicating which obsmarkers to add). If
"moves" is not None, we would still add items based on
"replacements". This makes it impossible to pass "moves={}" and not
move bookmarks, which surprised me. The only caller that currently
passes a value for "moves" was the rebase extension and there we were
already adding bookmark moves corresponding to obsmarker additions, so
it should not be impacted.
Differential Revision: https://phab.mercurial-scm.org/D5391
Martin von Zweigbergk <martinvonz@google.com> [Wed, 05 Dec 2018 14:17:15 -0800] rev 40872
shelve: change transaction description from "commit" to "shelve"
"commit" was probably a copy&paste mistake.
Differential Revision: https://phab.mercurial-scm.org/D5390
Martin von Zweigbergk <martinvonz@google.com> [Wed, 05 Dec 2018 14:08:01 -0800] rev 40871
shelve: drop unnecessary backup of dirstate for phase-based case
Regular shelve has a hack using an uncommitted transaction that's then
aborted at the end of the operation. It preserves the dirstate across
the abort, however, by saving a backup copy of it. Phase-based shelve
instead commits the transaction, so the hack shouldn't be necessary
there.
Differential Revision: https://phab.mercurial-scm.org/D5389
Martin von Zweigbergk <martinvonz@google.com> [Wed, 05 Dec 2018 14:46:09 -0800] rev 40870
tests: split test-shelve.t in two
test-shelve.t dominated run time for all shelve tests.
Before:
# Ran 9 tests, 1 skipped, 0 failed.
real 0m43.568s
user 2m15.822s
sys 0m40.857s
After:
# Ran 11 tests, 1 skipped, 0 failed.
real 0m24.574s
user 2m21.354s
sys 0m40.435s
Differential Revision: https://phab.mercurial-scm.org/D5388
Martin von Zweigbergk <martinvonz@google.com> [Tue, 04 Dec 2018 22:16:13 -0800] rev 40869
remotefilelog: rely on progress helper for keeping track of position
The progress helper class keeps track of its current position, so we
don't need a "count" variable for that.
Differential Revision: https://phab.mercurial-scm.org/D5386
Martin von Zweigbergk <martinvonz@google.com> [Tue, 04 Dec 2018 22:15:42 -0800] rev 40868
remotefilelog: reduce use of "count" container
We had already given the initial value of "count[0]" a name, so just
use that when applicable.
Differential Revision: https://phab.mercurial-scm.org/D5385
Martin von Zweigbergk <martinvonz@google.com> [Tue, 04 Dec 2018 22:12:47 -0800] rev 40867
remotefilelog: replace a "a=[expr]; b=a[0]" by "b=expr; a = [b]"
Simpler is better.
Differential Revision: https://phab.mercurial-scm.org/D5384
Martin von Zweigbergk <martinvonz@google.com> [Tue, 04 Dec 2018 22:09:33 -0800] rev 40866
remotefilelog: remove an unnecessary update of "count" container
The "count" container is never used after this point, so there is no
need to update it.
Differential Revision: https://phab.mercurial-scm.org/D5383
Martin von Zweigbergk <martinvonz@google.com> [Tue, 04 Dec 2018 21:58:46 -0800] rev 40865
remotefilelog: avoid temporarily using "count" variable as synonym for "total"
The "count" variable is generally used for updating progress, but
early in fileserverclient.request(), its used to mean the total
count. We already have another "total" variable for that, so it seems
much clearer to use that.
Differential Revision: https://phab.mercurial-scm.org/D5382
Martin von Zweigbergk <martinvonz@google.com> [Wed, 05 Dec 2018 09:30:01 -0800] rev 40864
remotefilelog: use progress helper in fileserverclient
Differential Revision: https://phab.mercurial-scm.org/D5381
Martin von Zweigbergk <martinvonz@google.com> [Tue, 04 Dec 2018 16:32:59 -0800] rev 40863
remotefilelog: use progress helper in shallowrepo
Differential Revision: https://phab.mercurial-scm.org/D5380
Martin von Zweigbergk <martinvonz@google.com> [Tue, 04 Dec 2018 16:31:04 -0800] rev 40862
remotefilelog: use progress helper in shallowbundle
Differential Revision: https://phab.mercurial-scm.org/D5379
Martin von Zweigbergk <martinvonz@google.com> [Tue, 04 Dec 2018 16:29:05 -0800] rev 40861
remotefilelog: use progress helper in repack
Differential Revision: https://phab.mercurial-scm.org/D5378
Martin von Zweigbergk <martinvonz@google.com> [Tue, 04 Dec 2018 16:23:00 -0800] rev 40860
remotefilelog: use progress helper in remotefilelogserver
Differential Revision: https://phab.mercurial-scm.org/D5377
Martin von Zweigbergk <martinvonz@google.com> [Tue, 04 Dec 2018 16:09:20 -0800] rev 40859
remotefilelog: use progress helper in basestore
Differential Revision: https://phab.mercurial-scm.org/D5376
Martin von Zweigbergk <martinvonz@google.com> [Tue, 04 Dec 2018 16:02:56 -0800] rev 40858
remotefilelog: use progress helper when analyzing repos
Differential Revision: https://phab.mercurial-scm.org/D5375
Martin von Zweigbergk <martinvonz@google.com> [Tue, 04 Dec 2018 15:59:47 -0800] rev 40857
fastannotate: use progress helper
Differential Revision: https://phab.mercurial-scm.org/D5374
Martin von Zweigbergk <martinvonz@google.com> [Tue, 04 Dec 2018 15:57:11 -0800] rev 40856
debugbuildannotatecache: use progress helper
Differential Revision: https://phab.mercurial-scm.org/D5373
Boris Feld <boris.feld@octobus.net> [Fri, 13 Jul 2018 11:45:15 +0200] rev 40855
upgrade: clarify "aggressivemergedelta" handling
We rename "aggressivemergedelta" argument to "forceaggressivemergedelta". The
previous argument naming could infer an absolute control on the behavior.
However, the code show we respect the config option if set.
Boris Feld <boris.feld@octobus.net> [Fri, 13 Jul 2018 02:54:52 +0200] rev 40854
upgrade: test that fncache is valid after repository upgrade
The behavior was correct. Now it is correct and tested.
Augie Fackler <augie@google.com> [Wed, 05 Dec 2018 12:25:41 -0500] rev 40853
tests: update `rm` invocation for new location of checklink
This should fix the test on FreeBSD.
Differential Revision: https://phab.mercurial-scm.org/D5387
idlsoft <idlsoft@gmail.com> [Mon, 03 Dec 2018 14:17:38 -0500] rev 40852
bookflow: new extension for bookmark-based branching
This extension should be helpful for feature branches - based workflows.
At my company we first considered branches, but weren't sure about creating a lot of permanent objects.
We tried bookmarks, but found some scenarios to be difficult to control.
The main problem, was the active bookmark being moved on update.
Disabling that made everything a lot more predictable.
Bookmarks move on commit, and updating means switching between them.
The extension also implements a few minor features to better guide the workflow:
- hg bookmark NAME can be ambiguous (create or move), unlike hg branch. The extension requires -rev to move.
- require an active bookmark on commit.
- some bookmarks can be protected (like @), useful for teams, that require code reviews.
- block creation of new branches.
The initial implementation requires no changes in the core, but it does rely on some implementation details.
I thought it may be useful to discuss the functionality first, and then focus making the code more robust.
Differential Revision: https://phab.mercurial-scm.org/D4312
Georges Racinet <gracinet@anybox.fr> [Tue, 04 Dec 2018 17:03:43 +0000] rev 40851
rust: make clean takes care of rust/target
This isn't the prettiest way of doing it, but it doesn't require looking
up cargo, or wondering whether that should be part of setup.py clean.
Differential Revision: https://phab.mercurial-scm.org/D5369
Georges Racinet <georges@racinet.fr> [Tue, 04 Dec 2018 14:01:13 +0000] rev 40850
rust: rename local variables in AncestorsIterator::next
It was confusing to have p1 and parents.1 ; (p1, p2) is clearer.
Differential Revision: https://phab.mercurial-scm.org/D5365
Augie Fackler <augie@google.com> [Tue, 04 Dec 2018 17:34:10 -0500] rev 40849
tests: stabilize test-inherit-mode.t on FreeBSD and macOS again
This is the same fix as 90e26ef4cbb1, just repeated on the new file
location.
Differential Revision: https://phab.mercurial-scm.org/D5371
Martin von Zweigbergk <martinvonz@google.com> [Tue, 04 Dec 2018 08:50:33 -0800] rev 40848
tests: drop redundant "#if execbit" from test-rebase-inmemory.t
The whole file is already guarded by "#require execbit".
Differential Revision: https://phab.mercurial-scm.org/D5366
Martin von Zweigbergk <martinvonz@google.com> [Mon, 03 Dec 2018 16:56:09 -0800] rev 40847
narrow: don't resurrect old commits when narrowing (don't strip obsmarkers)
If you have an old obsolescence-chain of commits that has been pruned
and you narrow your repo so that some of those commits get stripped
(because they affected the removed paths), then we would currently
resurrect the commit that came before (along the obsmarker chain) the
last stripped commit. That happens by the usual rules for
obsmarker-stripping. However, it's quite surprising when it happens
when you narrow your repo. This patch makes narrowing not strip
obsmarkers.
Differential Revision: https://phab.mercurial-scm.org/D5364
Yuya Nishihara <yuya@tcha.org> [Sun, 18 Nov 2018 19:55:53 +0900] rev 40846
commandserver: turn server debug messages into logs
They were ui.debug() just because commandserver.log() was noop if no client
connected.
Yuya Nishihara <yuya@tcha.org> [Sun, 18 Nov 2018 19:47:04 +0900] rev 40845
commandserver: add config knob for various logging options
The default rotating options are copied from the blackbox extension.
Yuya Nishihara <yuya@tcha.org> [Sat, 10 Nov 2018 19:27:47 +0900] rev 40844
commandserver: expand log path for convenience
This allows us to set the log path relative to $XDG_RUNTIME_DIR, for instance.
[cmdserver]
log = $XDG_RUNTIME_DIR/chg/server.log
Yuya Nishihara <yuya@tcha.org> [Sat, 10 Nov 2018 19:09:37 +0900] rev 40843
commandserver: switch logging facility to ui.log() interface
The "pager subcommand" message is removed since ui isn't accessible there.
I think that's okay as cmdtable[cmd]() will call attachio() and some debug
message will be printed.
Yuya Nishihara <yuya@tcha.org> [Sat, 10 Nov 2018 19:00:17 +0900] rev 40842
commandserver: install logger to record server events through canonical API
The global commandserver.log() will be replaced with this.
Yuya Nishihara <yuya@tcha.org> [Sat, 10 Nov 2018 18:19:34 +0900] rev 40841
commandserver: enable logging when server process started
This allows us to keep track of server events before client connects to
the server.
Tests will be added later. Currently there's no log() call to check if
things are working well.
Yuya Nishihara <yuya@tcha.org> [Sat, 10 Nov 2018 18:16:33 +0900] rev 40840
test-commandserver: change way of triggering early crash
Future patches will move the logging facility out of the server class, so
cmdserver.log can't be (ab)used for this purpose. Instead, let's hook the
factory function to raise exception.
Yuya Nishihara <yuya@tcha.org> [Sun, 18 Nov 2018 18:58:06 +0900] rev 40839
loggingutil: add basic logger backends
These classes will be used in command server. They are similar to
the blackboxlogger, but it can't be factored out since the blackbox is so
tightly coupled with a repo object.
Augie Fackler <augie@google.com> [Tue, 04 Dec 2018 17:13:01 -0500] rev 40838
merge with stable
Georges Racinet <gracinet@anybox.fr> [Thu, 29 Nov 2018 09:13:13 +0000] rev 40837
rust: peek_mut optim for lazy ancestors
This is one of the two optimizations that are also
present in the Python code: replacing pairs of pop/push
on the BinaryHeap by single updates, hence having it
under the hood maintain its consistency (sift) only once.
On Mozilla central, the measured gain (see details below)
is around 7%.
Creating the PeekMut object by calling peek_mut() right away
instead of peek() first is less efficient (gain is only 4%, stats
not included).
Our interpretation is that its creation has a cost which is vasted
in the cases where it ends by droping the value (Peekmut::pop()
just does self.heap.pop() anyway). On the other hand, the immutable
peek() is very fast: it's just taking a reference in the
underlying vector.
The Python version still has another optimization:
if parent(current) == current-1, then the heap doesn't need
to maintain its consistency, since we already know that
it's bigger than all the others in the heap.
Rust's BinaryHeap doesn't allow us to mutate its biggest
element with no housekeeping, but we tried it anyway, with a
copy of the BinaryHeap implementation with a dedicaded added
method: it's not worth the technical debt in our opinion
(we measured only a further 1.6% improvement).
One possible explanation would be that the sift is really fast
anyway in that case, whereas it's not in the case of Python,
because it's at least partly done in slow Python code.
Still it's possible that replacing BinaryHeap by something more
dedicated to discrete ordered types could be faster.
Measurements on mozilla-central:
Three runs of 'hg perfancestors' on the parent changeset:
Moyenne des médianes: 0.100587
! wall 0.100062 comb 0.100000 user 0.100000 sys 0.000000 (best of 98)
! wall 0.135804 comb 0.130000 user 0.130000 sys 0.000000 (max of 98)
! wall 0.102864 comb 0.102755 user 0.099286 sys 0.003469 (avg of 98)
! wall 0.101486 comb 0.110000 user 0.110000 sys 0.000000 (median of 98)
! wall 0.096804 comb 0.090000 user 0.090000 sys 0.000000 (best of 100)
! wall 0.132235 comb 0.130000 user 0.120000 sys 0.010000 (max of 100)
! wall 0.100258 comb 0.100300 user 0.096000 sys 0.004300 (avg of 100)
! wall 0.098384 comb 0.100000 user 0.100000 sys 0.000000 (median of 100)
! wall 0.099925 comb 0.100000 user 0.100000 sys 0.000000 (best of 98)
! wall 0.133518 comb 0.140000 user 0.130000 sys 0.010000 (max of 98)
! wall 0.102381 comb 0.102449 user 0.098265 sys 0.004184 (avg of 98)
! wall 0.101891 comb 0.090000 user 0.090000 sys 0.000000 (median of 98)
Mean of the medians: 0.100587
On the present changeset:
! wall 0.091344 comb 0.090000 user 0.090000 sys 0.000000 (best of 100)
! wall 0.122728 comb 0.120000 user 0.110000 sys 0.010000 (max of 100)
! wall 0.093268 comb 0.093300 user 0.089300 sys 0.004000 (avg of 100)
! wall 0.092567 comb 0.100000 user 0.090000 sys 0.010000 (median of 100)
! wall 0.093294 comb 0.080000 user 0.080000 sys 0.000000 (best of 100)
! wall 0.144887 comb 0.150000 user 0.140000 sys 0.010000 (max of 100)
! wall 0.097708 comb 0.097700 user 0.093400 sys 0.004300 (avg of 100)
! wall 0.094980 comb 0.100000 user 0.090000 sys 0.010000 (median of 100)
! wall 0.091262 comb 0.090000 user 0.080000 sys 0.010000 (best of 100)
! wall 0.123772 comb 0.130000 user 0.120000 sys 0.010000 (max of 100)
! wall 0.093188 comb 0.093200 user 0.089300 sys 0.003900 (avg of 100)
! wall 0.092364 comb 0.100000 user 0.090000 sys 0.010000 (median of 100)
Mean of the medians is 0.0933
Differential Revision: https://phab.mercurial-scm.org/D5358
Augie Fackler <augie@google.com> [Mon, 03 Dec 2018 18:07:09 -0500] rev 40836
fuzz: grep away HAVE_GETC_UNLOCKED in pyconfig.h to avoid msan badness
Per discussion with Greg Smith and the patches on
https://bugs.python.org/issue35214. This, combined with the previous
patch, fixes msan builds on oss-fuzz.
Differential Revision: https://phab.mercurial-scm.org/D5363
Augie Fackler <augie@google.com> [Tue, 13 Nov 2018 09:19:05 -0500] rev 40835
fuzz: more correctly specify CFLAGS and LDFLAGS when building Python
Gets us closer to a working msan build alongside our asan build.
Differential Revision: https://phab.mercurial-scm.org/D5362
Matt Harbison <matt_harbison@yahoo.com> [Tue, 04 Dec 2018 00:19:33 -0500] rev 40834
tests: stabilize test-blackbox.t on Windows
I didn't look into why the error is more detailed, but that seems like it's a
good thing (other than for recording tests).
Matt Harbison <matt_harbison@yahoo.com> [Tue, 04 Dec 2018 00:16:12 -0500] rev 40833
tests: stabilize for recent wcache changes
This goes with 47e3f554df35::d5622dfe4ba3. I'm not sure if it was really
expected that there would be no wcache directory if neither execbit nor symlink
is supported.
Matt Harbison <matt_harbison@yahoo.com> [Mon, 03 Dec 2018 12:48:42 -0500] rev 40832
extdiff: avoid double backslashes in the displayed tool path on Windows
This shows the tool path in the help, and changed in 67b180c0e263. uirepr()
already does the same thing, but that undoes the mangling in its call to repr().