--- a/.hgsigs Mon Dec 06 12:30:54 2021 -0800
+++ b/.hgsigs Wed Dec 08 10:14:37 2021 +0100
@@ -219,3 +219,4 @@
750920b18aaaddd654756be40dec59d90f2643be 0 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
--- a/.hgtags Mon Dec 06 12:30:54 2021 -0800
+++ b/.hgtags Wed Dec 08 10:14:37 2021 +0100
@@ -232,3 +232,4 @@
750920b18aaaddd654756be40dec59d90f2643be 5.9.2
6ee0244fc1cf889ae543d2ce0ec45201ae0be6e1 5.9.3
a44bb185f6bdbecc754996d8386722e2f0123b0a 6.0rc0
+5d08b289e2e526259d7d5ea32b70fe76d5b327d7 6.0
--- a/contrib/packaging/dockerrpm Mon Dec 06 12:30:54 2021 -0800
+++ b/contrib/packaging/dockerrpm Wed Dec 08 10:14:37 2021 +0100
@@ -18,13 +18,8 @@
CONTAINER=hg-docker-$PLATFORM
-if [[ -z "${HG_DOCKER_OWN_USER}" ]]; then
- DOCKERUID=1000
- DOCKERGID=1000
-else
- DOCKERUID=$(id -u)
- DOCKERGID=$(id -g)
-fi
+DOCKERUID=$(id -u)
+DOCKERGID=$(id -g)
$BUILDDIR/hg-docker build \
--build-arg UID=$DOCKERUID \
--- a/contrib/packaging/mercurial.spec Mon Dec 06 12:30:54 2021 -0800
+++ b/contrib/packaging/mercurial.spec Wed Dec 08 10:14:37 2021 +0100
@@ -27,6 +27,7 @@
Version: snapshot
Release: 0
License: GPLv2+
+Prefix: /
Group: Development/Tools
URL: https://mercurial-scm.org/
Source0: %{name}-%{version}-%{release}.tar.gz
--- a/hgext/fsmonitor/__init__.py Mon Dec 06 12:30:54 2021 -0800
+++ b/hgext/fsmonitor/__init__.py Wed Dec 08 10:14:37 2021 +0100
@@ -336,7 +336,7 @@
nonnormalset = {
f
for f, e in self._map.items()
- if e.v1_state() != "n" or e.v1_mtime() == -1
+ if e.v1_state() != b"n" or e.v1_mtime() == -1
}
copymap = self._map.copymap
--- a/hgext/fsmonitor/pywatchman/bser.c Mon Dec 06 12:30:54 2021 -0800
+++ b/hgext/fsmonitor/pywatchman/bser.c Wed Dec 08 10:14:37 2021 +0100
@@ -28,6 +28,7 @@
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#define PY_SSIZE_T_CLEAN
#include <Python.h>
#include <bytesobject.h>
#ifdef _MSC_VER
@@ -1052,7 +1053,7 @@
int64_t* total_len_out) {
const char* start = NULL;
const char* data = NULL;
- int datalen = 0;
+ Py_ssize_t datalen = 0;
const char* end;
int64_t expected_len;
off_t position;
@@ -1101,7 +1102,7 @@
static PyObject* bser_loads(PyObject* self, PyObject* args, PyObject* kw) {
const char* data = NULL;
- int datalen = 0;
+ Py_ssize_t datalen = 0;
const char* start;
const char* end;
int64_t expected_len;
--- a/mercurial/cext/pathencode.c Mon Dec 06 12:30:54 2021 -0800
+++ b/mercurial/cext/pathencode.c Wed Dec 08 10:14:37 2021 +0100
@@ -176,7 +176,7 @@
if (newobj) {
assert(PyBytes_Check(newobj));
- Py_SIZE(newobj)--;
+ Py_SET_SIZE(newobj, Py_SIZE(newobj) - 1);
_encodedir(PyBytes_AS_STRING(newobj), newlen, path, len + 1);
}
@@ -791,7 +791,7 @@
if (newobj) {
assert(PyBytes_Check(newobj));
- Py_SIZE(newobj)--;
+ Py_SET_SIZE(newobj, Py_SIZE(newobj) - 1);
basicencode(PyBytes_AS_STRING(newobj), newlen, path,
len + 1);
}
--- a/mercurial/revlogutils/nodemap.py Mon Dec 06 12:30:54 2021 -0800
+++ b/mercurial/revlogutils/nodemap.py Wed Dec 08 10:14:37 2021 +0100
@@ -147,7 +147,7 @@
if revlog._nodemap_file is None:
msg = "calling persist nodemap on a revlog without the feature enabled"
raise error.ProgrammingError(msg)
- repo.svfs.unlink(revlog._nodemap_file)
+ repo.svfs.tryunlink(revlog._nodemap_file)
def persist_nodemap(tr, revlog, pending=False, force=False):
--- a/mercurial/upgrade_utils/engine.py Mon Dec 06 12:30:54 2021 -0800
+++ b/mercurial/upgrade_utils/engine.py Wed Dec 08 10:14:37 2021 +0100
@@ -7,6 +7,7 @@
from __future__ import absolute_import
+import errno
import stat
from ..i18n import _
@@ -633,16 +634,29 @@
util.copyfile(
srcrepo.vfs.join(b'requires'), backupvfs.join(b'requires')
)
- util.copyfile(
- srcrepo.vfs.join(b'dirstate'), backupvfs.join(b'dirstate')
- )
+ try:
+ util.copyfile(
+ srcrepo.vfs.join(b'dirstate'), backupvfs.join(b'dirstate')
+ )
+ except (IOError, OSError) as e:
+ # The dirstate does not exist on an empty repo or a repo with no
+ # revision checked out
+ if e.errno != errno.ENOENT:
+ raise
assert srcrepo.dirstate._use_dirstate_v2 == (old == b'v2')
srcrepo.dirstate._map.preload()
srcrepo.dirstate._use_dirstate_v2 = new == b'v2'
srcrepo.dirstate._map._use_dirstate_v2 = srcrepo.dirstate._use_dirstate_v2
srcrepo.dirstate._dirty = True
- srcrepo.vfs.unlink(b'dirstate')
+ try:
+ srcrepo.vfs.unlink(b'dirstate')
+ except (IOError, OSError) as e:
+ # The dirstate does not exist on an empty repo or a repo with no
+ # revision checked out
+ if e.errno != errno.ENOENT:
+ raise
+
srcrepo.dirstate.write(None)
scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements)
--- a/tests/test-fix.t Mon Dec 06 12:30:54 2021 -0800
+++ b/tests/test-fix.t Wed Dec 08 10:14:37 2021 +0100
@@ -1795,10 +1795,10 @@
> --config "fix.log:pattern=glob:**.log"
$ cat $LOGFILE | sort | uniq -c
- 4 bar.log
- 4 baz.log
- 3 foo.log
- 2 qux.log
+ \s*4 bar.log (re)
+ \s*4 baz.log (re)
+ \s*3 foo.log (re)
+ \s*2 qux.log (re)
$ cd ..
--- a/tests/test-upgrade-repo.t Mon Dec 06 12:30:54 2021 -0800
+++ b/tests/test-upgrade-repo.t Wed Dec 08 10:14:37 2021 +0100
@@ -1634,30 +1634,24 @@
$ hg debugupgraderepo --run
nothing to do
-#if rust
+#if no-rust
+
+ $ cat << EOF >> $HGRCPATH
+ > [storage]
+ > dirstate-v2.slow-path = allow
+ > EOF
+
+#endif
Upgrade to dirstate-v2
- $ hg debugformat -v --config format.exp-rc-dirstate-v2=1
- format-variant repo config default
- fncache: yes yes yes
+ $ hg debugformat -v --config format.exp-rc-dirstate-v2=1 | grep dirstate-v2
dirstate-v2: no yes no
- dotencode: yes yes yes
- generaldelta: yes yes yes
- share-safe: no no no
- sparserevlog: yes yes yes
- persistent-nodemap: yes yes no
- copies-sdc: no no no
- revlog-v2: yes yes no
- changelog-v2: no no no
- plain-cl-delta: yes yes yes
- compression: zstd zstd zstd
- compression-level: default default default
$ hg debugupgraderepo --config format.exp-rc-dirstate-v2=1 --run
upgrade will perform the following actions:
requirements
- preserved: dotencode, exp-revlogv2.2, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, sparserevlog, store
+ preserved: * (glob)
added: dirstate-v2
dirstate-v2
@@ -1677,23 +1671,10 @@
removing temporary repository $TESTTMP/sparserevlogrepo/.hg/upgrade.* (glob)
$ ls .hg/upgradebackup.*/dirstate
.hg/upgradebackup.*/dirstate (glob)
- $ hg debugformat -v
- format-variant repo config default
- fncache: yes yes yes
+ $ hg debugformat -v | grep dirstate-v2
dirstate-v2: yes no no
- dotencode: yes yes yes
- generaldelta: yes yes yes
- share-safe: no no no
- sparserevlog: yes yes yes
- persistent-nodemap: yes yes no
- copies-sdc: no no no
- revlog-v2: yes yes no
- changelog-v2: no no no
- plain-cl-delta: yes yes yes
- compression: zstd zstd zstd
- compression-level: default default default
$ hg status
- $ dd status=none bs=12 count=1 if=.hg/dirstate
+ $ dd bs=12 count=1 if=.hg/dirstate 2> /dev/null
dirstate-v2
Downgrade from dirstate-v2
@@ -1702,7 +1683,7 @@
upgrade will perform the following actions:
requirements
- preserved: dotencode, exp-revlogv2.2, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, sparserevlog, store
+ preserved: * (glob)
removed: dirstate-v2
processed revlogs:
@@ -1717,21 +1698,69 @@
downgrading from dirstate-v2 to v1
replaced files will be backed up at $TESTTMP/sparserevlogrepo/.hg/upgradebackup.* (glob)
removing temporary repository $TESTTMP/sparserevlogrepo/.hg/upgrade.* (glob)
- $ hg debugformat -v
- format-variant repo config default
- fncache: yes yes yes
+ $ hg debugformat -v | grep dirstate-v2
dirstate-v2: no no no
- dotencode: yes yes yes
- generaldelta: yes yes yes
- share-safe: no no no
- sparserevlog: yes yes yes
- persistent-nodemap: yes yes no
- copies-sdc: no no no
- revlog-v2: yes yes no
- changelog-v2: no no no
- plain-cl-delta: yes yes yes
- compression: zstd zstd zstd
- compression-level: default default default
$ hg status
-#endif
+ $ cd ..
+
+dirstate-v2: upgrade and downgrade from and empty repository:
+-------------------------------------------------------------
+
+ $ hg init --config format.exp-rc-dirstate-v2=no dirstate-v2-empty
+ $ cd dirstate-v2-empty
+ $ hg debugformat | grep dirstate-v2
+ dirstate-v2: no
+
+upgrade
+
+ $ hg debugupgraderepo --run --config format.exp-rc-dirstate-v2=yes
+ upgrade will perform the following actions:
+
+ requirements
+ preserved: * (glob)
+ added: dirstate-v2
+
+ dirstate-v2
+ "hg status" will be faster
+
+ processed revlogs:
+ - all-filelogs
+ - changelog
+ - manifest
+
+ beginning upgrade...
+ repository locked and read-only
+ creating temporary repository to stage upgraded data: $TESTTMP/dirstate-v2-empty/.hg/upgrade.* (glob)
+ (it is safe to interrupt this process any time before data migration completes)
+ upgrading to dirstate-v2 from v1
+ replaced files will be backed up at $TESTTMP/dirstate-v2-empty/.hg/upgradebackup.* (glob)
+ removing temporary repository $TESTTMP/dirstate-v2-empty/.hg/upgrade.* (glob)
+ $ hg debugformat | grep dirstate-v2
+ dirstate-v2: yes
+
+downgrade
+
+ $ hg debugupgraderepo --run --config format.exp-rc-dirstate-v2=no
+ upgrade will perform the following actions:
+
+ requirements
+ preserved: * (glob)
+ removed: dirstate-v2
+
+ processed revlogs:
+ - all-filelogs
+ - changelog
+ - manifest
+
+ beginning upgrade...
+ repository locked and read-only
+ creating temporary repository to stage upgraded data: $TESTTMP/dirstate-v2-empty/.hg/upgrade.* (glob)
+ (it is safe to interrupt this process any time before data migration completes)
+ downgrading from dirstate-v2 to v1
+ replaced files will be backed up at $TESTTMP/dirstate-v2-empty/.hg/upgradebackup.* (glob)
+ removing temporary repository $TESTTMP/dirstate-v2-empty/.hg/upgrade.* (glob)
+ $ hg debugformat | grep dirstate-v2
+ dirstate-v2: no
+
+ $ cd ..