Mercurial > hg
changeset 46414:16c18d5e5dc8
merge with stable
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Fri, 29 Jan 2021 17:32:09 +0530 |
parents | 892eb7c5edaa (current diff) ed43b6fa847e (diff) |
children | bc3f3b59d0a4 |
files | contrib/heptapod-ci.yml mercurial/commands.py mercurial/helptext/config.txt mercurial/localrepo.py mercurial/upgrade.py setup.py tests/test-share-safe.t |
diffstat | 24 files changed, 151 insertions(+), 51 deletions(-) [+] |
line wrap: on
line diff
--- a/contrib/automation/hgautomation/linux.py Thu Jan 28 00:14:15 2021 -0800 +++ b/contrib/automation/hgautomation/linux.py Fri Jan 29 17:32:09 2021 +0530 @@ -75,7 +75,7 @@ sudo -H -u hg -g hg /home/hg/.cargo/bin/rustup install 1.31.1 1.46.0 sudo -H -u hg -g hg /home/hg/.cargo/bin/rustup component add clippy -sudo -H -u hg -g hg /home/hg/.cargo/bin/cargo install --version 0.9.0 pyoxidizer +sudo -H -u hg -g hg /home/hg/.cargo/bin/cargo install --version 0.10.3 pyoxidizer '''
--- a/contrib/heptapod-ci.yml Thu Jan 28 00:14:15 2021 -0800 +++ b/contrib/heptapod-ci.yml Fri Jan 29 17:32:09 2021 +0530 @@ -16,8 +16,6 @@ before_script: - hg clone . /tmp/mercurial-ci/ --noupdate --config phases.publish=no - hg -R /tmp/mercurial-ci/ update `hg log --rev '.' --template '{node}'` - - cd /tmp/mercurial-ci/rust/rhg - - cargo build - cd /tmp/mercurial-ci/ - ls -1 tests/test-check-*.* > /tmp/check-tests.txt - black --version @@ -27,6 +25,17 @@ - echo "$RUNTEST_ARGS" - HGMODULEPOLICY="$TEST_HGMODULEPOLICY" "$PYTHON" tests/run-tests.py --color=always $RUNTEST_ARGS + +.rust_template: &rust + before_script: + - hg clone . /tmp/mercurial-ci/ --noupdate --config phases.publish=no + - hg -R /tmp/mercurial-ci/ update `hg log --rev '.' --template '{node}'` + - ls -1 tests/test-check-*.* > /tmp/check-tests.txt + - cd /tmp/mercurial-ci/rust/rhg + - cargo build + - cd /tmp/mercurial-ci/ + + checks-py2: <<: *runtests variables: @@ -83,6 +92,7 @@ test-py2-rust: <<: *runtests + <<: *rust variables: HGWITHRUSTEXT: cpython RUNTEST_ARGS: "--rust --blacklist /tmp/check-tests.txt" @@ -90,6 +100,7 @@ test-py3-rust: <<: *runtests + <<: *rust variables: HGWITHRUSTEXT: cpython RUNTEST_ARGS: "--rust --blacklist /tmp/check-tests.txt"
--- a/contrib/install-windows-dependencies.ps1 Thu Jan 28 00:14:15 2021 -0800 +++ b/contrib/install-windows-dependencies.ps1 Fri Jan 29 17:32:09 2021 +0530 @@ -125,7 +125,7 @@ Invoke-Process "${prefix}\cargo\bin\rustup.exe" "component add clippy" # Install PyOxidizer for packaging. - Invoke-Process "${prefix}\cargo\bin\cargo.exe" "install --version 0.9.0 pyoxidizer" + Invoke-Process "${prefix}\cargo\bin\cargo.exe" "install --version 0.10.3 pyoxidizer" } function Install-Dependencies($prefix) {
--- a/contrib/packaging/debian/copyright Thu Jan 28 00:14:15 2021 -0800 +++ b/contrib/packaging/debian/copyright Fri Jan 29 17:32:09 2021 +0530 @@ -3,7 +3,7 @@ Source: https://www.mercurial-scm.org/ Files: * -Copyright: 2005-2020, Matt Mackall <mpm@selenic.com> and others. +Copyright: 2005-2021, Matt Mackall <mpm@selenic.com> and others. License: GPL-2+ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public
--- a/contrib/packaging/hgpackaging/inno.py Thu Jan 28 00:14:15 2021 -0800 +++ b/contrib/packaging/hgpackaging/inno.py Fri Jan 29 17:32:09 2021 +0530 @@ -33,6 +33,11 @@ 'win32ctypes', } +EXTRA_INCLUDES = { + '_curses', + '_curses_panel', +} + EXTRA_INSTALL_RULES = [ ('contrib/win32/mercurial.ini', 'defaultrc/mercurial.rc'), ] @@ -78,6 +83,7 @@ 'inno', requirements_txt, extra_packages=EXTRA_PACKAGES, + extra_includes=EXTRA_INCLUDES, ) # Purge the staging directory for every build so packaging is
--- a/contrib/packaging/hgpackaging/py2exe.py Thu Jan 28 00:14:15 2021 -0800 +++ b/contrib/packaging/hgpackaging/py2exe.py Fri Jan 29 17:32:09 2021 +0530 @@ -67,6 +67,7 @@ extra_excludes=None, extra_dll_excludes=None, extra_packages_script=None, + extra_includes=None, ): """Build Mercurial with py2exe. @@ -176,6 +177,8 @@ ) if hgext3rd_extras: env['HG_PY2EXE_EXTRA_INSTALL_PACKAGES'] = ' '.join(hgext3rd_extras) + if extra_includes: + env['HG_PY2EXE_EXTRA_INCLUDES'] = ' '.join(sorted(extra_includes)) if extra_excludes: env['HG_PY2EXE_EXTRA_EXCLUDES'] = ' '.join(sorted(extra_excludes)) if extra_dll_excludes:
--- a/contrib/packaging/hgpackaging/wix.py Thu Jan 28 00:14:15 2021 -0800 +++ b/contrib/packaging/hgpackaging/wix.py Fri Jan 29 17:32:09 2021 +0530 @@ -39,6 +39,10 @@ 'win32ctypes', } +EXTRA_INCLUDES = { + '_curses', + '_curses_panel', +} EXTRA_INSTALL_RULES = [ ('contrib/packaging/wix/COPYING.rtf', 'COPYING.rtf'), @@ -330,6 +334,7 @@ requirements_txt, extra_packages=EXTRA_PACKAGES, extra_packages_script=extra_packages_script, + extra_includes=EXTRA_INCLUDES, ) build_dir = hg_build_dir / ('wix-%s' % arch)
--- a/contrib/packaging/inno/mercurial.iss Thu Jan 28 00:14:15 2021 -0800 +++ b/contrib/packaging/inno/mercurial.iss Fri Jan 29 17:32:09 2021 +0530 @@ -6,7 +6,7 @@ #endif [Setup] -AppCopyright=Copyright 2005-2020 Matt Mackall and others +AppCopyright=Copyright 2005-2021 Matt Mackall and others AppName=Mercurial AppVersion={#VERSION} OutputBaseFilename=Mercurial-{#VERSION}{#SUFFIX} @@ -29,7 +29,7 @@ DefaultDirName={pf}\Mercurial SourceDir=stage VersionInfoDescription=Mercurial distributed SCM (version {#VERSION}) -VersionInfoCopyright=Copyright 2005-2020 Matt Mackall and others +VersionInfoCopyright=Copyright 2005-2021 Matt Mackall and others VersionInfoCompany=Matt Mackall and others VersionInfoVersion={#QUAD_VERSION} InternalCompressLevel=max
--- a/contrib/win32/ReadMe.html Thu Jan 28 00:14:15 2021 -0800 +++ b/contrib/win32/ReadMe.html Fri Jan 29 17:32:09 2021 +0530 @@ -140,7 +140,7 @@ </p> <p> - Mercurial is Copyright 2005-2020 Matt Mackall and others. + Mercurial is Copyright 2005-2021 Matt Mackall and others. </p> <p>
--- a/mercurial/commands.py Thu Jan 28 00:14:15 2021 -0800 +++ b/mercurial/commands.py Fri Jan 29 17:32:09 2021 +0530 @@ -7809,7 +7809,7 @@ ) license = _( b"(see https://mercurial-scm.org for more information)\n" - b"\nCopyright (C) 2005-2020 Matt Mackall and others\n" + b"\nCopyright (C) 2005-2021 Matt Mackall and others\n" b"This is free software; see the source for copying conditions. " b"There is NO\nwarranty; " b"not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
--- a/mercurial/helptext/config.txt Thu Jan 28 00:14:15 2021 -0800 +++ b/mercurial/helptext/config.txt Fri Jan 29 17:32:09 2021 +0530 @@ -147,14 +147,12 @@ merge tool configuration but packagers can also put other default configuration there. -.. container:: verbose - - On versions 5.7 and later, if share-safe functionality is enabled, - shares will read config file of share source too. - `<share-source/.hg/hgrc>` is read before reading `<repo/.hg/hgrc>`. - - For configs which should not be shared, `<repo/.hg/hgrc-not-shared>` - should be used. +On versions 5.7 and later, if share-safe functionality is enabled, +shares will read config file of share source too. +`<share-source/.hg/hgrc>` is read before reading `<repo/.hg/hgrc>`. + +For configs which should not be shared, `<repo/.hg/hgrc-not-shared>` +should be used. Syntax ====== @@ -915,8 +913,27 @@ Disabled by default. ``use-share-safe`` - Enable or disable the "share-safe" functionality, which enables shares - to read requirements and configuration of its source repository. + Enforce "safe" behaviors for all "shares" that access this repository. + + With this feature, "shares" using this repository as a source will: + + * read the source repository's configuration (`<source>/.hg/hgrc`). + * read and use the source repository's "requirements" + (except the working copy specific one). + + Without this feature, "shares" using this repository as a source will: + + * keep tracking the repository "requirements" in the share only, ignoring + the source "requirements", possibly diverging from them. + * ignore source repository config. This can create problems, like silently + ignoring important hooks. + + Beware that existing shares will not be upgraded/downgraded, and by + default, Mercurial will refuse to interact with them until the mismatch + is resolved. See :hg:`help config share.safe-mismatch.source-safe` and + :hg:`help config share.safe-mismatch.source-not-safe` for details. + + Introduced in Mercurial 5.7. Disabled by default. @@ -1959,6 +1976,14 @@ tries to upgrade the share; if it fails, continue by respecting the share source setting + Check :hg:`help config format.use-share-safe` for details about the + share-safe feature. + +``safe-mismatch.source-safe.warn`` + Shows a warning on operations if the shared repository does not use + share-safe, but the source repository does. + (default: True) + ``safe-mismatch.source-not-safe`` Controls what happens when the shared repository uses the share-safe @@ -1977,11 +2002,8 @@ tries to downgrade the share to not use share-safe; if it fails, continue by respecting the shared source setting - -``safe-mismatch.source-safe.warn`` - Shows a warning on operations if the shared repository does not use - share-safe, but the source repository does. - (default: True) + Check :hg:`help config format.use-share-safe` for details about the + share-safe feature. ``safe-mismatch.source-not-safe.warn`` Shows a warning on operations if the shared repository uses share-safe,
--- a/mercurial/helptext/hg.1.txt Thu Jan 28 00:14:15 2021 -0800 +++ b/mercurial/helptext/hg.1.txt Fri Jan 29 17:32:09 2021 +0530 @@ -112,7 +112,7 @@ Copying """"""" -Copyright (C) 2005-2020 Matt Mackall. +Copyright (C) 2005-2021 Matt Mackall. Free use of this software is granted under the terms of the GNU General Public License version 2 or any later version.
--- a/mercurial/helptext/hgignore.5.txt Thu Jan 28 00:14:15 2021 -0800 +++ b/mercurial/helptext/hgignore.5.txt Fri Jan 29 17:32:09 2021 +0530 @@ -26,7 +26,7 @@ Copying ======= This manual page is copyright 2006 Vadim Gelfer. -Mercurial is copyright 2005-2020 Matt Mackall. +Mercurial is copyright 2005-2021 Matt Mackall. Free use of this software is granted under the terms of the GNU General Public License version 2 or any later version.
--- a/mercurial/helptext/hgrc.5.txt Thu Jan 28 00:14:15 2021 -0800 +++ b/mercurial/helptext/hgrc.5.txt Fri Jan 29 17:32:09 2021 +0530 @@ -34,7 +34,7 @@ Copying ======= This manual page is copyright 2005 Bryan O'Sullivan. -Mercurial is copyright 2005-2020 Matt Mackall. +Mercurial is copyright 2005-2021 Matt Mackall. Free use of this software is granted under the terms of the GNU General Public License version 2 or any later version.
--- a/mercurial/helptext/internals/requirements.txt Thu Jan 28 00:14:15 2021 -0800 +++ b/mercurial/helptext/internals/requirements.txt Fri Jan 29 17:32:09 2021 +0530 @@ -131,7 +131,7 @@ directory. bookmarksinstore -================== +================ Bookmarks are stored in ``.hg/store/`` instead of directly in ``.hg/`` where they used to be stored. The active bookmark is still stored @@ -156,8 +156,8 @@ benefit from a speedup. The other installations will do the necessary work to keep the index up to date, but will suffer a slowdown. -exp-sharesafe -============= +share-safe +========== Represents that the repository can be shared safely. Requirements and config of the source repository will be shared.
--- a/mercurial/localrepo.py Thu Jan 28 00:14:15 2021 -0800 +++ b/mercurial/localrepo.py Fri Jan 29 17:32:09 2021 +0530 @@ -568,6 +568,7 @@ # repository was shared the old way. We check the share source .hg/requires # for SHARESAFE_REQUIREMENT to detect whether the current repository needs # to be reshared + hint = _("see `hg help config.format.use-share-safe` for more information") if requirementsmod.SHARESAFE_REQUIREMENT in requirements: if ( @@ -599,14 +600,10 @@ ) elif mismatch_config == b'abort': raise error.Abort( - _( - b"share source does not support exp-sharesafe requirement" - ) + _(b"share source does not support share-safe requirement"), + hint=hint, ) else: - hint = _( - "run `hg help config.share.safe-mismatch.source-not-safe`" - ) raise error.Abort( _( b"share-safe mismatch with source.\nUnrecognized" @@ -646,10 +643,10 @@ _( b'version mismatch: source uses share-safe' b' functionality while the current share does not' - ) + ), + hint=hint, ) else: - hint = _("run `hg help config.share.safe-mismatch.source-safe`") raise error.Abort( _( b"share-safe mismatch with source.\nUnrecognized"
--- a/mercurial/upgrade.py Thu Jan 28 00:14:15 2021 -0800 +++ b/mercurial/upgrade.py Fri Jan 29 17:32:09 2021 +0530 @@ -277,15 +277,20 @@ scmutil.writerequires(hgvfs, diffrequires) ui.warn(_(b'repository upgraded to use share-safe mode\n')) except error.LockError as e: + hint = _( + "see `hg help config.format.use-share-safe` for more information" + ) if mismatch_config == b'upgrade-abort': raise error.Abort( _(b'failed to upgrade share, got error: %s') - % stringutil.forcebytestr(e.strerror) + % stringutil.forcebytestr(e.strerror), + hint=hint, ) elif mismatch_warn: ui.warn( _(b'failed to upgrade share, got error: %s\n') - % stringutil.forcebytestr(e.strerror) + % stringutil.forcebytestr(e.strerror), + hint=hint, ) finally: if wlock: @@ -329,17 +334,22 @@ scmutil.writerequires(hgvfs, current_requirements) ui.warn(_(b'repository downgraded to not use share-safe mode\n')) except error.LockError as e: + hint = _( + "see `hg help config.format.use-share-safe` for more information" + ) # If upgrade-abort is set, abort when upgrade fails, else let the # process continue as `upgrade-allow` is set if mismatch_config == b'downgrade-abort': raise error.Abort( _(b'failed to downgrade share, got error: %s') - % stringutil.forcebytestr(e.strerror) + % stringutil.forcebytestr(e.strerror), + hint=hint, ) elif mismatch_warn: ui.warn( _(b'failed to downgrade share, got error: %s\n') - % stringutil.forcebytestr(e.strerror) + % stringutil.forcebytestr(e.strerror), + hint=hint, ) finally: if wlock:
--- a/rust/hg-cpython/src/cindex.rs Thu Jan 28 00:14:15 2021 -0800 +++ b/rust/hg-cpython/src/cindex.rs Fri Jan 29 17:32:09 2021 +0530 @@ -16,7 +16,7 @@ }; use hg::revlog::{Node, RevlogIndex}; use hg::{Graph, GraphError, Revision, WORKING_DIRECTORY_REVISION}; -use libc::c_int; +use libc::{c_int, ssize_t}; const REVLOG_CABI_VERSION: c_int = 2; @@ -24,10 +24,10 @@ pub struct Revlog_CAPI { abi_version: c_int, index_length: - unsafe extern "C" fn(index: *mut revlog_capi::RawPyObject) -> c_int, + unsafe extern "C" fn(index: *mut revlog_capi::RawPyObject) -> ssize_t, index_node: unsafe extern "C" fn( index: *mut revlog_capi::RawPyObject, - rev: c_int, + rev: ssize_t, ) -> *const Node, index_parents: unsafe extern "C" fn( index: *mut revlog_capi::RawPyObject, @@ -157,7 +157,7 @@ fn node(&self, rev: Revision) -> Option<&Node> { let raw = unsafe { - (self.capi.index_node)(self.index.as_ptr(), rev as c_int) + (self.capi.index_node)(self.index.as_ptr(), rev as ssize_t) }; if raw.is_null() { None
--- a/setup.py Thu Jan 28 00:14:15 2021 -0800 +++ b/setup.py Fri Jan 29 17:32:09 2021 +0530 @@ -1700,6 +1700,8 @@ 'mercurial.pure', ] +py2exe_includes = [] + py2exeexcludes = [] py2exedllexcludes = ['crypt32.dll'] @@ -1710,7 +1712,7 @@ extra['console'] = [ { 'script': 'hg', - 'copyright': 'Copyright (C) 2005-2020 Matt Mackall and others', + 'copyright': 'Copyright (C) 2005-2021 Matt Mackall and others', 'product_version': version, } ] @@ -1728,6 +1730,10 @@ if extrapackages: py2exepackages.extend(extrapackages.split(' ')) + extra_includes = os.environ.get('HG_PY2EXE_EXTRA_INCLUDES') + if extra_includes: + py2exe_includes.extend(extra_includes.split(' ')) + excludes = os.environ.get('HG_PY2EXE_EXTRA_EXCLUDES') if excludes: py2exeexcludes.extend(excludes.split(' ')) @@ -1827,6 +1833,7 @@ 'py2exe': { 'bundle_files': 3, 'dll_excludes': py2exedllexcludes, + 'includes': py2exe_includes, 'excludes': py2exeexcludes, 'packages': py2exepackages, },
--- a/tests/test-lfs-test-server.t Thu Jan 28 00:14:15 2021 -0800 +++ b/tests/test-lfs-test-server.t Fri Jan 29 17:32:09 2021 +0530 @@ -420,7 +420,10 @@ TODO: give the proper error indication from `hg serve` - $ hg --repo ../repo1 update -C tip --debug +TODO: reconsider the except base class so that the git and hg errors yield the +same exit status. + + $ hg --repo ../repo1 update -C tip --debug --config ui.detailed-exit-code=False http auth: user foo, password *** resolving manifests branchmerge: False, force: True, partial: False @@ -460,7 +463,7 @@ Date: $HTTP_DATE$ (git-server !) abort: corrupt remote lfs object: d11e1a642b60813aee592094109b406089b8dff4cb157157f753418ec7857998 (git-server !) abort: LFS server error for "c": Validation error (hg-server !) - [50] + [255] The corrupted blob is not added to the usercache or local store
--- a/tests/test-persistent-nodemap.t Thu Jan 28 00:14:15 2021 -0800 +++ b/tests/test-persistent-nodemap.t Fri Jan 29 17:32:09 2021 +0530 @@ -31,6 +31,23 @@ #endif +#if rust + +Regression test for a previous bug in Rust/C FFI for the `Revlog_CAPI` capsule: +in places where `mercurial/cext/revlog.c` function signatures use `Py_ssize_t` +(64 bits on Linux x86_64), corresponding declarations in `rust/hg-cpython/src/cindex.rs` +incorrectly used `libc::c_int` (32 bits). +As a result, -1 passed from Rust for the null revision became 4294967295 in C. + + $ hg log -r 00000000 + changeset: -1:000000000000 + tag: tip + user: + date: Thu Jan 01 00:00:00 1970 +0000 + + +#endif + $ hg debugformat format-variant repo
--- a/tests/test-share-safe.t Thu Jan 28 00:14:15 2021 -0800 +++ b/tests/test-share-safe.t Fri Jan 29 17:32:09 2021 +0530 @@ -405,6 +405,7 @@ $ hg log -GT "{node}: {desc}\n" -R ../nss-share abort: version mismatch: source uses share-safe functionality while the current share does not + (see `hg help config.format.use-share-safe` for more information) [255] @@ -495,7 +496,8 @@ $ hg log -GT "{node}: {desc}\n" -R ../ss-share - abort: share source does not support exp-sharesafe requirement + abort: share source does not support share-safe requirement + (see `hg help config.format.use-share-safe` for more information) [255] Testing automatic downgrade of shares when config is set @@ -503,6 +505,7 @@ $ touch ../ss-share/.hg/wlock $ hg log -GT "{node}: {desc}\n" -R ../ss-share --config share.safe-mismatch.source-not-safe=downgrade-abort abort: failed to downgrade share, got error: Lock held + (see `hg help config.format.use-share-safe` for more information) [255] $ rm ../ss-share/.hg/wlock @@ -545,13 +548,14 @@ store $ hg log -GT "{node}: {desc}\n" -R ../nss-share abort: version mismatch: source uses share-safe functionality while the current share does not + (see `hg help config.format.use-share-safe` for more information) [255] Check that if lock is taken, upgrade fails but read operation are successful $ hg log -GT "{node}: {desc}\n" -R ../nss-share --config share.safe-mismatch.source-safe=upgra abort: share-safe mismatch with source. Unrecognized value 'upgra' of `share.safe-mismatch.source-safe` set. - (run `hg help config.share.safe-mismatch.source-safe`) + (see `hg help config.format.use-share-safe` for more information) [255] $ touch ../nss-share/.hg/wlock $ hg log -GT "{node}: {desc}\n" -R ../nss-share --config share.safe-mismatch.source-safe=upgrade-allow @@ -569,6 +573,7 @@ $ hg log -GT "{node}: {desc}\n" -R ../nss-share --config share.safe-mismatch.source-safe=upgrade-abort abort: failed to upgrade share, got error: Lock held + (see `hg help config.format.use-share-safe` for more information) [255] $ rm ../nss-share/.hg/wlock
--- a/tests/test-wireproto-exchangev2-shallow.t Thu Jan 28 00:14:15 2021 -0800 +++ b/tests/test-wireproto-exchangev2-shallow.t Fri Jan 29 17:32:09 2021 +0530 @@ -100,10 +100,15 @@ received frame(size=1170; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?) add changeset 3390ef850073 + received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?) add changeset b709380892b1 + received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?) add changeset 47fe012ab237 + received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?) add changeset 97765fc3cd62 + received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?) add changeset dc666cf9ecf3 + received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?) add changeset 93a8bd067ed2 received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?) checking for updated bookmarks @@ -269,10 +274,15 @@ received frame(size=1170; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?) add changeset 3390ef850073 + received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?) add changeset b709380892b1 + received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?) add changeset 47fe012ab237 + received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?) add changeset 97765fc3cd62 + received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?) add changeset dc666cf9ecf3 + received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?) add changeset 93a8bd067ed2 received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?) checking for updated bookmarks @@ -407,8 +417,11 @@ received frame(size=783; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?) add changeset 3390ef850073 + received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?) add changeset b709380892b1 + received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?) add changeset 47fe012ab237 + received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?) add changeset 97765fc3cd62 received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?) checking for updated bookmarks @@ -522,6 +535,7 @@ received frame(size=400; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?) add changeset dc666cf9ecf3 + received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?) add changeset 93a8bd067ed2 received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) (?) checking for updated bookmarks