Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/devel/py-mercurial Update Mercurial to 5.5:



details:   https://anonhg.NetBSD.org/pkgsrc/rev/857e503232b6
branches:  trunk
changeset: 436490:857e503232b6
user:      joerg <joerg%pkgsrc.org@localhost>
date:      Mon Aug 03 21:34:20 2020 +0000

description:
Update Mercurial to 5.5:

== New Features ==

 * clonebundles can be annotated with the expected memory requirements
   using the `REQUIREDRAM` option. This allows clients to skip
   bundles created with large zstd windows and fallback to larger, but
   less demanding bundles.

 * The `phabricator` extension now provides more functionality of the
   arcanist CLI like changing the status of a differential.

 * Phases processing is much faster, especially for repositories with
   old non-public changesets.


== New Experimental Features ==

 * The core of some hg operations have been (and are being)
   implemented in rust, for speed. `hg status` on a repository with
   300k tracked files goes from 1.8s to 0.6s for instance.
   This has currently been tested only on linux, and does not build on
   windows. See rust/README.rst in the mercurial repository for
   instructions to opt into this.

 * An experimental config `rewrite.empty-successor` was introduced to control
   what happens when rewrite operations result in empty changesets.


== Bug Fixes ==

 * For the case when connected to a TTY, stdout was fixed to be line-buffered
   on Python 3 (where it was block-buffered before, causing the process to seem
   hanging) and Windows on Python 2 (where it was unbuffered before).

 * Subversion sources of the convert extension were fixed to work on Python 3.

 * Subversion sources of the convert extension now interpret the encoding of
   URLs like Subversion. Previously, there were situations where the convert
   extension recognized a repository as present but Subversion did not, and
   vice versa.

 * The empty changeset check of in-memory rebases was fixed to match that of
   normal rebases (and that of the commit command).

 * The push command now checks the correct set of outgoing changesets for
   obsolete and unstable changesets. Previously, it could happen that the check
   prevented pushing changesets which were already on the server.


== Backwards Compatibility Changes ==

 * Mercurial now requires at least Python 2.7.9 or a Python version that
   backported modern SSL/TLS features (as defined in PEP 466), and that Python
   was compiled against a OpenSSL version supporting TLS 1.1 or TLS 1.2
   (likely this requires the OpenSSL version to be at least 1.0.1).

 * The `hg perfwrite` command from contrib/perf.py was made more flexible and
   changed its default behavior. To get the previous behavior, run `hg perfwrite
   --nlines=100000 --nitems=1 --item='Testing write performance' --batch-line`.

 * The absorb extension now preserves changesets with no file changes that can
   be created by the commit command (those which change the branch name
   compared to the parent and those closing a branch head).

diffstat:

 devel/py-mercurial/Makefile            |   12 +-
 devel/py-mercurial/PLIST               |    9 ++-
 devel/py-mercurial/distinfo            |   14 +--
 devel/py-mercurial/patches/patch-D8490 |   54 -------------
 devel/py-mercurial/patches/patch-D8575 |  132 ---------------------------------
 devel/py-mercurial/version.mk          |    4 +-
 6 files changed, 22 insertions(+), 203 deletions(-)

diffs (284 lines):

diff -r 3c956eda63bb -r 857e503232b6 devel/py-mercurial/Makefile
--- a/devel/py-mercurial/Makefile       Mon Aug 03 21:34:16 2020 +0000
+++ b/devel/py-mercurial/Makefile       Mon Aug 03 21:34:20 2020 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.43 2020/06/10 14:14:19 wiz Exp $
+# $NetBSD: Makefile,v 1.44 2020/08/03 21:34:20 joerg Exp $
 
 DISTNAME=      mercurial-${VERSION}
 PKGNAME=       ${PYPKGPREFIX}-${DISTNAME}
@@ -26,13 +26,13 @@
 
 .include "version.mk"
 
-# Known test failures as of 5.4.1:
+# Known test failures as of 5.5
 # test-doctest:
 # https://bz.mercurial-scm.org/show_bug.cgi?id=6320
-# test-obsolete-distributed: broken because of patches/patch-D8480
-# Ran 842 tests, 78 skipped, 2 failed.
-do-test:
-       cd ${WRKSRC} && make tests PYTHON=${PYTHONBIN} TESTFLAGS=${_MAKE_JOBS:Q}
+# Ran 859 tests, 70 skipped, 2 failed.
+TEST_TARGET=           tests
+TEST_MAKE_FLAGS+=      PYTHON=${PYTHONBIN} CARGO=/dev/null \
+                       TESTFLAGS=${_MAKE_JOBS:Q}
 
 post-install:
        ${INSTALL_DATA} ${WRKSRC}/doc/*.1  ${DESTDIR}${PREFIX}/${PKGMANDIR}/man1
diff -r 3c956eda63bb -r 857e503232b6 devel/py-mercurial/PLIST
--- a/devel/py-mercurial/PLIST  Mon Aug 03 21:34:16 2020 +0000
+++ b/devel/py-mercurial/PLIST  Mon Aug 03 21:34:20 2020 +0000
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST,v 1.28 2020/05/05 12:12:47 wiz Exp $
+@comment $NetBSD: PLIST,v 1.29 2020/08/03 21:34:20 joerg Exp $
 bin/hg
 ${PYSITELIB}/hgdemandimport/__init__.py
 ${PYSITELIB}/hgdemandimport/__init__.pyc
@@ -663,6 +663,7 @@
 ${PYSITELIB}/mercurial/helptext/internals/__init__.py
 ${PYSITELIB}/mercurial/helptext/internals/__init__.pyc
 ${PYSITELIB}/mercurial/helptext/internals/__init__.pyo
+${PYSITELIB}/mercurial/helptext/internals/bid-merge.txt
 ${PYSITELIB}/mercurial/helptext/internals/bundle2.txt
 ${PYSITELIB}/mercurial/helptext/internals/bundles.txt
 ${PYSITELIB}/mercurial/helptext/internals/cbor.txt
@@ -797,9 +798,15 @@
 ${PYSITELIB}/mercurial/merge.py
 ${PYSITELIB}/mercurial/merge.pyc
 ${PYSITELIB}/mercurial/merge.pyo
+${PYSITELIB}/mercurial/mergestate.py
+${PYSITELIB}/mercurial/mergestate.pyc
+${PYSITELIB}/mercurial/mergestate.pyo
 ${PYSITELIB}/mercurial/mergeutil.py
 ${PYSITELIB}/mercurial/mergeutil.pyc
 ${PYSITELIB}/mercurial/mergeutil.pyo
+${PYSITELIB}/mercurial/metadata.py
+${PYSITELIB}/mercurial/metadata.pyc
+${PYSITELIB}/mercurial/metadata.pyo
 ${PYSITELIB}/mercurial/minifileset.py
 ${PYSITELIB}/mercurial/minifileset.pyc
 ${PYSITELIB}/mercurial/minifileset.pyo
diff -r 3c956eda63bb -r 857e503232b6 devel/py-mercurial/distinfo
--- a/devel/py-mercurial/distinfo       Mon Aug 03 21:34:16 2020 +0000
+++ b/devel/py-mercurial/distinfo       Mon Aug 03 21:34:20 2020 +0000
@@ -1,10 +1,8 @@
-$NetBSD: distinfo,v 1.89 2020/06/09 07:07:13 wiz Exp $
+$NetBSD: distinfo,v 1.90 2020/08/03 21:34:20 joerg Exp $
 
-SHA1 (mercurial-5.4.1.tar.gz) = fb77969c3d9fe1a4df2af282bbec74201c9cbdac
-RMD160 (mercurial-5.4.1.tar.gz) = 040a68d43f4afb4991ddb4aeef951de7891a6d37
-SHA512 (mercurial-5.4.1.tar.gz) = 6173853c38f0aba59d2e29bec7da1c384c27a6004d5d00d1aee70571155122e07514fe6e56cecfdae48ec5f670823a2e6a5c9c8a36dd7041def2b8956fd35703
-Size (mercurial-5.4.1.tar.gz) = 7725893 bytes
-SHA1 (patch-D8480) = dca33fd25007a160cff02054ca659cce2a01511c
-SHA1 (patch-D8490) = 96a4eefb403919d17f188573b7d1dc34cef28388
+SHA1 (mercurial-5.5.tar.gz) = ff9b44836fb7342f6f3fbf401118cde8b61e8abf
+RMD160 (mercurial-5.5.tar.gz) = 40beaddc36912a6d57a2238346082b02f4f75f8f
+SHA512 (mercurial-5.5.tar.gz) = ed8f283a61aa13fd3638ae5b0473e989069128fbec99e9a0e5980db6041e5ea3bae6ff7647ba609c7fb3e6386aaa7398861d2cab6c6fb1165bfeb532855c331d
+Size (mercurial-5.5.tar.gz) = 7757631 bytes
+SHA1 (patch-D8480) = d97094c64addcc243e54cfde48734ecfe130c3d6
 SHA1 (patch-D8574) = 56cecc1c83558803186e84d90ef67b4dce68f8e9
-SHA1 (patch-D8575) = 5f414acb04ba5f8c141ceada93f29f6f7d43a833
diff -r 3c956eda63bb -r 857e503232b6 devel/py-mercurial/patches/patch-D8490
--- a/devel/py-mercurial/patches/patch-D8490    Mon Aug 03 21:34:16 2020 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-$NetBSD: patch-D8490,v 1.1 2020/05/24 01:16:26 joerg Exp $
-
-# HG changeset patch
-# User Joerg Sonnenberger <joerg%bec.de@localhost>
-# Date 1588289528 -7200
-#      Fri May 01 01:32:08 2020 +0200
-# Branch stable
-# Node ID 886c6a1b87bc66671c4e654c2d607800a4a712e9
-# Parent  be6401a2572646712aebe80520ee8909562bb0a5
-hooks: provide access to transaction changes for internal hooks
-
-External hooks are skipped here as the environment often has a size
-limit in the low MBs and that can easily be reached by larger
-transactions.
-
-Differential Revision: https://phab.mercurial-scm.org/D8490
-
-diff -r be6401a25726 -r 886c6a1b87bc mercurial/hook.py
---- mercurial/hook.py  Thu May 07 23:54:37 2020 +0200
-+++ mercurial/hook.py  Fri May 01 01:32:08 2020 +0200
-@@ -158,6 +158,10 @@
-     env[b'HG_HOOKNAME'] = name
- 
-     for k, v in pycompat.iteritems(args):
-+        # transaction changes can accumulate MBs of data, so skip it
-+        # for external hooks
-+        if k == b'changes':
-+            continue
-         if callable(v):
-             v = v()
-         if isinstance(v, (dict, list)):
-diff -r be6401a25726 -r 886c6a1b87bc mercurial/localrepo.py
---- mercurial/localrepo.py     Thu May 07 23:54:37 2020 +0200
-+++ mercurial/localrepo.py     Fri May 01 01:32:08 2020 +0200
-@@ -2243,6 +2243,7 @@
- 
-         tr.hookargs[b'txnid'] = txnid
-         tr.hookargs[b'txnname'] = desc
-+        tr.hookargs[b'changes'] = tr.changes
-         # note: writing the fncache only during finalize mean that the file is
-         # outdated when running hooks. As fncache is used for streaming clone,
-         # this is not expected to break anything that happen during the hooks.
-diff -r be6401a25726 -r 886c6a1b87bc tests/test-hook.t
---- tests/test-hook.t  Thu May 07 23:54:37 2020 +0200
-+++ tests/test-hook.t  Fri May 01 01:32:08 2020 +0200
-@@ -443,7 +443,7 @@
-   HG_PENDING=$TESTTMP/a
-   
-   transaction abort!
--  txnabort Python hook: txnid,txnname
-+  txnabort Python hook: changes,txnid,txnname
-   txnabort hook: HG_HOOKNAME=txnabort.1
-   HG_HOOKTYPE=txnabort
-   HG_TXNID=TXN:$ID$
diff -r 3c956eda63bb -r 857e503232b6 devel/py-mercurial/patches/patch-D8575
--- a/devel/py-mercurial/patches/patch-D8575    Mon Aug 03 21:34:16 2020 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,132 +0,0 @@
-$NetBSD: patch-D8575,v 1.1 2020/05/24 01:16:26 joerg Exp $
-
-# HG changeset patch
-# User Joerg Sonnenberger <joerg%bec.de@localhost>
-# Date 1590077930 -7200
-#      Thu May 21 18:18:50 2020 +0200
-# Branch stable
-# Node ID c6bc304695881f82d7f0803d136678d7d29b193b
-# Parent  423cb450e7220473e144dc6fb089bec01c8d9d44
-hooklib: fix detection of successors for changeset_obsoleted
-
-Provide a hook for obsutil.getobsolete to be used with either a
-transaction or the changes item of the transaction, since hooks only
-have access to the latter. Use that to find the correct list of
-revisions with obsmarkers, even new ones, and then filter out revisions
-with known successors.
-
-Move the processing from pretxnclose to txnclose as the transaction
-access itself is no longer necessary. This is more in line with notify
-and ensures that sanity checks can abort the transaction first.
-
-Differential Revision: https://phab.mercurial-scm.org/D8575
-
-diff -r 423cb450e722 -r c6bc30469588 hgext/hooklib/changeset_obsoleted.py
---- hgext/hooklib/changeset_obsoleted.py       Tue May 19 01:57:12 2020 +0200
-+++ hgext/hooklib/changeset_obsoleted.py       Thu May 21 18:18:50 2020 +0200
-@@ -122,10 +122,18 @@
-         )
- 
- 
-+def has_successor(repo, rev):
-+    return any(
-+        r for r in obsutil.allsuccessors(repo.obsstore, [rev]) if r != rev
-+    )
-+
-+
- def hook(ui, repo, hooktype, node=None, **kwargs):
--    if hooktype != b"pretxnclose":
-+    if hooktype != b"txnclose":
-         raise error.Abort(
-             _(b'Unsupported hook type %r') % pycompat.bytestr(hooktype)
-         )
--    for rev in obsutil.getobsoleted(repo, repo.currenttransaction()):
--        _report_commit(ui, repo, repo.unfiltered()[rev])
-+    for rev in obsutil.getobsoleted(repo, changes=kwargs['changes']):
-+        ctx = repo.unfiltered()[rev]
-+        if not has_successor(repo, ctx.node()):
-+            _report_commit(ui, repo, ctx)
-diff -r 423cb450e722 -r c6bc30469588 mercurial/obsutil.py
---- mercurial/obsutil.py       Tue May 19 01:57:12 2020 +0200
-+++ mercurial/obsutil.py       Thu May 21 18:18:50 2020 +0200
-@@ -481,14 +481,21 @@
-     return effects
- 
- 
--def getobsoleted(repo, tr):
--    """return the set of pre-existing revisions obsoleted by a transaction"""
-+def getobsoleted(repo, tr=None, changes=None):
-+    """return the set of pre-existing revisions obsoleted by a transaction
-+
-+    Either the transaction or changes item of the transaction (for hooks)
-+    must be provided, but not both.
-+    """
-+    assert (tr is None) != (changes is None)
-     torev = repo.unfiltered().changelog.index.get_rev
-     phase = repo._phasecache.phase
-     succsmarkers = repo.obsstore.successors.get
-     public = phases.public
--    addedmarkers = tr.changes[b'obsmarkers']
--    origrepolen = tr.changes[b'origrepolen']
-+    if changes is None:
-+        changes = tr.changes
-+    addedmarkers = changes[b'obsmarkers']
-+    origrepolen = changes[b'origrepolen']
-     seenrevs = set()
-     obsoleted = set()
-     for mark in addedmarkers:
-diff -r 423cb450e722 -r c6bc30469588 tests/test-hooklib-changeset_obsoleted.t
---- tests/test-hooklib-changeset_obsoleted.t   Tue May 19 01:57:12 2020 +0200
-+++ tests/test-hooklib-changeset_obsoleted.t   Thu May 21 18:18:50 2020 +0200
-@@ -24,7 +24,7 @@
-   $ cat <<EOF >> b/.hg/hgrc
-   > [hooks]
-   > incoming.notify = python:hgext.notify.hook
--  > pretxnclose.changeset_obsoleted = python:hgext.hooklib.changeset_obsoleted.hook
-+  > txnclose.changeset_obsoleted = python:hgext.hooklib.changeset_obsoleted.hook
-   > EOF
-   $ hg --cwd b pull ../a | "$PYTHON" $TESTDIR/unwrap-message-id.py
-   pulling from ../a
-@@ -72,6 +72,8 @@
-   pushing to ../b
-   searching for changes
-   no changes found
-+  1 new obsolescence markers
-+  obsoleted 1 changesets
-   Subject: changeset abandoned
-   In-reply-to: <hg.81c297828fd2d5afaadf2775a6a71b74143b6451dfaac09fac939e9107a50d01%example.com@localhost>
-   Message-Id: <hg.d6329e9481594f0f3c8a84362b3511318bfbce50748ab1123f909eb6fbcab018%example.com@localhost>
-@@ -80,5 +82,33 @@
-   To: baz%example.com@localhost
-   
-   This changeset has been abandoned.
-+
-+Check that known changesets with known successors do not result in a mail.
-+
-+  $ hg init c
-+  $ hg init d
-+  $ cat <<EOF >> d/.hg/hgrc
-+  > [hooks]
-+  > incoming.notify = python:hgext.notify.hook
-+  > txnclose.changeset_obsoleted = python:hgext.hooklib.changeset_obsoleted.hook
-+  > EOF
-+  $ hg --cwd c debugbuilddag '.:parent.*parent'
-+  $ hg --cwd c push ../d -r 1
-+  pushing to ../d
-+  searching for changes
-+  adding changesets
-+  adding manifests
-+  adding file changes
-+  added 2 changesets with 0 changes to 0 files
-+  $ hg --cwd c debugobsolete $(hg --cwd c log -T '{node}' -r 1) $(hg --cwd c log -T '{node}' -r 2)
-   1 new obsolescence markers
-   obsoleted 1 changesets
-+  $ hg --cwd c push ../d | "$PYTHON" $TESTDIR/unwrap-message-id.py
-+  pushing to ../d
-+  searching for changes
-+  adding changesets
-+  adding manifests
-+  adding file changes
-+  added 1 changesets with 0 changes to 0 files (+1 heads)
-+  1 new obsolescence markers
-+  obsoleted 1 changesets
diff -r 3c956eda63bb -r 857e503232b6 devel/py-mercurial/version.mk
--- a/devel/py-mercurial/version.mk     Mon Aug 03 21:34:16 2020 +0000
+++ b/devel/py-mercurial/version.mk     Mon Aug 03 21:34:20 2020 +0000
@@ -1,3 +1,3 @@
-# $NetBSD: version.mk,v 1.15 2020/06/09 07:07:13 wiz Exp $
+# $NetBSD: version.mk,v 1.16 2020/08/03 21:34:20 joerg Exp $
 
-VERSION=       5.4.1
+VERSION=       5.5



Home | Main Index | Thread Index | Old Index