D1856: wireproto: server-side support for pullbundles

2018-01-14 Thread joerg.sonnenberger (Joerg Sonnenberger)
joerg.sonnenberger added a comment. > I wish we could find a way to send multiple, inline, pre-generated bundles in one response. However, the existing design of compression within the bundle2 format doesn't easily facilitate this. We should think long and hard about whether to implement

D1857: pull: re-run discovery and pullbundle2 if server didn't send all heads

2018-01-14 Thread joerg.sonnenberger (Joerg Sonnenberger)
joerg.sonnenberger updated this revision to Diff 4824. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D1857?vs=4813=4824 REVISION DETAIL https://phab.mercurial-scm.org/D1857 AFFECTED FILES mercurial/exchange.py mercurial/wireproto.py

D1856: wireproto: server-side support for pullbundles

2018-01-14 Thread joerg.sonnenberger (Joerg Sonnenberger)
joerg.sonnenberger added a comment. For my test case, which is a bundle of all changes in the NetBSD repo before 2014 and a yearly bundle afterwards until 2018/1/1 and normal pull for the rest, find_pullbundle needs less than 0.5s of CPU time in this iteration when it matches. After the

D1856: wireproto: server-side support for pullbundles

2018-01-14 Thread joerg.sonnenberger (Joerg Sonnenberger)
joerg.sonnenberger updated this revision to Diff 4816. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D1856?vs=4811=4816 REVISION DETAIL https://phab.mercurial-scm.org/D1856 AFFECTED FILES mercurial/configitems.py mercurial/help/config.txt

D1855: explicitly kill server processes

2018-01-12 Thread joerg.sonnenberger (Joerg Sonnenberger)
This revision was automatically updated to reflect the committed changes. Closed by commit rHG5bda7bd29688: explicitly kill server processes (authored by joerg.sonnenberger, committed by ). REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D1855?vs=4809=4814

D1857: pull: re-run discovery and pullbundle2 if server didn't send all heads

2018-01-12 Thread joerg.sonnenberger (Joerg Sonnenberger)
joerg.sonnenberger updated this revision to Diff 4813. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D1857?vs=4812=4813 REVISION DETAIL https://phab.mercurial-scm.org/D1857 AFFECTED FILES mercurial/exchange.py tests/test-pull-r.t CHANGE DETAILS

D1857: pull: re-run discovery and pullbundle2 if server didn't send all heads

2018-01-12 Thread joerg.sonnenberger (Joerg Sonnenberger)
joerg.sonnenberger added a comment. This is a proof-of-concept. There is an interaction with obsoletion that I am still trying to understand (and fix). REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D1857 To: joerg.sonnenberger, #hg-reviewers Cc:

D1857: pull: re-run discovery and pullbundle2 if server didn't send all heads

2018-01-12 Thread joerg.sonnenberger (Joerg Sonnenberger)
joerg.sonnenberger created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D1857 AFFECTED FILES mercurial/exchange.py tests/test-pull-r.t CHANGE DETAILS diff --git

D1856: wireproto: server-side support for pullbundles

2018-01-12 Thread joerg.sonnenberger (Joerg Sonnenberger)
joerg.sonnenberger updated this revision to Diff 4811. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D1856?vs=4810=4811 REVISION DETAIL https://phab.mercurial-scm.org/D1856 AFFECTED FILES mercurial/configitems.py mercurial/help/config.txt

D1856: wireproto: server-side support for pullbundles

2018-01-12 Thread joerg.sonnenberger (Joerg Sonnenberger)
joerg.sonnenberger created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REVISION SUMMARY Pullbundles are similar to clonebundles, but served as normal inline bundle streams. They are almost transparent to the client -- the only visible

D1855: explicitly kill server processes

2018-01-12 Thread joerg.sonnenberger (Joerg Sonnenberger)
joerg.sonnenberger created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D1855 AFFECTED FILES tests/test-pull-r.t CHANGE DETAILS diff --git a/tests/test-pull-r.t

D1850: hgweb: when no agreement on compression can be found, fail for v2

2018-01-12 Thread joerg.sonnenberger (Joerg Sonnenberger)
joerg.sonnenberger created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REVISION SUMMARY When the client supports v2 responses, the fallback to the legacy response is undesirable. If the zlib is acceptable for the client, it should have

D1621: transaction: encodes tuples in changes['phases'] as 4 bit ints

2017-12-11 Thread joerg.sonnenberger (Joerg Sonnenberger)
joerg.sonnenberger added a comment. The bitset version has shown already that optimizing this is worthwhile and can eliminate up to 10% of the total size of the transaction object. The change as is primarily gets the interfaces in place, so that outside code can be adjusted. REPOSITORY

D1621: transaction: encodes tuples in changes['phases'] as 4 bit ints

2017-12-10 Thread joerg.sonnenberger (Joerg Sonnenberger)
joerg.sonnenberger added a comment. This version should be committable. It introduces the necessary API for isolating further changes and gives a small improvement already. I'll be looking at provider a memory and time efficient sparce vector next, that's where the real benefits will be.

D1621: transaction: encodes tuples in changes['phases'] as 4 bit ints

2017-12-10 Thread joerg.sonnenberger (Joerg Sonnenberger)
joerg.sonnenberger updated this revision to Diff 4341. joerg.sonnenberger edited the summary of this revision. joerg.sonnenberger retitled this revision from "[PoC] transaction: split changes['phases'] into sets for src and target phase" to "transaction: encodes tuples in changes['phases'] as 4

D1622: transaction: Use intbitset for implementing changes['phase']

2017-12-09 Thread joerg.sonnenberger (Joerg Sonnenberger)
joerg.sonnenberger added a comment. Like I said, this is primarily a proof of concept. I'm still playing with different approaches and I don't think intbitset is a good fit for other reasons, but it worked the best from the various pre-existing implementations. REPOSITORY rHG Mercurial

D1621: transaction: split changes['phases'] into sets for src and target phase

2017-12-08 Thread joerg.sonnenberger (Joerg Sonnenberger)
joerg.sonnenberger added a comment. This is a Proof-of-Concept and with a follow-up in https://phab.mercurial-scm.org/D1622 to use a C implementation for the bitset. Original code: 485s / 584MB Set version: 501s / 582MB intbitset: 478s / 563MB REPOSITORY rHG Mercurial REVISION

D1621: transaction: split changes['phases'] into sets for src and target phase

2017-12-08 Thread joerg.sonnenberger (Joerg Sonnenberger)
joerg.sonnenberger created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REVISION SUMMARY changes['phases'] used to be a dictionary mapping revisions to (old, new) tuples. The encoding is highly redundant and eats ~40MB for the test case

D1622: transaction: Use intbitset for implementing changes['phase']

2017-12-08 Thread joerg.sonnenberger (Joerg Sonnenberger)
joerg.sonnenberger created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D1622 AFFECTED FILES mercurial/localrepo.py CHANGE DETAILS diff --git

D1606: phases: drop the list with phase of each rev, always comput phase sets

2017-12-08 Thread joerg.sonnenberger (Joerg Sonnenberger)
This revision was automatically updated to reflect the committed changes. Closed by commit rHGd13526333835: phases: drop the list with phase of each rev, always comput phase sets (authored by joerg.sonnenberger, committed by ). CHANGED PRIOR TO COMMIT

D1615: transaction: build changes['revs'] as range instead of a set

2017-12-08 Thread joerg.sonnenberger (Joerg Sonnenberger)
This revision was automatically updated to reflect the committed changes. Closed by commit rHG137a08d82232: transaction: build changes[revs] as range instead of a set (authored by joerg.sonnenberger, committed by ). REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE

D1615: transaction: build changes['revs'] as range instead of a set.

2017-12-07 Thread joerg.sonnenberger (Joerg Sonnenberger)
joerg.sonnenberger created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REVISION SUMMARY Revisions are added consecutively, so a range can easily represent them in the changes list. This saves around 45 Bytes / revision on 64bit platforms

D1606: phases: drop the list with phase of each rev, always comput phase sets

2017-12-07 Thread joerg.sonnenberger (Joerg Sonnenberger)
joerg.sonnenberger updated this revision to Diff 4228. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D1606?vs=4155=4228 REVISION DETAIL https://phab.mercurial-scm.org/D1606 AFFECTED FILES mercurial/cext/parsers.c mercurial/cext/revlog.c

D1606: phases: drop the list with phase of each rev, always comput phase sets

2017-12-07 Thread joerg.sonnenberger (Joerg Sonnenberger)
joerg.sonnenberger added inline comments. INLINE COMMENTS > quark wrote in phases.py:226-237 > Sorry - I made a mistake using `repo.revs('public()')` to test the logic > here. Actually that exercises a different code path >

D1606: phases: drop the list with phase of each rev, always comput phase sets

2017-12-06 Thread joerg.sonnenberger (Joerg Sonnenberger)
joerg.sonnenberger created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REVISION SUMMARY Change the C implementation of phasecache.loadphaserevs to provide only the sets for draft and secret phase as well as the number of revisions seen.

<    1   2   3   4   5