b6ffd419463943dbc614c89fd9735dba37310254: streamclone: tests phase exchange during stream clone
Boris Feld <boris.feld@octobus.net> - Thu, 18 Jan 2018 02:28:44 +0100 - rev 41650
Push 653 by gszorc@mozilla.com at Sun, 21 Jan 2018 00:53:23 +0000
streamclone: tests phase exchange during stream clone We add a test dedicated to phases. As reported in issue 5648 stream from a non publishing server is currently broken (does not preserve the phase). We'll fix it with 'v2' support in the next changesets.
7eedbd5d4880f6c0518e5ff706450a7389acb70d: streamclone: add support for bundle2 based stream clone
Boris Feld <boris.feld@octobus.net> - Wed, 17 Jan 2018 16:41:44 +0100 - rev 41649
Push 653 by gszorc@mozilla.com at Sun, 21 Jan 2018 00:53:23 +0000
streamclone: add support for bundle2 based stream clone The feature put to use the various bits introduced previously. If the server supports it, the client will request its stream clone through bundle2 instead of the legacy 'stream_out' commands. The bundle2 version use the better 'v2' version of stream bundles. The 'v2' format is not finalized yet. Now that there are some code running it, we can start working on it again. Performance numbers are available at the end of this series.
40df727b6f4f3caceac92145905d37591eeaa46f: pull: preindent some code
Boris Feld <boris.feld@octobus.net> - Wed, 17 Jan 2018 14:13:46 +0100 - rev 41648
Push 653 by gszorc@mozilla.com at Sun, 21 Jan 2018 00:53:23 +0000
pull: preindent some code Next changesets will add support for using stream cloning with bundle2. We introduce indentation change first for clarity.
1908d360f97771a95401ab511e16627d0c610a9c: pull: reorganize bundle2 argument bundling
Boris Feld <boris.feld@octobus.net> - Wed, 17 Jan 2018 16:32:05 +0100 - rev 41647
Push 653 by gszorc@mozilla.com at Sun, 21 Jan 2018 00:53:23 +0000
pull: reorganize bundle2 argument bundling We are about to add the ability to use stream bundle with bundle2. Before doing so, we need to gather some code that will not be used in the bundle2 case. There is no behavior change within this changeset.
133a678673cb151958e1a01ff7b4c9ad7e5feecf: clone: allow bundle2's stream clone with 'server.disablefullbundle'
Boris Feld <boris.feld@octobus.net> - Wed, 17 Jan 2018 16:38:32 +0100 - rev 41646
Push 653 by gszorc@mozilla.com at Sun, 21 Jan 2018 00:53:23 +0000
clone: allow bundle2's stream clone with 'server.disablefullbundle' The previous check was a bit too strict and would not recognize a get bundle not requesting changegroup.
c24dad55ac190827808bd3445f56f2758b60a630: bundle2: add support for a 'stream' parameter to 'getbundle'
Boris Feld <boris.feld@octobus.net> - Wed, 17 Jan 2018 16:36:23 +0100 - rev 41645
Push 653 by gszorc@mozilla.com at Sun, 21 Jan 2018 00:53:23 +0000
bundle2: add support for a 'stream' parameter to 'getbundle' This parameter can be used to request a stream bundle.
b996ddf5963decc28d8e0e2f0c5e34d33d25ea7d: bundle2: add a 'stream' part handler for stream cloning
Boris Feld <boris.feld@octobus.net> - Wed, 17 Jan 2018 16:35:22 +0100 - rev 41644
Push 653 by gszorc@mozilla.com at Sun, 21 Jan 2018 00:53:23 +0000
bundle2: add a 'stream' part handler for stream cloning The part contains the necessary arguments and payload to handle a stream bundle v2. It will be put to use in later changesets.
bbf7abd09ff01974e122dd537973bb7d0af2710b: streamclone: rework canperformstreamclone
Boris Feld <boris.feld@octobus.net> - Thu, 18 Jan 2018 00:45:27 +0100 - rev 41643
Push 653 by gszorc@mozilla.com at Sun, 21 Jan 2018 00:53:23 +0000
streamclone: rework canperformstreamclone There is code about bundle2 laying around in `canperformstreamclone` but not put to any uses. As we discovered with the previous patch, streambundle 'v1' won't work on bundle2 because they are readline based. So we jump to 'v2' as the first expected supported version.
cfdccd560b66619f98a2cc3f714a06a710da0cdc: streamclone: define first iteration of version 2 of stream format
Boris Feld <boris.feld@octobus.net> - Thu, 18 Jan 2018 00:48:56 +0100 - rev 41642
Push 653 by gszorc@mozilla.com at Sun, 21 Jan 2018 00:53:23 +0000
streamclone: define first iteration of version 2 of stream format (This patch is based on a first draft from Gregory Szorc, with deeper rework) Version 1 of the stream clone format was invented many years ago and suffers from a few deficiencies: 1) Filenames are stored in store-encoded (on filesystem) form rather than in their internal form. This makes future compatibility with new store filename encodings more difficult. 2) File entry "headers" consist of a newline of the file name followed by the string file size. Converting strings to integers is avoidable overhead. We can't store filenames with newlines (manifests have this limitation as well, so it isn't a major concern). But the big concern here is the necessity for readline(). Scanning for newlines means reading ahead and that means extra buffer allocations and slicing (in Python) and this makes performance suffer. 3) Filenames aren't compressed optimally. Filenames should be compressed well since there is a lot of repeated data. However, since they are scattered all over the stream (with revlog data in between), they typically fall outside the window size of the compressor and don't compress. 4) It can only exchange stored based content, being able to exchange caches too would be nice. 5) It is limited to a stream-based protocol and isn't suitable for an on-disk format for general repository reading because the offset of individual file entries requires scanning the entire file to find file records. As part of enabling streaming clones to work in bundle2, #2 proved to have a significant negative impact on performance. Since bundle2 provides the opportunity to start fresh, Gregory Szorc figured he would take the opportunity to invent a new streaming clone data format. The new format devised in this series addresses #1, #2, and #4. It punts on #3 because it was complex without yielding a significant gain and on #5 because devising a new store format that "packs" multiple revlogs into a single "packed revlog" is massive scope bloat. However, this v2 format might be suitable for streaming into a "packed revlog" with minimal processing. If it works, great. If not, we can always invent stream format when it is needed. This patch only introduces the bases of the format. We'll get it usable through bundle2 first, then we'll extend the format in future patches to bring it to its full potential (especially #4).
2384523cee4dcc83f67b73bf1862c68ddf1afc49: util: implement varint functions
Gregory Szorc <gregory.szorc@gmail.com> - Fri, 19 Jan 2018 22:52:35 +0100 - rev 41641
Push 653 by gszorc@mozilla.com at Sun, 21 Jan 2018 00:53:23 +0000
util: implement varint functions This will be useful in an incoming version-2 of the stream format.
fb0be099063f9b09344ec1c9af6f3e12297b0a01: util: move 'readexactly' in the util module
Boris Feld <boris.feld@octobus.net> - Fri, 19 Jan 2018 20:51:35 +0100 - rev 41640
Push 653 by gszorc@mozilla.com at Sun, 21 Jan 2018 00:53:23 +0000
util: move 'readexactly' in the util module This function is used in multiple place, having it in util would be better. (existing caller will be migrated in another series)
069df0b952e803b3efb3c59c423522a4800ecde4: lfs: separate a debug message from the subsequent abort message
Matt Harbison <matt_harbison@yahoo.com> - Fri, 19 Jan 2018 19:13:11 -0500 - rev 41639
Push 653 by gszorc@mozilla.com at Sun, 21 Jan 2018 00:53:23 +0000
lfs: separate a debug message from the subsequent abort message
047581ddb6cefdbdeb50e314b3cc68f7611bddc7: sshserver: add a couple of tests for argument parsing
Siddharth Agarwal <sid0@fb.com> - Fri, 19 Jan 2018 14:25:09 -0800 - rev 41638
Push 653 by gszorc@mozilla.com at Sun, 21 Jan 2018 00:53:23 +0000
sshserver: add a couple of tests for argument parsing I noticed that we didn't have any unit tests covering wire protocol argument parsing.
6d65cef5b038ff4c141c0bbc1a2e366e45c016a2: merge with stable
Augie Fackler <augie@google.com> - Fri, 19 Jan 2018 16:28:11 -0500 - rev 41637
Push 653 by gszorc@mozilla.com at Sun, 21 Jan 2018 00:53:23 +0000
merge with stable
a39a9df7ecca0d1750647d04e2f22fc32ff0264a: wireproto: split streamres into legacy and modern case
Joerg Sonnenberger <joerg@bec.de> - Fri, 12 Jan 2018 10:59:58 +0100 - rev 41636
Push 653 by gszorc@mozilla.com at Sun, 21 Jan 2018 00:53:23 +0000
wireproto: split streamres into legacy and modern case A couple of commands currently require transmission of uncompressed frames with the old MIME type. Split this case from streamres into a new streamres_legacy class. Streamline the remaining code accordingly. Add a new flag to streamres to request uncompressed streams. This is useful for sending data that is already compressed like a pre-built bundle. Expect clients to support uncompressed data. For older clients, zlib will still be used. Differential Revision: https://phab.mercurial-scm.org/D1862
3a3b59bbe7ce37c8b90add5fcd9d8f3e69b32db9: localrepo: run cache-warming transaction callback before report callback
Martin von Zweigbergk <martinvonz@google.com> - Fri, 19 Jan 2018 12:33:03 -0800 - rev 41635
Push 653 by gszorc@mozilla.com at Sun, 21 Jan 2018 00:53:23 +0000
localrepo: run cache-warming transaction callback before report callback See in-code comment for details. Differential Revision: https://phab.mercurial-scm.org/D1918
963a611b2f396d507b5784c0ec1905e134b0c898: scmutil: 0-pad transaction report callback category
Martin von Zweigbergk <martinvonz@google.com> - Fri, 19 Jan 2018 11:35:55 -0800 - rev 41634
Push 653 by gszorc@mozilla.com at Sun, 21 Jan 2018 00:53:23 +0000
scmutil: 0-pad transaction report callback category Before this patch, the transaction name was '%2i-txnreport', which means the first one would be ' 0-txnreport'. It seems more intuitive for sorting purposes (the callbacks are called in lexicographical order) to make it 0-padded. Differential Revision: https://phab.mercurial-scm.org/D1917
de32acb24949c0e3633de373d1c6c8c814faa804: stream: add a test showing we also clone bookmarks
Boris Feld <boris.feld@octobus.net> - Wed, 17 Jan 2018 16:01:06 +0100 - rev 41633
Push 653 by gszorc@mozilla.com at Sun, 21 Jan 2018 00:53:23 +0000
stream: add a test showing we also clone bookmarks Bookmarks are not stored in `.hg/store`. We need to make sure they are cloned with `--stream`.
e5b6ba786d83a3c10a0106b93631df4da4d06465: branch: allow changing branch name to existing name if possible
Pulkit Goyal <7895pulkit@gmail.com> - Fri, 19 Jan 2018 18:45:20 +0530 - rev 41632
Push 653 by gszorc@mozilla.com at Sun, 21 Jan 2018 00:53:23 +0000
branch: allow changing branch name to existing name if possible With the functionality added in previous patch we can change branches of a revision but not everytime even if it's possible to do so. For example cosider the following case: o 3 added a (foo) o 2 added b (foo) o 1 added c (bar) o 0 added d (bar) Here if I want to change the branch of rev 2,3 to bar, it was not possible and it will say, "a branch with same name exists". This patch allows us to change branch of 2,3 to bar. The underlying logic for changing branch finds the changesets from the revs passed which have no parents in revs. We only support revsets which have only one such root, so to support this we check whether the parent of the root has the same name as that of the new name and if so, we can use the new name to change branches. Differential Revision: https://phab.mercurial-scm.org/D1913
3bd8ab4c80a52f417728b6a4f1b8f231bd0af93f: branch: add a --rev flag to change branch name of given revisions
Pulkit Goyal <7895pulkit@gmail.com> - Sun, 15 Oct 2017 23:08:45 +0530 - rev 41631
Push 653 by gszorc@mozilla.com at Sun, 21 Jan 2018 00:53:23 +0000
branch: add a --rev flag to change branch name of given revisions This patch adds a new --rev flag to hg branch which can be used to change branch of revisions. This is motivated from topic extension where you can change topic on revisions but this one has few restrictions which are: 1) You cannot change branch name in between the stack 2) You cannot change branch name and set it to an existing name 3) You cannot change branch of non-linear set of commits 4) You cannot change branch of merge commits. Tests are added for the same. .. feature:: An experimental flag `--rev` to `hg branch` which can be used to change branch of changesets. Differential Revision: https://phab.mercurial-scm.org/D1074
(0) -30000 -10000 -3000 -300 -100 -50 -20 +20 +50 +1000 +3000 tip