Import mercurial_6.3.2-1+deb12u1.debian.tar.xz
authorJulien Cristau <jcristau@debian.org>
Thu, 20 Mar 2025 12:56:44 +0000 (13:56 +0100)
committerJulien Cristau <jcristau@debian.org>
Thu, 20 Mar 2025 12:56:44 +0000 (13:56 +0100)
[dgit import tarball mercurial 6.3.2-1+deb12u1 mercurial_6.3.2-1+deb12u1.debian.tar.xz]

44 files changed:
NEWS [new file with mode: 0644]
README.Debian [new file with mode: 0644]
README.source [new file with mode: 0644]
cacerts.rc [new file with mode: 0644]
changelog [new file with mode: 0644]
control [new file with mode: 0644]
copyright [new file with mode: 0644]
gbp.conf [new file with mode: 0644]
hgext.rc [new file with mode: 0644]
hgext.rc.md5sums [new file with mode: 0644]
hgrc [new file with mode: 0644]
mercurial-common.bash-completion [new file with mode: 0644]
mercurial-common.dirs [new file with mode: 0644]
mercurial-common.examples [new file with mode: 0644]
mercurial-common.install [new file with mode: 0644]
mercurial-common.maintscript [new file with mode: 0644]
mercurial-common.postinst [new file with mode: 0644]
mercurial.dirs [new file with mode: 0644]
mercurial.install [new file with mode: 0644]
mercurial.links [new file with mode: 0644]
mercurial.postinst [new file with mode: 0644]
mercurial.postrm [new file with mode: 0644]
mercurial.test_blacklist [new file with mode: 0644]
patches/0005-Tolerate-SIGINT-getting-the-kill-in-test-stdio.py.patch [new file with mode: 0644]
patches/CVE-2025-2361.patch [new file with mode: 0644]
patches/cgitb.patch [new file with mode: 0644]
patches/deb_specific__disable_libdir_replacement.patch [new file with mode: 0644]
patches/deb_specific__hgk.py.patch [new file with mode: 0644]
patches/deb_specific__optional-dependencies [new file with mode: 0644]
patches/from_upstream_stable.patch [new file with mode: 0644]
patches/openssl_3_cipher_tlsv1.patch [new file with mode: 0644]
patches/patchbomb-ambiguous-address.patch [new file with mode: 0644]
patches/proposed_upstream__doctest.path [new file with mode: 0644]
patches/py310/9_tests__silence_asyncore_smtpd_deprecation_warnings.patch [new file with mode: 0644]
patches/series [new file with mode: 0644]
patches/test-hghave-testrepo.patch [new file with mode: 0644]
rules [new file with mode: 0755]
source/format [new file with mode: 0644]
tests/control [new file with mode: 0644]
tests/hgsubversion [new file with mode: 0755]
tests/mercurial-git [new file with mode: 0755]
tests/testsuite [new file with mode: 0755]
upstream/signing-key.asc [new file with mode: 0644]
watch [new file with mode: 0644]

diff --git a/NEWS b/NEWS
new file mode 100644 (file)
index 0000000..8ae4442
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,100 @@
+mercurial (1.4.3-1) unstable; urgency=low
+
+  mercurial.el (emacs mode for mercurial) is not installed anymore in emacs
+  paths. Emacs22 or newer has vc-hg.el that is better. If needed, this file
+  is still provided in the examples directory.
+    The alias extension does not exist anymore as its functionalities are now
+  in mercurial core. To avoid spurious warning about failed loading of
+  extension, users just have to remove it in their hgrc file.
+
+ -- Vincent Danjean <vdanjean@debian.org>  Mon, 15 Feb 2010 18:06:52 +0100
+
+mercurial (1.1.2-1) unstable; urgency=low
+
+  Since the 1.1.2-1 version, mercurial does not enable any extension by
+  default anymore. Upstream asks us to do so because:
+  - users can easily enable any extension if they wish, however they cannot
+    disable a extension that have been enabled system-wide
+  - upstream prefers that default Mercurial installation is the plain Mercurial
+    without extension.
+
+ -- Vincent Danjean <vdanjean@debian.org>  Sat, 17 Jan 2009 17:47:06 +0100
+
+mercurial (1.0-5) unstable; urgency=low
+
+  Since the 1.0 version, mercurial handles most of the merges internaly.
+  This is an upstream decision (see upstream changeset f077815932ce)
+  that the debian package will follow. This means that :
+  - there is no hgmerge script any more
+  - programs that were invoked by hgmerge (kdiff3, ...) are not by default
+  See http://www.selenic.com/mercurial/wiki/index.cgi/MergeToolConfiguration
+  for configuring mergetools with mercurial 1.0
+
+ -- Vincent Danjean <vdanjean@debian.org>  Tue, 20 May 2008 22:37:24 +0200
+
+mercurial (1.0) unstable; urgency=low
+
+  Since the 1.0 version, the hbisect extension is now provided as a 
+  built-in command. If you keep an older version of the hgext.rc file
+  in /etc/mercurial/hgrc.d/ or a $HOME/.hgrc file with the extension 
+  enabled , mercurial will emit a warning: "failed to import extension 
+  hgext.hbisect: No module  named  hbisect". Just delete the  
+  hgext.hbisect entry in the hgext.rc and/or .hgrc file.
+  
+ -- Gerardo Curiel <gcuriel@debian.org.ve>  Wed, 02 Apr 2008 16:14:47 -0430
+
+mercurial (0.9) unstable; urgency=low
+
+  Since the 0.8.1-5 version, mercurial uses python2.4 instead of (currently the
+  default on Debian system) python2.3. This allows tailor to use the hg
+  backend (tailor requires python2.4).
+  If someone really need python2.3 version of mercurial, please tell me (with
+  reportbug for example). I will then split the package in python modules
+  (default, 2.3, 2.4, ...) and one executable.
+
+  Note: if you copied the hgwebdir.cgi or hgweb.cgi script from the examples
+  directory, do not forget to update it so that it runs /usr/bin/python2.4
+  instead of /usr/bin/python (or recopy it)
+
+  UPDATE since 0.9-6:
+    Due to the new python policy, mercurial modules are now available for all
+  supported python versions in debian (currently 2.3 and 2.4)
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Tue,  4 Jul 2006 00:53:21 +0200
+
+mercurial (0.8) unstable; urgency=low
+  Upgrade notes:
+  - diff and status command are now repo-wide by default
+    (use 'hg diff .' for the old behavior)
+  - GPG signing is now done with the gpg extension
+  - the --text option for commit, rawcommit, and tag has been removed
+  - the copy/rename --parents option has been removed
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Mon, 30 Jan 2006 16:11:19 +0100
+
+mercurial (0.6c-1) unstable; urgency=low
+
+  Previous versions of mercurial can lead to conflicts for internal filenames
+  if the repo has both a file 'foo' and a directory 'foo.d'.
+  This version of mercurial solves this, however this means that some internal
+  files have been renamed.
+
+  If you want to use (commit, clone on same filesystem, ...) a repo created
+  with an old version with the new version AND this repo contains directory
+  nammed 'foo.d', then you need to deal with it. According to the upstream
+  author, something like this should do the trick:
+
+   find .hg -type d -name "*.[di]" -exec echo mv {} {}.hg ";"
+
+  Run this at the top of your working dir. Take out the 'echo' once
+  you've confirmed it's finding the right files.
+
+  Also note that 0.6c and older clients should be perfectly compatible
+  over the wire, so long as each side has the appropriate directory
+  naming.
+
+  But if you use 0.6c to pull into a repo created by 0.6b with changes
+  that touch files in an affected directory, you're likely to have
+  strange behavior.
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Tue, 23 Aug 2005 09:55:35 +0200
diff --git a/README.Debian b/README.Debian
new file mode 100644 (file)
index 0000000..429dc34
--- /dev/null
@@ -0,0 +1,36 @@
+Mercurial for Debian
+--------------------
+
+Table of contents
+* Documentation
+* Extensions
+* Emacs support
+
+
+Documentation
+*************
+
+Mercurial documentation is available on the web at:
+   http://hgbook.red-bean.com/ and
+   https://www.mercurial-scm.org/wiki
+
+Extensions
+**********
+
+Extensions can be enabled system-wide, per-user and/or per repository (see
+hgrc(5) for more information). Previous versions of this Debian package
+enabled some extensions by default; however, this is no longer the case.
+
+To enable extensions system-wide, you may edit the
+/etc/mercurial/hgrc.d/hgext.rc configuration file. This file also contains
+information on the dependencies of each extension.
+
+
+Emacs support
+*************
+This package installs a mercurial.el file in the example directory
+(/usr/share/doc/mercurial/examples/). However, with emacs22 or better,
+vc-hg.el provided directly by emacs is better. This is why mercurial.el
+is not installed by default anymore.
+
+ -- Javi Merino <merino.jav@gmail.com>, Sun, 17 Jul 2016 13:35:02 +0100
diff --git a/README.source b/README.source
new file mode 100644 (file)
index 0000000..cf42723
--- /dev/null
@@ -0,0 +1 @@
+See /usr/share/doc/quilt/README.source
diff --git a/cacerts.rc b/cacerts.rc
new file mode 100644 (file)
index 0000000..35faed2
--- /dev/null
@@ -0,0 +1,5 @@
+[web]
+# user can disable this Debian default by overriding this option in ~/.hgrc
+# and/or using the --insecure command line switch
+cacerts = /etc/ssl/certs/ca-certificates.crt
+
diff --git a/changelog b/changelog
new file mode 100644 (file)
index 0000000..1cf6590
--- /dev/null
+++ b/changelog
@@ -0,0 +1,2949 @@
+mercurial (6.3.2-1+deb12u1) bookworm-security; urgency=high
+
+  * CVE-2025-2361: reflected XSS in hgweb (closes: #1100899)
+  * patchbomb: don't test ambiguous address (fixes FTBFS after python's
+    fix for CVE-2023-27043).
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 20 Mar 2025 13:56:44 +0100
+
+mercurial (6.3.2-1) sid; urgency=medium
+
+  * New upstream bugfix release.
+  * from_upstream_stable.patch: pull in upstream changes up to changeset 812a9fbf4380
+  * cgitb.patch: stop importing cgitb to avoid deprecation warnings
+  * Skip test-remotefilelog-gc.t.
+  * This fixes compatibility with python 3.11 (closes: #1028815)
+  * Bump test timeout to 1800 because riscv64 is apparently even slower than
+    mips (closes: #1024867).
+
+ -- Julien Cristau <jcristau@debian.org>  Mon, 20 Feb 2023 18:44:46 +0100
+
+mercurial (6.3.1-2) sid; urgency=medium
+
+  * Fix FTBFS on 32-bit (closes: #1025621)
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 07 Dec 2022 13:59:55 +0100
+
+mercurial (6.3.1-1) sid; urgency=medium
+
+  * New upstream release
+    - add python3-packaging to build-deps and autopkgtest dependencies for
+      run-tests, replacing
+      py310/2_run_tests__silence_distutils_deprecation_warning.patch
+  * test-hghave-testrepo.patch: new patch, to make test-hghave.t pass outside a
+    hg repo.
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 06 Dec 2022 11:57:31 +0100
+
+mercurial (6.2.3-1) sid; urgency=medium
+
+  * New upstream bugfix release.
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 07 Oct 2022 14:26:54 +0200
+
+mercurial (6.2.2-1) sid; urgency=medium
+
+  * New upstream bugfix release
+    - fixed fsmonitor extension (closes: #1014817)
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 02 Sep 2022 14:08:12 +0200
+
+mercurial (6.2-1) sid; urgency=medium
+
+  * New upstream release
+    - Update patch stack
+
+ -- Julien Cristau <jcristau@debian.org>  Mon, 11 Jul 2022 15:19:13 +0200
+
+mercurial (6.1.3-1) sid; urgency=medium
+
+  * Blocklist test-convert-cvs-synthetic.t.
+  * New upstream bugfix release.
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 07 Jun 2022 20:53:46 +0200
+
+mercurial (6.1.2-1) sid; urgency=medium
+
+  * Add zsh_completion to debian/copyright (closes: #1004341)
+  * New upstream bugfix release
+  * Fix test failures with openssl 3 (closes: #1011076)
+
+ -- Julien Cristau <jcristau@debian.org>  Mon, 23 May 2022 12:21:07 +0200
+
+mercurial (6.1.1-1) sid; urgency=medium
+
+  * New upstream bugfix release.
+  * Fix test failures with python 3.10 (closes: #1008747).
+
+ -- Julien Cristau <jcristau@debian.org>  Mon, 11 Apr 2022 14:08:09 +0200
+
+mercurial (6.1-4) sid; urgency=medium
+
+  * Upload to unstable.
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 24 Mar 2022 20:39:34 +0100
+
+mercurial (6.1-3) experimental; urgency=medium
+
+  * Fix test-clone-stream_bigendian.patch.
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 15 Mar 2022 17:18:53 +0100
+
+mercurial (6.1-2) experimental; urgency=medium
+
+  * revlog_unsigned_char_fix.patch: fix FTBFS on architectures with
+    unsigned char
+  * Update test blacklist:
+    - re-enable test-nointerrupt.t, test-https.t and
+      test-narrow-shallow.t, fixed upstream
+    - disable test-http-bad-server.t for intermittent failures
+  * test-clone-stream_bigendian.patch: fix test-clone-stream.t failure
+    on bigendian archs.
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 15 Mar 2022 15:10:53 +0100
+
+mercurial (6.1-1) experimental; urgency=medium
+
+  * New upstream release.
+  * deb_specific__which_silence_warning.patch: delete, no longer needed.
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 02 Mar 2022 17:18:42 +0100
+
+mercurial (6.0.2-1) unstable; urgency=medium
+
+  * Blocklist test-git-interop.t since we don't ship the corresponding
+    extension.
+  * New upstream bugfix release.
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 03 Feb 2022 11:01:46 +0100
+
+mercurial (6.0.1-3) unstable; urgency=medium
+
+  * Use upstream's Makefile to build/install chg and man pages.
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 13 Jan 2022 16:23:32 +0100
+
+mercurial (6.0.1-2) unstable; urgency=medium
+
+  * Stop installing debian-specific hg-ssh manpage, upstream has
+    supplied one since 2016.
+  * Replace pylint3 with pylint in autopkgtest dependencies.
+  * Add python3-subversion and python3-pygit2 autopkgtest dependencies
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 13 Jan 2022 11:35:12 +0100
+
+mercurial (6.0.1-1) unstable; urgency=medium
+
+  * Add Raphaël Gomès' key to the known set.
+  * New upstream release.
+    + deb_specific__test_zstd_s390x.patch: dropped, merged upstream
+  * Upload to unstable.
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 06 Jan 2022 10:16:00 +0100
+
+mercurial (6.0-1) experimental; urgency=medium
+
+  * New upstream release
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 23 Nov 2021 20:37:36 +0100
+
+mercurial (6.0~rc0-1) experimental; urgency=medium
+
+  * New upstream release candidate.
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 10 Nov 2021 13:12:13 +0100
+
+mercurial (5.9.3-1) unstable; urgency=medium
+
+  * New upstream release.
+    + proposed_upstream__revlog_s390x_part[12].patch: dropped, merged upstream
+    + deb_specific__test_zstd_s390x.patch: updated
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 28 Oct 2021 22:22:46 +0200
+
+mercurial (5.9-3) unstable; urgency=medium
+
+  * Further adjust tests for endianness-related variations.
+  * Silence yet another test warning about `which`.
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 25 Aug 2021 19:54:04 +0200
+
+mercurial (5.9-2) unstable; urgency=medium
+
+  * Fix bugs in revlog parsing causing issues on s390x, and adjust some
+    tests to accept variations in zstd output.  Closes: #992844.
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 25 Aug 2021 17:22:58 +0200
+
+mercurial (5.9-1) unstable; urgency=medium
+
+  [ Nicolas Dandrimont ]
+  * New upstream release.
+    - Add OpenPGP key for Pulkit Goyal <7895pulkit@gmail.com>.
+    - Refresh patches.
+
+  [ Julien Cristau ]
+  * Silence warnings from `which` in tests.
+
+ -- Julien Cristau <jcristau@debian.org>  Mon, 23 Aug 2021 17:04:40 +0200
+
+mercurial (5.6.1-4) unstable; urgency=medium
+
+  * Revert -mno-lra workaround on mips64el, #871514 was fixed. Fixes
+    occasional FTBFS on mips64el.
+
+ -- Stefano Rivera <stefanor@debian.org>  Sun, 23 May 2021 08:37:06 -0400
+
+mercurial (5.6.1-3) unstable; urgency=medium
+
+  * Team upload.
+
+  [ Helmut Grohne ]
+  * Annotate test dependencies <!nocheck> (closes: #980337).
+
+  [ Stefano Rivera ]
+  * python-3.9.2.patch: Use "&" instead of ";" as query string separator
+    in test-archive.t to fix FTBFS with Python 3.9.2, which changed its
+    urllib.parse.parse_qsl() behavior to only accept "&" as a separator by
+    default. (closes: #986514)
+
+ -- Stefano Rivera <stefanor@debian.org>  Fri, 21 May 2021 12:06:47 -0400
+
+mercurial (5.6.1-2) unstable; urgency=medium
+
+  * tests: make test-subrepo-git.t compatible with git's master->main
+    rename (closes: #980576).
+
+ -- Julien Cristau <jcristau@debian.org>  Mon, 01 Feb 2021 17:47:09 +0100
+
+mercurial (5.6.1-1) unstable; urgency=medium
+
+  * New upstream release.
+  * Update Uploaders: remove vicho and vdanjean, add jcristau.  With
+    thanks for their past contributions!
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 08 Jan 2021 17:16:53 +0100
+
+mercurial (5.5.2-1) unstable; urgency=medium
+
+  [ Ondřej Nový ]
+  * d/control: Update Maintainer field with new Debian Python Team
+    contact address.
+  * d/control: Update Vcs-* fields with new Debian Python Team Salsa
+    layout.
+
+  [ Julien Cristau ]
+  * New upstream bugfix release
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 14 Oct 2020 14:45:55 +0200
+
+mercurial (5.5.1-1) unstable; urgency=medium
+
+  * Team upload.
+  * New upstream bugfix release.
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 02 Sep 2020 10:26:16 +0200
+
+mercurial (5.5-2) unstable; urgency=medium
+
+  * (Hopefully) fix flakiness in test-stdio.py.
+
+ -- Tristan Seligmann <mithrandi@debian.org>  Mon, 17 Aug 2020 10:33:16 +0200
+
+mercurial (5.5-1) unstable; urgency=medium
+
+  * New upstream release.
+    - Fix Python 3 issues with hgext.convert.subversion (closes: #968466).
+  * Install zsh completion to vendor-completions (closes: #963253).
+  * Install run-tests.py for downstream packages to use (closes: #930488).
+
+ -- Tristan Seligmann <mithrandi@debian.org>  Sun, 16 Aug 2020 17:00:20 +0200
+
+mercurial (5.4.1-3) unstable; urgency=medium
+
+  * Trim trailing whitespace.
+  * Bump debhelper from deprecated 9 to 13.
+  * Rely on pre-initialized dpkg-architecture variables.
+  * Set Rules-Requires-Root: no.
+  * Adjust Breaks: mercurial-crecord (closes: #968035).
+  * Remove unused debian/source/include-binaries.
+  * Bump Standards-Version to 4.5.0.
+  * Blacklist test-check-format.t.
+  * Blacklist test-wireproto-exchangev2-shallow.t.
+
+ -- Tristan Seligmann <mithrandi@debian.org>  Mon, 10 Aug 2020 23:06:15 -0000
+
+mercurial (5.4.1-2) unstable; urgency=medium
+
+  * Upload to unstable, switch to python3; Closes: #937009, #948610
+
+ -- Sandro Tosi <morph@debian.org>  Thu, 16 Jul 2020 15:05:37 -0400
+
+mercurial (5.4.1-1+exp1) experimental; urgency=medium
+
+  * Upload to experimental a python3 version of mercurial
+
+ -- Sandro Tosi <morph@debian.org>  Sat, 04 Jul 2020 21:12:04 -0400
+
+mercurial (5.4.1-1) unstable; urgency=medium
+
+  * Team upload.
+  * Remove python-subversion from autopkgtest dependencies
+    (closes: #956007)
+  * New upstream bugfix release.
+  * Fix test-clone-uncompressed.t failure on slow/loaded hosts.
+  * Blacklist test-narrow-shallow.t for occasional failures.
+  * Blacklist test-debugcommands.t for occasional failures.
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 25 Jun 2020 12:18:13 +0200
+
+mercurial (5.4-2) unstable; urgency=medium
+
+  * Team upload.
+  * Blacklist test-nointerrupt.t for being racy.
+  * Don't install the hgext.git extension as that namespace is used by
+    the mercurial-git package, and ours is still very experimental.
+    Closes: #961245
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 18 Jun 2020 15:38:51 +0200
+
+mercurial (5.4-1+exp1) experimental; urgency=medium
+
+  * Team upload.
+  * Use python3 (closes: #937009).
+  * mercurial Provides python3-mercurial so extensions can depend on
+    that instead of a hazardous versioned dependency.
+  * Add Breaks on all extensions.  To be updated as we don't know what
+    version will use python3.
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 21 May 2020 12:44:39 +0200
+
+mercurial (5.4-1) unstable; urgency=medium
+
+  * Team upload.
+
+  [ Philippe Pepiot ]
+  * Ship the chg binary (closes: #926384).  chg can be used as an
+    alternative "hg" command, it spawns a mercurial server and uses a
+    lightweight client written in C.
+
+  [ Julien Cristau ]
+  * Add Pulkit Goyal's key (EB851395B4223EE2F7BA0B28DA54740BF08732BA) to
+    the keyring for upstream tarball signatures.
+  * New upstream release.
+  * Fix test-doctest.py now assuming it's being run from a hg repo.
+  * autopkgtests: explicitly run the testsuite with python2.
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 21 May 2020 12:35:06 +0200
+
+mercurial (5.3.2-1) unstable; urgency=medium
+
+  * New upstream release
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 16 Apr 2020 10:35:09 +0200
+
+mercurial (5.3.1-1) unstable; urgency=medium
+
+  * Team upload.
+  * New upstream release
+    - drop proposed_upstream__correct-zeroconf-doc, included upstream.
+  * Stop moving the help text and templates to /usr/share/mercurial, doesn't
+    work right with the changes in 5.3 and isn't worth the effort.
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 06 Mar 2020 10:38:36 +0100
+
+mercurial (5.2.2-1) unstable; urgency=medium
+
+  * Team upload.
+  * New upstream release
+  * Remove test-remotefilelog-bgprefetch.t from the blacklist, it's
+    hopefully more reliable now.
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 09 Jan 2020 16:06:17 +0100
+
+mercurial (5.2.1-1) unstable; urgency=medium
+
+  * New upstream bugfix release.
+  * for_upstream__dont_rm_usr_bin_python_when_running_testsuite.patch: drop,
+    obsolete since 2014.
+  * autopkgtest: add clang-format dependency, list other optional dependencies
+    that are currently disabled.
+  * Replace deb_specific__use_sensible-editor.patch with a config snippet that
+    sets default values for ui.editor and pager.pager.
+  * Bump hgsubversion Breaks.
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 06 Dec 2019 15:47:38 +0100
+
+mercurial (5.2-1) unstable; urgency=medium
+
+  * Team upload.
+  * New upstream release.
+  * Re-enable test-repo-compengines.t, fixed upstream.
+  * Disable test-remotefilelog-bgprefetch.t for being flaky.
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 06 Nov 2019 15:19:30 +0100
+
+mercurial (5.2~rc0-1) experimental; urgency=medium
+
+  * New upstream release candidate.
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 24 Oct 2019 14:32:33 +0200
+
+mercurial (5.1.1-1) unstable; urgency=medium
+
+  * New upstream bugfix release.
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 06 Sep 2019 14:08:37 +0200
+
+mercurial (5.1-4) unstable; urgency=medium
+
+  * Remove python-vcr and python-fuzzywuzzy autopkgtest dependencies,
+    looks like they got removed :(
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 05 Sep 2019 15:11:05 +0200
+
+mercurial (5.1-3) unstable; urgency=medium
+
+  * Actually only run the blacklisted tests in the ignored run.
+  * Upload to unstable.
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 03 Sep 2019 11:19:00 +0200
+
+mercurial (5.1-2) experimental; urgency=medium
+
+  * Add patch from https://github.com/indygreg/python-zstandard/pull/91
+    to fix test failure on s390x.
+  * Skip test-repo-compengines.t due to differences on big-endian.
+  * This should fix FTBFS and closes: #935150.
+  * Run blacklisted tests but ignore their results, so we can figure out
+    if they still fail and how often.
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 22 Aug 2019 18:36:05 +0200
+
+mercurial (5.1-1) experimental; urgency=medium
+
+  [ Julien Cristau ]
+  * Drop autopkgtests dependency on monotone.  It's RC buggy, not in buster,
+    and uninstallable in sid (closes: #919924).  Thanks, Graham Inggs!
+  * Add autopkgtests dependencies:
+    - subversion (for test-subrepo-svn.t, test-convert-svn-*.t)
+    - gettext (for test-gendoc-*.t)
+    - pylint (for test-check-pylint.t)
+    - python-pygments (for test-highlight.t)
+    - git (for test-convert-git.t, test-subrepo-git.t)
+    - python-docutils (for test-gendoc.t)
+    - sqlite3 (for test-wireproto-exchangev2-shallow.t, test-sqlitestore.t)
+    - python-fuzzywuzzy (for test-releasenotes-*.t)
+    - python-vcr (for test-phabricator.t)
+    - darcs (for test-convert-darcs.t)
+  * New upstream release.
+
+  [ Ondřej Nový ]
+  * Use debhelper-compat instead of debian/compat.
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 14 Aug 2019 15:47:28 +0200
+
+mercurial (4.9-2) unstable; urgency=medium
+
+  * Bump Breaks on mercurial-git (closes: #921572)
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 08 Feb 2019 15:59:25 +0100
+
+mercurial (4.9-1) unstable; urgency=medium
+
+  * New upstream release.
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 05 Feb 2019 18:15:17 +0100
+
+mercurial (4.9~rc0-1) experimental; urgency=medium
+
+  * New upstream release candidate.
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 25 Jan 2019 17:47:04 +0100
+
+mercurial (4.8.2-1) unstable; urgency=medium
+
+  * Team upload.
+  * New upstream bugfix release.
+  * Drop proposed_upstream__test-http-bad-server.patch, merged upstream.
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 08 Jan 2019 12:28:46 +0100
+
+mercurial (4.8.1-3) unstable; urgency=medium
+
+  * Add less to debian/test/control as well to fix test-logtoprocess.t
+    (closes: #918558).  Thanks, Graham Inggs!
+
+ -- Julien Cristau <jcristau@debian.org>  Mon, 07 Jan 2019 13:51:50 +0100
+
+mercurial (4.8.1-2) unstable; urgency=medium
+
+  * test: fix test-http-bad-server with current python 2.7 (fixes FTBFS)
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 12 Dec 2018 06:58:28 +0100
+
+mercurial (4.8.1-1) unstable; urgency=medium
+
+  * Team upload.
+  * New upstream bugfix release.
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 11 Dec 2018 18:14:10 +0100
+
+mercurial (4.8-2) unstable; urgency=medium
+
+  * Team upload.
+  * Fix FTBFS due to test_profile.t failure.
+  * Refresh patches.
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 20 Nov 2018 18:55:40 +0100
+
+mercurial (4.8-1) unstable; urgency=medium
+
+  * Team upload.
+  * New upstream release.
+  * Add build-dep on "less" for tests.
+  * Add test-wireproto-exchangev2.t to blacklist, it seems to be racy.
+
+ -- Julien Cristau <jcristau@debian.org>  Tue, 20 Nov 2018 15:47:36 +0100
+
+mercurial (4.7.2-1) unstable; urgency=medium
+
+  * Team upload.
+  * New upstream release.
+  * Stop installing mergetools.rc in /etc/mercurial/hgrc.d (closes: #909224).
+
+ -- Julien Cristau <jcristau@mozilla.com>  Thu, 04 Oct 2018 15:10:15 +0200
+
+mercurial (4.7.1-1) unstable; urgency=medium
+
+  * New upstream release
+
+ -- Julien Cristau <jcristau@mozilla.com>  Tue, 04 Sep 2018 18:45:34 +0200
+
+mercurial (4.7-1) unstable; urgency=medium
+
+  * Team upload.
+  * New upstream release
+  * Add Recommends on sensible-utils (thanks, lintian).
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 08 Aug 2018 14:34:59 +0200
+
+mercurial (4.6.1-1) unstable; urgency=medium
+
+  * New upstream bugfix release
+    + fix security issues in mpatch (closes: #901050)
+    + proposed_upstream__fix_xdiff_32bit.patch: drop, applied upstream
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 08 Jun 2018 13:56:22 +0200
+
+mercurial (4.6-2) unstable; urgency=medium
+
+  * Fix xdiff on 32bit (closes: #898491)
+
+ -- Julien Cristau <jcristau@debian.org>  Sat, 12 May 2018 23:51:44 +0200
+
+mercurial (4.6-1) unstable; urgency=medium
+
+  * Team upload
+
+  [ Julien Cristau ]
+  * Make uscan recognize "4.6rc1" as a release candidate
+  * New upstream release.
+  * Document embedded third party code licenses in debian/copyright.
+  * Drop obsolete X-Python-Versions control field.
+  * Fix typo in deb_specific__disable_libdir_replacement.patch description
+    (thanks, lintian!)
+  * Install translations where hg will look for them (closes: #886797)
+
+  [ Matthias Klose ]
+  * Pass the same TESTFLAGS to the autopkg tests, as done for the test
+    during package build, and make the blacklist work correctly
+    (closes: #895200, #893012)
+  * Disable hgsubversion and mercurial-git autopkgtests (closes: #890191)
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 11 May 2018 18:19:39 +0200
+
+mercurial (4.5.3-1) unstable; urgency=medium
+
+  * Team upload.
+  * New upstream bugfix release
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 05 Apr 2018 14:25:18 +0200
+
+mercurial (4.5.2-1) unstable; urgency=medium
+
+  * Team upload.
+
+  [ Ondřej Nový ]
+  * d/copyright: Use https protocol in Format field
+  * d/changelog: Remove trailing whitespaces
+
+  [ Julien Cristau ]
+  * Add Kevin Bullock's key to debian/upstream/signing-key.asc
+  * New upstream release
+
+ -- Julien Cristau <jcristau@debian.org>  Wed, 21 Mar 2018 13:32:27 +0100
+
+mercurial (4.5-1) unstable; urgency=medium
+
+  * New upstream release.
+    - Drop libjs-excanvas as no longer used by upstream.
+
+ -- Tristan Seligmann <mithrandi@debian.org>  Sun, 11 Feb 2018 08:51:26 +0200
+
+mercurial (4.4.1-1) unstable; urgency=medium
+
+  * New upstream release.
+    - Refresh patches, remove patches applied upstream.
+  * Replace rename with file-rename as this is gone from perl.
+
+ -- Tristan Seligmann <mithrandi@debian.org>  Mon, 13 Nov 2017 06:19:31 +0200
+
+mercurial (4.3.1-3) unstable; urgency=high
+
+  * Build with -mno-lra on mips64el to work around #871514.
+
+ -- Tristan Seligmann <mithrandi@debian.org>  Sat, 26 Aug 2017 01:38:11 +0200
+
+mercurial (4.3.1-2) unstable; urgency=high
+
+  * Fix or disable some failing tests (closes: #823056, #850234).
+
+ -- Tristan Seligmann <mithrandi@debian.org>  Sat, 12 Aug 2017 14:34:47 +0200
+
+mercurial (4.3.1-1) unstable; urgency=high
+
+  * Urgency high because of important security fixes.
+  * New upstream release (closes: #868014).
+    - CVE-2017-1000115: Mercurial's symlink auditing was incomplete prior
+      to 4.3, and could be abused to write to files outside the
+      repository (closes: #871709).
+    - CVE-2017-1000116: Mercurial was not sanitizing hostnames passed to
+      ssh, allowing shell injection attacks by specifying a hostname
+      starting with -oProxyCommand (closes: #871710).
+    - CVE-2017-9462: previously fixed in 4.1.3 upstream (closes: #861243).
+  * Blacklist test-https.t due to TLS 1.0/1.1 being disabled in OpenSSL in
+    unstable.
+  * Fix license definitions in debian/copyright.
+  * Bump Standards-Version to 4.0.0 (no changes).
+  * Run wrap-and-sort -t -s.
+
+ -- Tristan Seligmann <mithrandi@debian.org>  Fri, 11 Aug 2017 05:00:16 +0200
+
+mercurial (4.0-1) unstable; urgency=medium
+
+  * New upstream release
+
+ -- Javi Merino <vicho@debian.org>  Wed, 02 Nov 2016 05:50:33 -0600
+
+mercurial (4.0~rc1-1) experimental; urgency=medium
+
+  * First release candidate for mercurial 4.0
+  * Remove deb_specific__use_gpg_21_keys_for_test.patch as test-gpg now
+    migrates the secret keys at the beginning of the test
+
+ -- Javi Merino <vicho@debian.org>  Sun, 23 Oct 2016 18:15:45 +0100
+
+mercurial (3.9.2-1) unstable; urgency=medium
+
+  * New upstream release
+
+ -- Javi Merino <vicho@debian.org>  Sat, 22 Oct 2016 19:40:13 +0100
+
+mercurial (3.9.1-1) unstable; urgency=medium
+
+  * New upstream release signed with a new gpg key
+  * Fix "FTBFS: Tests failures" by fixing test-gpg.t's output to take into
+    account gpg 2.1's messages when importing classic gpg keyring files.
+    (Closes: #835730)
+
+ -- Javi Merino <vicho@debian.org>  Sat, 03 Sep 2016 09:04:00 +0300
+
+mercurial (3.9-1) unstable; urgency=medium
+
+  * New upstream release
+  * Fix release URL in debian/watch
+
+ -- Javi Merino <vicho@debian.org>  Sun, 07 Aug 2016 11:54:04 +0100
+
+mercurial (3.8.4-1) unstable; urgency=medium
+
+  * New upstream release
+
+ -- Javi Merino <vicho@debian.org>  Sun, 10 Jul 2016 12:38:01 +0100
+
+mercurial (3.8.3-1) unstable; urgency=medium
+
+  * New upstream release
+  * Delete
+    from_upstream__strip_invalidate_phase_cache_after_stripping_changese
+    t_issue5235.patch as it's now included upstream
+
+ -- Javi Merino <vicho@debian.org>  Fri, 03 Jun 2016 08:26:16 +0100
+
+mercurial (3.8.2-2) unstable; urgency=medium
+
+  * Update hgsubversion breaks to 1.8.6-1
+  * Add
+    from_upstream__strip_invalidate_phase_cache_after_stripping_changese
+    t_issue5235.patch to fix test-obsolete.t on powerpc and i386
+
+ -- Javi Merino <vicho@debian.org>  Sat, 28 May 2016 22:45:03 +0200
+
+mercurial (3.8.2-1) unstable; urgency=medium
+
+  * New upstream release
+  * revert mercurial-git breaks to 0.8.3-1
+  * update debian/watch URL
+
+ -- Javi Merino <vicho@debian.org>  Fri, 27 May 2016 22:01:25 +0200
+
+mercurial (3.8.1-1) unstable; urgency=medium
+
+  * New upstream release (Closes: #737498)
+  * Fixes CVE-2016-3105
+  * Bump standards-version to 3.9.8 (no change needed)
+  * Re-enable test-parse-date.t in the test-suite
+  * mercurial 3.8.1 breaks current hgsubversion and mercurial-git
+
+ -- Javi Merino <vicho@debian.org>  Tue, 03 May 2016 07:45:02 +0100
+
+mercurial (3.7.3-1) unstable; urgency=medium
+
+  * New security upstream release fixes CVE-2016-3068, CVE-2016-3069
+    and CVE-2016-3630.
+  * Fix "FTBFS when built with dpkg-buildpackage -A".  Thanks Julien
+    Cristau for the patch (Closes: #807021)
+  * Avoid allow-stderr in mercurial-git autopkgtest
+
+ -- Javi Merino <vicho@debian.org>  Wed, 30 Mar 2016 08:20:07 +0100
+
+mercurial (3.7.2-2) unstable; urgency=medium
+
+  * Don't run test-clonebundle.t when building.  Reproducible builds don't
+    setup name resolution (Closes: #809770)
+
+ -- Javi Merino <vicho@debian.org>  Sat, 05 Mar 2016 12:08:37 +0000
+
+mercurial (3.7.2-1) unstable; urgency=medium
+
+  * New upstream release
+  * Blacklist test-parse-date.t .  It fails on some of the chroots of
+    some architectures
+  * Bump standards-version to 3.9.6 (no change needed)
+  * Use https for vcs-browser.  Thanks lintian
+  * Update homepage
+
+ -- Javi Merino <vicho@debian.org>  Wed, 02 Mar 2016 22:28:36 +0000
+
+mercurial (3.7.1-1) unstable; urgency=medium
+
+  * New upstream release
+  * Fix "mercurial-git autopkgtest fails because of stderr" by allowing
+    the test to output to stderr (Closes: #808376)
+  * Allow the hgsubversion test to output to stderr
+
+ -- Javi Merino <vicho@debian.org>  Thu, 11 Feb 2016 22:43:27 +0000
+
+mercurial (3.6.2-1) unstable; urgency=medium
+
+  * New upstream release
+  * Improve autopkgtest for mercurial-git to test pushing commits from the
+    mercurial clone to git
+  * Update breaks of hgsubversion.  hgsubversion 1.8.3-2 works with
+    mercurial 3.6
+
+ -- Javi Merino <vicho@debian.org>  Fri, 04 Dec 2015 07:37:49 +0000
+
+mercurial (3.6.1-1) unstable; urgency=medium
+
+  * New upstream release
+  * mercurial 3.6 breaks mercurial-crecord 0.20150626-1
+  * mercurial 3.6 breaks mercurial-git prior to 0.8.3-1
+
+ -- Javi Merino <vicho@debian.org>  Thu, 26 Nov 2015 08:30:18 +0000
+
+mercurial (3.6-1) unstable; urgency=medium
+
+  * New upstream release
+  * Update hgsubversion breaks. 1.8.3-1 is not compatible with mercurial
+    3.6-1
+
+ -- Javi Merino <vicho@debian.org>  Thu, 05 Nov 2015 10:43:33 +0000
+
+mercurial (3.6~rc1-1) experimental; urgency=medium
+
+  * First release candidate for mercurial 3.6
+
+ -- Javi Merino <vicho@debian.org>  Sun, 25 Oct 2015 17:31:59 +0000
+
+mercurial (3.5.2-2) unstable; urgency=medium
+
+  * Fix "bash completion broken" by installing at as "hg" instead of
+    "mercurial".  Thanks Matthew Gabeler-Lee <cheetah@fastcat.org> for the
+    fix (Closes: #801079)
+
+ -- Javi Merino <vicho@debian.org>  Sun, 18 Oct 2015 14:14:20 +0100
+
+mercurial (3.5.2-1) unstable; urgency=medium
+
+  * New upstream release
+
+ -- Javi Merino <vicho@debian.org>  Fri, 02 Oct 2015 08:14:57 +0100
+
+mercurial (3.5.1-2) unstable; urgency=medium
+
+  * Fix "obsolete conffile /etc/bash_completion.d/mercurial" by removing
+    it.  Bash completion is now installed in
+    /usr/share/bash_completion/completions (Closes: #799052)
+
+ -- Javi Merino <vicho@debian.org>  Sun, 20 Sep 2015 13:23:46 +0100
+
+mercurial (3.5.1-1) unstable; urgency=medium
+
+  * Update hgsubversion breaks. 1.8.2-1 is compatible with mercurial 3.5-1
+  * Update breaks of mercurial-git.  0.8.1-3 works with mercurial 3.5-1
+  * New upstream release
+
+ -- Javi Merino <vicho@debian.org>  Mon, 14 Sep 2015 22:05:21 +0100
+
+mercurial (3.5-1) unstable; urgency=medium
+
+  * New upstream release
+  * Update hgsubversion breaks to 1.8.1-1
+  * Upload to unstable
+
+ -- Javi Merino <vicho@debian.org>  Mon, 03 Aug 2015 20:18:33 +0100
+
+mercurial (3.5~rc1-1) experimental; urgency=medium
+
+  * New upstream release
+  * Update debian/copyright to match copyright-format 1.0
+  * New version breaks the current versions of mercurial-git and
+    hgsubversion in sid
+
+ -- Javi Merino <vicho@debian.org>  Wed, 22 Jul 2015 10:30:00 +0200
+
+mercurial (3.4.2-1) unstable; urgency=medium
+
+  * New upstream release
+  * Drop "XS-Testsuite" as it's no longer needed
+  * Fix "FTBFS: recipe for target 'override_dh_auto_test' failed"
+    by using rename.  util-linux no longer provides rename.ul (Closes: #790266)
+
+ -- Javi Merino <vicho@debian.org>  Wed, 08 Jul 2015 22:31:18 +0100
+
+mercurial (3.4-1) unstable; urgency=medium
+
+  * New upstream release
+  * Delete patch for_upstream__fix_typo_in_man_page.patch as it is applied
+    upstream
+  * Update breaks of hgsubversion to versions prior to 1.8-1
+  * Upload to unstable
+
+ -- Javi Merino <vicho@debian.org>  Sat, 02 May 2015 10:01:10 +0100
+
+mercurial (3.4~rc1-1) experimental; urgency=medium
+
+  * New upstream release
+  * Delete patch for_upstream__lenient_test-shelve.patch which is
+    applied upstream
+  * Remove trailing spaces from empty lines in the descriptions.  It
+    upsets lintian
+  * Add patch for_upstream__fix_typo_in_man_page.patch to fix a typo
+    spotted by lintian
+
+ -- Javi Merino <vicho@debian.org>  Sun, 19 Apr 2015 15:41:25 +0100
+
+mercurial (3.3.2-1) experimental; urgency=medium
+
+  * New upstream release
+
+ -- Javi Merino <vicho@debian.org>  Fri, 13 Mar 2015 13:38:04 +0000
+
+mercurial (3.3-1) experimental; urgency=medium
+
+  * New upstream release
+
+ -- Javi Merino <vicho@debian.org>  Mon, 09 Feb 2015 05:48:23 +0800
+
+mercurial (3.3~rc1-1) experimental; urgency=medium
+
+  * New upstream release
+  * move the installation of mergetools.rc to mercurial-common.install
+
+ -- Javi Merino <vicho@debian.org>  Sat, 31 Jan 2015 17:48:59 +0100
+
+mercurial (3.2.3-1) experimental; urgency=medium
+
+  * New upstream release
+
+ -- Javi Merino <vicho@debian.org>  Fri, 19 Dec 2014 22:29:28 +0000
+
+mercurial (3.2.1-1) experimental; urgency=medium
+
+  * New upstream release
+
+ -- Javi Merino <vicho@debian.org>  Fri, 14 Nov 2014 08:35:25 +0000
+
+mercurial (3.2-1) experimental; urgency=medium
+
+  * New upstream release (Closes: #768022)
+  * Replace deb_specific__support_templates_in_fsh.patch,
+    deb_specific__support_help_in_fhs.patch and
+    deb_specific__support_mo_in_fhs.patch with
+    deb_specific__fix_fhs_paths.py as the mechanism to specify the path to
+    datafiles has been unified.
+  * Remove from_upstream__test-
+    patchbomb_t_work_around_Python_change_d579866d6419_issue4188.patch
+    as it is now included upstream
+  * Bump standards-version to 3.9.6 (no change needed)
+  * Build-depend on dh-python
+  * Simplify installation of /etc/mercurial/hgrc.d/cacerts.rc
+  * Remove sample.hgrc from the examples as it's now removed in upstream
+    (full of bad suggestions)
+  * Update breaks for mercurial-git and hgsubversion: current versions
+    don't work
+
+ -- Javi Merino <vicho@debian.org>  Mon, 10 Nov 2014 08:34:13 +0000
+
+mercurial (3.1.2-1) unstable; urgency=medium
+
+  * New upstream version
+  * Use excanvas.js from libjs-excanvas instead of shipping a copy in
+    the package
+
+ -- Javi Merino <vicho@debian.org>  Thu, 02 Oct 2014 23:34:41 +0100
+
+mercurial (3.1.1-1) unstable; urgency=medium
+
+  * New upstream release
+  * Remove test_patchbomb from blacklisted tests (fixed upstream in
+    http://selenic.com/repo/hg/rev/f8fc5df6a8cf)
+  * Add patch from_upstream__test-
+    patchbomb_t_work_around_Python_change_d579866d6419_issue4188.patch
+    which fixes the patchbomb test
+
+ -- Javi Merino <vicho@debian.org>  Thu, 04 Sep 2014 09:04:08 +0200
+
+mercurial (3.1-2) unstable; urgency=medium
+
+  * gcc and python2.7-dev now needed to pass the testsuite in autopkgtest
+  * mercurial-git versions prior to 0.6.1 don't work with mercurial-3.1,
+    update breaks
+  * Fix hgsubversion autopkgtest
+  * Remove darcs from the autopkgtest testsuite as gnutls fails to
+    initialize random number generator in the schroot and is very verbose
+    about it.
+
+ -- Javi Merino <vicho@debian.org>  Mon, 25 Aug 2014 14:54:24 -0700
+
+mercurial (3.1-1) unstable; urgency=medium
+
+  * New upstream release
+
+ -- Javi Merino <vicho@debian.org>  Sat, 02 Aug 2014 11:29:22 +0100
+
+mercurial (3.0.2-1) unstable; urgency=medium
+
+  * New upstream release
+
+ -- Javi Merino <vicho@debian.org>  Sun, 13 Jul 2014 13:12:26 +0200
+
+mercurial (3.0.1-1) unstable; urgency=medium
+
+  * New upstream release (Closes: #750444)
+  * Update breaks of hgview to hgview-common << 1.8.1 (Thanks Julien Cristau)
+
+ -- Javi Merino <vicho@debian.org>  Tue, 17 Jun 2014 22:55:05 +0100
+
+mercurial (3.0-1) unstable; urgency=medium
+
+  * New upstream release
+  * Rever breaks of hgsubversion to versions prior to 1.6
+  * Upload to unstable
+
+ -- Javi Merino <vicho@debian.org>  Fri, 02 May 2014 08:33:00 +0100
+
+mercurial (3.0~rc1-1) experimental; urgency=medium
+
+  * New upstream release
+  * Don't explicitly change the python interpreter in debian/rules, it's
+    already handled by dh_python2
+  * Drop patch deb_specific__fix_hg-ssh_interpreter.patch as dh_python2
+    fixes the interpreter for us
+  * Fix "fatal: empty ident name (for <babar@jungle.org>) not allowed"
+    error in the mercurial-git autopkgtest
+  * Blacklist test-patchbomb from the testsuite autopkgtest as it is
+    known to fail
+  * Don't install tmplrewrite.py in examples any more.  It was useful
+    for the 1.3 transition, but no longer relevant
+  * Mercurial 3.0 breaks current hgsubversion (1.6)
+
+ -- Javi Merino <vicho@debian.org>  Sat, 19 Apr 2014 18:53:34 +0100
+
+mercurial (2.9.2-1) unstable; urgency=low
+
+  [ Javi Merino ]
+  * New upstream release
+  * Fix "please downgrade 'wish' Recommends to Suggests" by removing the
+    Recommends from the mercurial package (but keeping the Suggests in
+    mercurial-common) (Closes: #741514)
+  * Drop Suggests of vim or emacs
+  * Fix "autopkgtest hgsubversion shouldn't need network connectivity"
+    by making the test create a local svn repository (Closes: #735578)
+  * Mercurial 2.9 breaks hgsubversion prior to 1.6
+
+  [ Julien Cristau ]
+  * mercurial-common Replaces mercurial << 2.6.3 (the bash_completion file and
+    /etc/mercurial/hgrc moved) (Closes: #743288)
+
+ -- Javi Merino <vicho@debian.org>  Thu, 03 Apr 2014 08:11:58 +0100
+
+mercurial (2.9.1-1) unstable; urgency=medium
+
+  * New upstream release
+  * mercurial 2.9 breaks current hgsubversion (1.5-1)
+  * Blacklist test-patchbomb.t as it failed sporadically in mips buildd
+    for 2.9-1 and is now failing for me.
+
+ -- Javi Merino <vicho@debian.org>  Mon, 03 Mar 2014 22:52:12 +0000
+
+mercurial (2.9-1) unstable; urgency=medium
+
+  * blacklist check_pyflakes instead of deleting the test
+  * Add "allow-stderr" restriction to "testsuite" as it prints out a
+    "Tested with unexpected mercurial lib:" warning.  Thanks to Martin
+    Pitt <martin.pitt@ubuntu.com>.
+
+ -- Javi Merino <vicho@debian.org>  Mon, 10 Feb 2014 22:37:30 +0000
+
+mercurial (2.8.2-1) unstable; urgency=medium
+
+  * New upstream release
+  * Drop for_upstream__fix_i18n.patch as it's now included upstream
+  * Make uscan verify the signature of downloaded tarballs
+
+ -- Javi Merino <vicho@debian.org>  Thu, 02 Jan 2014 17:31:05 +0100
+
+mercurial (2.8.1-2) unstable; urgency=low
+
+  * Pass -f to rm so that repeated builds succeed (Closes: #731623).
+  * Fix installation in the case where there is more than one supported
+    version of Python (Closes: #729153).
+    - Thanks to Faheem Mitha <faheem@faheem.info> for the patch.
+  * Make test-shelve.t more lenient. This should hopefully fix the
+    semi-intermittent build failures on some architectures with slower
+    buildds.
+
+ -- Tristan Seligmann <mithrandi@debian.org>  Sun, 08 Dec 2013 02:03:54 +0200
+
+mercurial (2.8.1-1) unstable; urgency=low
+
+  * New upstream release (Closes: #731471)
+  * Add myself to Uploaders.
+  * Add patch to fix test-i18n.
+  * Remove pyflakes test to avoid build failures when pyflakes is installed.
+
+ -- Tristan Seligmann <mithrandi@debian.org>  Fri, 06 Dec 2013 01:14:40 +0200
+
+mercurial (2.8-3) unstable; urgency=low
+
+  * Fix mercurial-git autopkg test
+  * Add missing deps to run the testsuite with autopkgtest
+  * Increment testsuite timeout to 1440 to prevent timeouts in mips
+  * Move wish to Recommends as it's needed for hg view
+
+ -- Javi Merino <vicho@debian.org>  Sun, 17 Nov 2013 10:13:23 +0000
+
+mercurial (2.8-2) unstable; urgency=medium
+
+  * Increment testsuite timeout to 720 as test-gendoc.t takes a
+    loooong time on armel
+  * Don't run pyflakes on the autopkgtest for the testsuite, it fails to
+    see the pyflakes error it's expecting (but it's not our job to fix
+    python lint issues)
+
+ -- Javi Merino <vicho@debian.org>  Fri, 15 Nov 2013 14:10:00 +0000
+
+mercurial (2.8-1) unstable; urgency=low
+
+  * New upstream release
+  * Fix mercurial-git and hgsubversion autopkgtest by loading the
+    appropriate extension
+  * Bump standards-version to 3.9.5 (no change needed)
+
+ -- Javi Merino <vicho@debian.org>  Fri, 01 Nov 2013 23:19:57 +0000
+
+mercurial (2.8~rc1-1) experimental; urgency=low
+
+  * New upstream release
+  * Fix patches deb_specific__install-help-separately,
+    deb_specific__install-help-separately and
+    deb_specific__install-mo-fhs.patch so that we can run the full
+    testsuite when building
+  * Build-depend on netbase to make test-serve.t work
+
+ -- Javi Merino <vicho@debian.org>  Mon, 21 Oct 2013 22:35:36 +0100
+
+mercurial (2.7.2-1) unstable; urgency=low
+
+  * New upstream release
+  * Revert breaks of mercurial-git back to << 0.4.0-1 (Closes: #725145)
+  * Re-enable the testsuite as the tests that timeout can be blacklisted
+
+ -- Javi Merino <vicho@debian.org>  Wed, 02 Oct 2013 23:55:58 +0100
+
+mercurial (2.7.1-3) unstable; urgency=low
+
+  * Update breaks of mercurial-git to the current version (0.4.0-1)
+  * Add autopkgtest tests
+
+ -- Javi Merino <vicho@debian.org>  Tue, 01 Oct 2013 08:48:23 +0100
+
+mercurial (2.7.1-2) unstable; urgency=low
+
+  * Temporarily don't run the testsuite when building.  Since 2.7.1 it
+    timeouts in buildd environments (but works ok if run in the command
+    line).
+
+ -- Javi Merino <vicho@debian.org>  Thu, 05 Sep 2013 21:52:14 +0100
+
+mercurial (2.7.1-1) unstable; urgency=low
+
+  * New upstream release
+  * Enable tests that need networking
+
+ -- Javi Merino <vicho@debian.org>  Wed, 04 Sep 2013 23:06:57 +0100
+
+mercurial (2.7-2) unstable; urgency=low
+
+  * Fix "conffiles not removed" by properly moving them to mercurial-common
+    (Closes: #718621)
+
+ -- Javi Merino <vicho@debian.org>  Tue, 13 Aug 2013 23:11:14 +0200
+
+mercurial (2.7-1) unstable; urgency=low
+
+  * New upstream release
+  * Remove shrink-revlog.py from examples as it is no longer shipped in
+    mercurial
+
+ -- Javi Merino <vicho@debian.org>  Sun, 11 Aug 2013 16:09:20 +0200
+
+mercurial (2.6.3-1) unstable; urgency=low
+
+  * New upstream release
+  * Remove preinst script as it's mostly checks for stuff that was fixed
+    long ago
+  * Remove old checks from postinst
+  * Move config files to mercurial-common
+  * Install bash-completion using debhelper's bash-completion sequencer
+  * Compatible with hgsubversion 1.5 or greater, update breaks to
+    reflect that
+
+ -- Javi Merino <vicho@debian.org>  Sun, 21 Jul 2013 23:31:34 +0200
+
+mercurial (2.6.2-1) unstable; urgency=low
+
+  * New upstream release
+  * Delete patch
+    from_upstream__fix_untranslated_prompts_with_translated_responses.patch
+    which is now included upstream
+
+ -- Javi Merino <vicho@debian.org>  Sun, 09 Jun 2013 10:36:59 +0100
+
+mercurial (2.6.1-1) unstable; urgency=low
+
+  [ Jakub Wilk ]
+  * Use canonical URIs for Vcs-* fields.
+
+  [ Javi Merino ]
+  * New upstream release (Closes: #709815)
+  * Blacklist test-histedit-arguments.t and test-websub.t
+  * Fix "Translation missing for yes/no question, but requires translated
+    input from user" by adding patch
+    from_upstream__fix_untranslated_prompts_with_translated_responses.patch
+    (Closes: #707703)
+  * Upload to unstable
+
+ -- Javi Merino <vicho@debian.org>  Wed, 15 May 2013 22:16:29 +0100
+
+mercurial (2.5.2-1) experimental; urgency=low
+
+  * New upstream release
+  * Update hgview breaks.  hgview works with mercurial 2.5 starting from
+    1.7.1-1.
+  * test-convert-git.t works again so add it back to the test-suite we
+    run when building the package
+
+ -- Javi Merino <vicho@debian.org>  Tue, 19 Mar 2013 22:53:20 +0000
+
+mercurial (2.5.1-1) experimental; urgency=low
+
+  * New upstream release
+  * Add test-obsolete.t to the blacklisted tests
+  * hgview 1.5.0-4 doesn't work with mercurial 2.5.1
+
+ -- Javi Merino <vicho@debian.org>  Tue, 12 Feb 2013 21:13:06 +0000
+
+mercurial (2.4.2-1) experimental; urgency=low
+
+  * New upstream release
+
+ -- Javi Merino <vicho@debian.org>  Wed, 02 Jan 2013 13:01:27 +0100
+
+mercurial (2.4.1-1) experimental; urgency=low
+
+  * New upstream release
+
+ -- Javi Merino <vicho@debian.org>  Wed, 19 Dec 2012 21:10:25 +0000
+
+mercurial (2.4-1) experimental; urgency=low
+
+  * New upstream release
+  * mercurial 2.3.1 was not compatible with hgsubversion 1.4 and
+    mercurial-git 0.3.3
+  * Bump standards-version to 3.9.4 (no change needed)
+  * Add test-commit-amend to the blacklisted tests as it needs styles
+    now
+
+ -- Javi Merino <vicho@debian.org>  Tue, 27 Nov 2012 22:35:33 +0000
+
+mercurial (2.3.1-1) experimental; urgency=low
+
+  * New upstream release
+  * Delete patch for_upstream__hgweb_fix_spelling_error.patch which is
+    now included upstream
+
+ -- Javi Merino <vicho@debian.org>  Sun, 16 Sep 2012 16:05:55 +0100
+
+mercurial (2.3-2) experimental; urgency=low
+
+  * Blacklist test-histedit-revspec as it needs styles
+
+ -- Javi Merino <vicho@debian.org>  Sat, 04 Aug 2012 20:56:38 +0200
+
+mercurial (2.3-1) experimental; urgency=low
+
+  * Don't run the testsuite if nocheck is in DEB_BUILD_OPTIONS
+  * Move to dh v9 to automatically get the Hardening buildflags
+  * Don't Suggest xxdiff, as it's been removed from the archive
+  * New upstream release
+  * Add patch for_upstream__hgweb_fix_spelling_error.patch to fix a
+    spelling error in a manpage
+
+ -- Javi Merino <vicho@debian.org>  Fri, 03 Aug 2012 20:53:44 +0200
+
+mercurial (2.2.2-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Javi Merino <vicho@debian.org>  Sun, 03 Jun 2012 09:17:36 +0100
+
+mercurial (2.2.1-2) unstable; urgency=low
+
+  * Blacklist test-convert-git.t as it is known to fail with git 1.7.10
+    and it's making it fail to build in armel.
+  * Build-depend on python-roman (Closes: #671611)
+
+ -- Javi Merino <vicho@debian.org>  Sun, 06 May 2012 17:31:51 +0100
+
+mercurial (2.2.1-1) unstable; urgency=low
+
+  * New upstream release that fixes a memory leak in hgweb
+  * Refresh i18n/{de,da,ja}.po translations in
+    deb_specific__use_sensible-editor.patch
+
+ -- Javi Merino <vicho@debian.org>  Fri, 04 May 2012 21:57:42 +0100
+
+mercurial (2.2-2) unstable; urgency=low
+
+  * Don't patch test-pull-pull-corruption2.t in kfreebsd-i386, armel,
+    sparc or mips, it's now integrated into test-pull-pull-corruption.t
+
+ -- Javi Merino <vicho@debian.org>  Wed, 02 May 2012 19:21:40 +0100
+
+mercurial (2.2-1) unstable; urgency=low
+
+  * New upstream release 2.2
+  * Delete patches for_upstream__skip_test_gpg_if_not_mercurial_wd.patch
+    and from_upstream__tests_re_silence_test_bad_pull_log_messages.patch
+    which are now included upstream
+  * Refresh patches
+
+ -- Javi Merino <vicho@debian.org>  Wed, 02 May 2012 08:08:32 +0100
+
+mercurial (2.1.2-2) unstable; urgency=low
+
+  * Add sparc to the list of architectures with slow buildds
+  * Import 91eec29dd7de from upstream to fix the test-suite failures in
+    mips and sparc
+
+ -- Javi Merino <vicho@debian.org>  Tue, 03 Apr 2012 21:54:05 +0100
+
+mercurial (2.1.2-1) unstable; urgency=low
+
+  * New upstream release 2.1.2
+  * Add armel to the list of architectures with slow buildds
+  * Drop patch "deb_specific__no_optim_bdiff_armel.patch" as gcc no
+    longer miscompiles bdiff in armel
+  * Remove confusing entry in Debian.NEWS (Closes: #666549)
+  * Remove patches for_upstream__fix_kfreebsd_test_inherit.patch,
+    from_upstream__dont_translate_the_abort_message_twice.patch and
+    from_upstream__fix_all_remaining_uses_of_inside.patch which are now
+    included upstream
+  * Add patch for_upstream__skip_test_gpg_if_not_mercurial_wd.patch to
+    skip test-gpg when the testsuite is not run in a hg checkout
+
+ -- Javi Merino <vicho@debian.org>  Mon, 02 Apr 2012 22:50:29 +0100
+
+mercurial (2.1.1-2) unstable; urgency=low
+
+  * Add kfreebsd-i386 to the list of slow architectures for the test suite.
+  * Improve the fix for the test-inherit-mode.t patch based on
+    suggestions from upstream
+  * Fix "UnicodeDecodeError when refusing to update" by adding patches
+    from_upstream__dont_translate_the_abort_message_twice.patch and
+    from_upstream__fix_all_remaining_uses_of_inside.patch  (Closes: #662207)
+
+ -- Javi Merino <vicho@debian.org>  Fri, 09 Mar 2012 00:14:13 +0000
+
+mercurial (2.1.1-1) unstable; urgency=low
+
+  * New upstream version 2.1.1-1
+  * Change the group of the test dir in test-inherit-mode.t so that the
+    testsuite doesn't fail in kfreebsd-*
+  * Drop from_upstream__test_check_code_hg_skip_test_if_not_wd.patch
+    which is now included upstream
+  * Upload to unstable
+
+ -- Javi Merino <vicho@debian.org>  Sat, 03 Mar 2012 08:03:18 +0000
+
+mercurial (2.1-3) experimental; urgency=low
+
+  * Remove unused lintian override binary-without-manpage
+  * Bump standards-version to 3.9.3 (no change needed)
+  * Suggest tkcvs instead of tkdiff.  tkdiff has been removed from
+    wheezy as tkcvs provides tkdiff (see bug #483362).
+  * Suggest more visual diff commands
+  * Increment test timeout.  test-bisect2.t timed out on mips.
+  * Increment the sleeps in the testsuite in mips so that the test
+    produces the same output than in faster architectures
+  * Ignore the output of chmod in a test so that the testsuite doesn't
+    fail in kfreebsd-*
+  * Add patch
+    from_upstream__test_check_code_hg_skip_test_if_not_wd.patch to skip
+    test_check_code_hg instead of having to blacklist it
+
+ -- Javi Merino <vicho@debian.org>  Wed, 29 Feb 2012 08:51:26 +0000
+
+mercurial (2.1-2) experimental; urgency=low
+
+  * Recommend ssh
+  * Bump watch version to 3 since we are using version mangling
+  * Run tests in the buildds
+  * Added my new DD account
+
+ -- Javi Merino <vicho@debian.org>  Sat, 25 Feb 2012 18:12:14 +0000
+
+mercurial (2.1-1) unstable; urgency=low
+
+  * New upstream revision
+
+ -- Javi Merino <cibervicho@gmail.com>  Fri, 03 Feb 2012 18:38:19 +0100
+
+mercurial (2.0.2-1) unstable; urgency=low
+
+  * New upstream revision
+  * Fix "hg-ssh is installed system-wide but uses "/usr/bin/env python"
+    as the python interpreter" with a patch that fixes the interpreter
+    (Closes: #654925)
+
+ -- Javi Merino <cibervicho@gmail.com>  Fri, 06 Jan 2012 22:09:32 +0000
+
+mercurial (2.0.1-2) unstable; urgency=low
+
+  * Team Upload
+  * Update Breaks for hgsubversion (see bug #646946), hg-git (see bug
+    #645037), hgview (see bug #637400), and qct (see bug #637401).
+
+ -- Jakub Wilk <jwilk@debian.org>  Sun, 11 Dec 2011 23:47:26 +0100
+
+mercurial (2.0.1-1) unstable; urgency=low
+
+  * New upstream revision (Closes: #650727).
+  * Fix "new -rc release are not properly parsed by watch" with a patch
+    from Pierre-Yves David <pierre-yves.david@logilab.fr> (Closes:
+    #650728)
+
+ -- Javi Merino <cibervicho@gmail.com>  Fri, 02 Dec 2011 21:35:31 +0000
+
+mercurial (2.0-2) unstable; urgency=low
+
+  * Fix "Cloning fails with: mpatch.mpatchError: patch cannot be decoded"
+    by not compiling bdiff.c with optimizations in armel.  This is
+    probably a bug in gcc-4.6 (gcc 4.5 works fine) but while it's solved,
+    at least mercurial works again in armel (Closes: #636396)
+
+ -- Javi Merino <cibervicho@gmail.com>  Thu, 03 Nov 2011 23:00:43 +0000
+
+mercurial (2.0-1) unstable; urgency=low
+
+  * New upstream release 2.0
+  * Don't include empty directories in the package
+
+ -- Javi Merino <cibervicho@gmail.com>  Tue, 01 Nov 2011 22:40:40 +0000
+
+mercurial (1.9.999+2.0rc1-1) experimental; urgency=low
+
+  * Upstream 2.0 Release Candidate 1
+  * Cover more uses of "defaults to sensible-editor" in the
+    documentation and support ru and ro translations.
+
+ -- Javi Merino <cibervicho@gmail.com>  Sun, 30 Oct 2011 13:20:38 +0000
+
+mercurial (1.9.3-1) unstable; urgency=low
+
+  * New upstream release 1.9.3.
+
+ -- Javi Merino <cibervicho@gmail.com>  Tue, 11 Oct 2011 22:31:33 +0100
+
+mercurial (1.9.2-1) unstable; urgency=low
+
+  * New upstream release 1.9.2.
+  * Remove old code that removed cruft from site-packages
+
+ -- Javi Merino <cibervicho@gmail.com>  Mon, 12 Sep 2011 20:55:12 +0100
+
+mercurial (1.9.1-2) unstable; urgency=low
+
+  * Update breaks to include all the packages that mercurial-1.9.1-1 broke
+    because of the uncoordinated transition to dh_python2.
+
+ -- Javi Merino <cibervicho@gmail.com>  Wed, 10 Aug 2011 21:37:37 +0100
+
+mercurial (1.9.1-1) unstable; urgency=low
+
+  * Convert to dh_python2
+  * New upstream release 1.9.1 fixes "cannot import mercurial.httpclient
+    with Python 2.7: 'module' object has no attribute 'PROTOCOL_SSLv2'"
+    (Closes: #635496)
+
+ -- Javi Merino <cibervicho@gmail.com>  Wed, 03 Aug 2011 08:00:03 +0100
+
+mercurial (1.9-1) unstable; urgency=low
+
+  * New upstream release 1.9 (Closes: #632250)
+  * Strip trailing .0 from Debian Policy
+  * Remove template warnings from debian/watch to remove a lintian
+    warning
+
+ -- Javi Merino <cibervicho@gmail.com>  Fri, 22 Jul 2011 19:44:26 +0200
+
+mercurial (1.8.3-1) unstable; urgency=low
+
+  [ Javi Merino ]
+  * New upstream release 1.8.3
+  * Upgrade Debian Policy to 3.9.2.0
+
+  [ Jonathan Nieder ]
+  * Make mercurial-common's Recommends field binNMU-safe (Closes: #626132)
+
+ -- Javi Merino <cibervicho@gmail.com>  Tue, 10 May 2011 20:37:27 +0100
+
+mercurial (1.8.1-3) unstable; urgency=low
+
+  * Team Upload
+  * deb_specific__disable_libdir_replacement.patch: Disable @LIBDIR@
+    replacement in the hg script, by setup.py (Closes: #620087, LP: #745250)
+
+ -- Stefano Rivera <stefanor@debian.org>  Thu, 31 Mar 2011 00:06:02 +0200
+
+mercurial (1.8.1-2) unstable; urgency=low
+
+  [ Vincent Danjean ]
+  * Set /etc/ssl/certs/ca-certificates.crt as default valid root
+    certificates and add a recommends to the ca-certificates package
+    (Closes: #619821)
+
+  [ Javi Merino ]
+  * Mercurial 1.8 breaks hg-git, add that info to debian/control
+    (Closes: #619930)
+
+ -- Javi Merino <cibervicho@gmail.com>  Mon, 28 Mar 2011 21:51:40 +0100
+
+mercurial (1.8.1-1) unstable; urgency=low
+
+  * New upstream release 1.8.1 backs out a behavior change for so-called
+    'fast-forward' merges on named branches.
+
+ -- Javi Merino <cibervicho@gmail.com>  Sat, 12 Mar 2011 19:01:16 +0000
+
+mercurial (1.8-1) unstable; urgency=low
+
+  * New upstream release 1.8. Many new features and bugfixes, among them:
+    - hgk: realize it is hgk and not gitk (Closes: #613339)
+
+ -- Javi Merino <cibervicho@gmail.com>  Sun, 06 Mar 2011 16:01:58 +0000
+
+mercurial (1.7.5-1) unstable; urgency=low
+
+  * New upstream release 1.7.5
+  * Delete patch for_upstream__typo_in_manpage.patch which is now
+    included upstream
+  * Add patch for_upstream__add_backquote_fname.patch , proposed
+    upstream (Closes: #611419)
+  * Add patch from_upstream__fix_611420.patch which will be part of the
+    next mercurial release (Closes: #611420)
+
+ -- Javi Merino <cibervicho@gmail.com>  Sat, 05 Feb 2011 21:05:19 +0000
+
+mercurial (1.7.3-1) experimental; urgency=low
+
+  * New upstream release 1.7.3
+  * Add patch for_upstream__typo_in_manpage
+
+ -- Javi Merino <cibervicho@gmail.com>  Tue, 25 Jan 2011 22:22:56 +0000
+
+mercurial (1.7.2-1) experimental; urgency=low
+
+  * New upstream release 1.7.2 (Closes: #606678)
+  * Fix typo in NEWS (Closes: #605541)
+  * Delete deb_specific__python-module-not-script.patch and
+        deb_specific__mergetools
+  * Update dh compatibility to 8
+
+ -- Javi Merino <cibervicho@gmail.com>  Mon, 13 Dec 2010 21:34:15 +0000
+
+mercurial (1.6.4-1) unstable; urgency=low
+
+  * New upstream release 1.6.4 (Closes: #598850)
+  * Verify ssl validity in https connections (Closes: #598841)
+
+ -- Javi Merino <cibervicho@gmail.com>  Mon, 04 Oct 2010 07:37:33 -0500
+
+mercurial (1.6.3-1) experimental; urgency=low
+
+  * New upstream release 1.6.3
+  * Deleted patch from_upstream__issue2255fix-basicauth.diff which is now
+        included upstream.
+
+ -- Javi Merino <cibervicho@gmail.com>  Tue, 31 Aug 2010 10:12:42 +0200
+
+mercurial (1.6.2-2) unstable; urgency=low
+
+  * The patch that fixed #586907 was not being applied. Now it should
+        work. (Closes: #586907)
+
+ -- Javi Merino <cibervicho@gmail.com>  Thu, 26 Aug 2010 16:31:09 +0200
+
+mercurial (1.6.2-1) unstable; urgency=low
+
+  * New upstream release 1.6.2
+  * Dropped build-depend on quilt (Closes: #588671)
+  * Added a patch from upstream that works around a bug in python 2.6.5
+      (Closes: #586907)
+  * Updated Standards-Version to 3.9.1.0 (no change needed)
+  * Deleted patch for_upstream__add_doc_url_in_example_files.patch which
+      is now in upstream.
+
+ -- Javi Merino <cibervicho@gmail.com>  Fri, 06 Aug 2010 10:43:06 +0200
+
+mercurial (1.6-2) unstable; urgency=low
+
+  * Mercurial 1.6 breaks old versions of hg-git (Closes: #588336)
+
+ -- Javi Merino <cibervicho@gmail.com>  Wed, 07 Jul 2010 15:48:53 +0200
+
+mercurial (1.6-1) unstable; urgency=low
+
+  [ Javi Merino ]
+  * New upstream release (1.6). Many bug fixes and improvements. Among
+      them:
+    - push: break infinite http recursion bug with Python 2.6.5
+         (issue2179 and issue2255) (Closes: #586907)
+    - zeroconf: Don't use string exceptions (Closes: #585250)
+  * Removed patch for_upstream__bashism_in_examples.patch since a fix for
+      #581122 is included upstream.
+  * Updated Standards-Version to 3.9 (no change needed)
+
+  [ Vincent Danjean ]
+  * debian/control:
+    + Use Breaks instead of Conflicts
+    + Use a fixed version in Replaces
+      I put 1.4 but it has been a long time since nothing has been moved
+      from mercurial to mercurial-common
+
+ -- Vincent Danjean <vdanjean@debian.org>  Sun, 04 Jul 2010 09:55:28 +0200
+
+mercurial (1.5.4-2) unstable; urgency=low
+
+  * Fix regression in python 2.6.5 (Closes: #586907)
+
+ -- Javi Merino <cibervicho@gmail.com>  Thu, 24 Jun 2010 12:46:57 +0200
+
+mercurial (1.5.4-1) unstable; urgency=low
+
+  * New upstream release (1.5.3). Fixes:
+    * fix Issue2181 (commit generates traceback on Nonetype)
+    * various improvements to SVN conversion support
+    * minor doc improvements
+  * New upstream release (1.5.4) (Closes: #586322). Fixes:
+    * dispatch: include Python version in traceback
+    * push: update help
+    * status: avoid performance regression when no .hgsub is present
+    * clone: fix performance issue with hardlinks and Windows shares
+    * hgweb: fix race in refreshing repo list (issue2188)
+    * hgrc: clarify that hgrc keys can be overridden and sections can be split
+    * eol: new extension for managing file newlines based on a version
+        controlled configuration file
+    * pager: fork and exec pager as parent process with /bin/sh -c
+    * rebase: stress that only local changesets should be rebased
+    * convert/svn: close gettags() log stream (issue2196)
+    * record: check that we are not committing a merge before patch selection
+
+ -- Javi Merino <cibervicho@gmail.com>  Wed, 16 Jun 2010 09:51:21 +0200
+
+mercurial (1.5.2-1) unstable; urgency=low
+
+  * New upstream release. Many minor fixes:
+    + Core
+      * clone: fix URL too long problem with many heads
+      * commands: revised documentation of 'default' and 'default-push'
+      * copies: properly visit file context ancestors on working file contexts
+      * diffstat: use ui.plain() instead of ui.interactive()
+      * dirstate: fix in memory dirstate entries for 1-second race
+      * dispatch: don't mangle ImportError abort messages
+      * filemerge: use working dir parent as ancestor for backward wdir merge
+      * hgrc.5: describe form of config values and mention lists as well
+      * hgweb: fix attribute error in error response (issue2060)
+      * log: document the new xml style
+      * merge: correctly compute the flag for noexec filesystems
+      * patch: don't look for headers in diff lines
+      * push: fix bug in warning message selection
+      * revlog: fix lazyparser.__iter__() to return all revisions (issue2137)
+      * static-http: allow clone -r (issue2164)
+      * subrepo: fix repo root path handling in svn subrepo
+      * subrepo: propagate and catch push failures
+      * templates: document missing template variables
+      * util: fix default termwidth() under Windows
+      * util: use an explicit prefix for checkexec/checklink temporary files
+    + Extensions
+      * convert/cvs: skip bad tags
+      * convert/git: check status when reading output stream
+      * convert/subversion: fix default URL checker prototype
+      * mq: rewrite strip docstrings
+      * mq: use util.unlink instead of os.unlink and os.removedirs
+      * schemes: fix // breakage with Python 2.6.5 (issue2111)
+  * Fix "bashism in /bin/sh hgeditor script" (changing shebang line)
+    (Closes: #581122)
+
+ -- Vincent Danjean <vdanjean@debian.org>  Tue, 11 May 2010 11:01:25 +0200
+
+mercurial (1.5.1-2) unstable; urgency=low
+
+  * Refresh debian patches
+  * Install localization files in the right place (Closes: #577132)
+
+ -- Vincent Danjean <vdanjean@debian.org>  Sat, 10 Apr 2010 06:58:38 +0200
+
+mercurial (1.5.1-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Vincent Danjean <vdanjean@debian.org>  Fri, 02 Apr 2010 10:45:26 +0200
+
+mercurial (1.5-1) unstable; urgency=low
+
+  * New upstream release
+    + Fix "Reserved revnos aren't." (Closes: #552423)
+    + Fix "Exception in zeroconf shows up in unrelated commands"
+      (Closes: #572963)
+    + Fix "/usr/bin/hg: HG(1) missing --config option syntax"
+      (Closes: #548413)
+    + Fix "A -> B, C -> A rename breaks diff --git" (Closes: #560386)
+
+ -- Vincent Danjean <vdanjean@debian.org>  Fri, 12 Mar 2010 15:10:33 +0100
+
+mercurial (1.4.3-1) unstable; urgency=low
+
+  * New upstream release. (Closes: #569612)
+  * Updated Standards-Version to 3.8.4 (no change needed)
+  * Remove Gerardo Curiel <gcuriel@debian.org.ve> in the maintainer field
+    as asked by the MIA team (Closes: #553101)
+  * Do not install mercurial.el. It is only useful with emacs21 that will
+    not be in sqeeze. (Closes: #557211)
+  * Add a note in NEWS about the disparition of the alias extension
+    (Closes: #536533)
+
+ -- Vincent Danjean <vdanjean@debian.org>  Mon, 15 Feb 2010 18:08:57 +0100
+
+mercurial (1.4.1-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Vincent Danjean <vdanjean@debian.org>  Thu, 03 Dec 2009 22:03:06 +0100
+
+mercurial (1.4-1) unstable; urgency=low
+
+  [ Vernon Tang ]
+  * New upstream release.
+    - /usr/share/doc/mercurial-common/examples/hg-relink gone
+      (replaced by the relink extension)
+  * Updated Standards-Version to 3.8.3.
+
+  [ Vincent Danjean ]
+  * adjust quilt dependency so that it works with backports
+    (ie quilt >> 0.46-6 instead of quilt >= 0.46-7)
+
+ -- Vincent Danjean <vdanjean@debian.org>  Thu, 19 Nov 2009 22:02:54 +0100
+
+mercurial (1.3.1-1) unstable; urgency=low
+
+  * New Upstream Version (mostly bugfixes)
+
+ -- Vincent Danjean <vdanjean@debian.org>  Thu, 23 Jul 2009 22:49:32 +0200
+
+mercurial (1.3-2) unstable; urgency=low
+
+  * Do not hardcode the python interpreter in the hg script
+    (ie use python and not pythonX.Y...) [thanks Vernon Tang]
+
+ -- Vincent Danjean <vdanjean@debian.org>  Thu, 09 Jul 2009 17:21:25 +0200
+
+mercurial (1.3-1) unstable; urgency=low
+
+  [ Vincent Danjean ]
+  * [debian/control] add version to the quilt dependency. "dh --with quilt"
+    is only supported since quilt 0.46-7 (thanks Faheem Mitha and Zed Pobre)
+    (Closes: #529700, #534589).
+
+  [ Luca Falavigna ]
+  * Changes for Python 2.6 transition (Closes: #532190):
+    - Pass --install-layout=deb option to setup.py install call.
+    - Bump python-all-dev dependency to >= 2.5.4-1~.
+
+  [ Vernon Tang ]
+  * New upstream release. (closes: #536009)
+    - Experimental support for sub-repositories
+    - Fixed support for HTTPS through proxies (closes: #498711)
+    - Experimental share extension
+    - Updated translations and numerous small changes and bug fixes
+  * Updated Standards-Version to 3.8.2.
+
+ -- Vincent Danjean <vdanjean@debian.org>  Wed, 08 Jul 2009 17:03:39 +0200
+
+mercurial (1.2.1-3) unstable; urgency=low
+
+  * Only install (or remove) files in packages we are building
+    (Closes: #529803)
+    Who knows how dh_install detect if we are building arch-dep and/or
+    arch-indep packages ?
+
+ -- Vincent Danjean <vdanjean@debian.org>  Wed, 27 May 2009 01:46:40 +0200
+
+mercurial (1.2.1-2) unstable; urgency=low
+
+  * rebuild (forgot to upload arch-all in previous upload)
+
+ -- Vincent Danjean <vdanjean@debian.org>  Tue, 19 May 2009 11:01:15 +0200
+
+mercurial (1.2.1-1) unstable; urgency=low
+
+  [ Vernon Tang ]
+  * New bugfix upstream release. (Closes: #525403)
+    - fixed version number build from tarball
+    - fix allow_read logic for hgweb
+    - improve handling of damaged revlogs in verify
+    - keep .orig files when resolving
+    - clear resolve state properly when rebasing
+    - improve --command handling with bisect
+    - fix diff against bundles
+    - improve fetch logic for inactive branches
+    - fix diffstat with notify
+    - fix 'synthetic file adds' in CVS conversion
+
+  [ Vincent Danjean ]
+  * Dump Standards-Version (no change needed)
+  * Switch to dh7 instead of cdbs (last releases of cdbs was breaking
+    the build system) (Closes: #522426, #527504)
+
+ -- Vincent Danjean <vdanjean@debian.org>  Mon, 18 May 2009 19:43:53 +0200
+
+mercurial (1.2-1) unstable; urgency=low
+
+  * New upstream release.
+
+  * Fix FTBFS with python-support 0.90 by removing dependence on
+    python-support internals. (closes: #516269)
+
+ -- Vernon Tang <vt@foilhead.net>  Fri, 06 Mar 2009 17:37:45 +0800
+
+mercurial (1.1.2+hg20090217-7787-b8d750daadde-1) experimental; urgency=low
+
+  [ Vernon Tang ]
+  * New snapshot for feature freeze before next major release.
+
+  * debian/patches:
+    - deb_specific__mergetools: remove RCS merge from merge tools
+    - Added:
+      - proposed_upstream__dont-install-i18n
+    - Dropped:
+      - convert-darc-doc.patch: dropping for now to avoid fuzzing translations
+      - backport__zeroconf-doc
+    - Refreshed:
+      - deb_specific__install-templates-separately
+      - deb_specific__mergetools
+
+  * debian/control:
+    - Add gettext to build dependencies for compiling translations
+    - Remove RCS merge from Recommends
+    - Change merge tool Recommends to Suggests, add xxdiff
+
+  [ Vincent Danjean ]
+  * swich to debhelper 7.
+    Debhelper 5.0.37.2 is not enought: 6.0.7 at least is required for
+    dh_lintian to be called.
+  * Fix version to hg hash (instead of 'unknown') for this snapshot
+  * Fix upstream version in changelog
+  * Upload to experimental
+
+ -- Vincent Danjean <vdanjean@debian.org>  Wed, 18 Feb 2009 16:24:23 +0100
+
+mercurial (1.1.2-2) unstable; urgency=low
+
+  * debian/mercurial.postinst: symlink /usr/share/doc/mercurial if dpkg didn't
+    do it when upgrading (closes: #512155)
+  * debian/control: mercurial-common replaces all earlier versions of
+    mercurial
+
+ -- Vernon Tang <vt@foilhead.net>  Sun, 18 Jan 2009 10:39:58 +0800
+
+mercurial (1.1.2-1) unstable; urgency=low
+
+  [ Vernon Tang ]
+  * New upstream release (closes: #499846)
+    Also resolves the following Debian bugs:
+    - mq corrupts repository on file rename (closes: #503997)
+    - failing import breaks Python help (closes: #476885)
+    - hg email doesn't use correct encoding (closes: #427854)
+    - error when loading extensions twice (closes: #447088)
+    - static-http does not work with old layout repositories (closes: #494889)
+    - hgwebdir.cgi goes into endless loop when viewing moved files
+      (closes: #506694)
+
+  * Install hg-ssh (ssh login shell for an hg server) system-wide.
+  * Don't enable extensions by default. (closes: #511872, #503865, #491109)
+
+  * debian/control:
+    - Moved dependencies to mercurial-common where appropriate
+    - Removed Recommends: python-beaker (not a Mercurial dependency)
+    - Removed 'convert' extension dependencies from Suggests:
+      (convert depends on many of the other SCMs it can convert from)
+    - Added python-openssl to Suggests for "hg serve" HTTPS support.
+  * debian/hgext.rc: updated for 1.1.2.
+  * debian/mercurial*, debian/rules: general cleanup.
+  * debian/README.Debian: updated, proofread, and corrected.
+  * debian/patches:
+    - Added headers.
+    - Added:
+      - deb_specific__install-templates-separately
+        (patch template search path to /usr/share instead of symlinking from
+        the module directory)
+      - backport__zeroconf-doc, proposed_upstream__correct-zeroconf-doc
+      - deb_specific__mergetools
+    - Renamed deb_specific__ElementTree_for_darcs.patch to
+      deb_specific__optional-dependencies and updated to suggest Debian
+      packages for more optional dependencies
+    - Dropped:
+      - proposed_upstream__extension_syntax.patch
+      - deb_specific__FAQ_subst.patch
+      - deb_specific__bash_completion_global_option_already_set.patch
+      - backport__CVE-2008-2942-fix.patch
+      - backport__svn1.5-fix.patch
+    - Refreshed:
+      - deb_specific__use_sensible-editor.patch
+      - deb_specific__hgk.py.patch
+      - convert-darc-doc.patch
+
+  [ Sandro Tosi ]
+  * debian/control
+    - switch Vcs-Browser field to viewsvn
+
+  [ Marco Rodrigues ]
+  * debian/control:
+    + Add ${misc:Depends} to Depends to remove
+      lintian warning.
+
+  [ Vincent Danjean ]
+  * Document the fact that extensions are not enabled by default anymore
+    in the NEWS file
+  * big thanks to Vernon Tang for its work
+  * upload the package
+
+ -- Vincent Danjean <vdanjean@debian.org>  Sat, 17 Jan 2009 17:33:46 +0100
+
+mercurial (1.0.1-5.1) unstable; urgency=high
+
+  * Non-maintainer upload by the Security Team.
+  * Honor allowpull configuration setting from hgrc on a repository clone to
+    prevent information disclosure (CVE-2008-4297; Closes: #500781).
+
+ -- Nico Golde <nion@debian.org>  Fri, 03 Oct 2008 16:25:13 +0200
+
+mercurial (1.0.1-5) unstable; urgency=low
+
+  * Fix debian/copyright (GPL-2 only and not GPL-2+) (Closes: #493967)
+
+ -- Vincent Danjean <vdanjean@debian.org>  Tue, 26 Aug 2008 15:28:20 +0200
+
+mercurial (1.0.1-4) unstable; urgency=low
+
+  * fix subversion 1.5 compatibility (Closes: #492244)
+    using upstream patch
+  * fix bashism in postinst
+
+ -- Vincent Danjean <vdanjean@debian.org>  Thu, 31 Jul 2008 14:27:51 +0200
+
+mercurial (1.0.1-3) unstable; urgency=low
+
+  * debian/control:
+    + update Standard-Version (no change needed)
+    + add python-beaker as recommends (needed for "hg serve") (Closes:
+      #486299)
+  * fix wrong ucf registration (/etc/hgrc.d/ vs /etc/mercurial/hgrc.d/)
+    (Closes: #487089). Thanks Max Bowsher for noticing.
+  * add a mention to "legacy Darcs 1 format" in convert documentation
+    (Closes: #485887)
+
+ -- Vincent Danjean <vdanjean@debian.org>  Tue, 08 Jul 2008 20:40:05 +0200
+
+mercurial (1.0.1-2) unstable; urgency=high
+
+  * Backport from upstream: fix CVE-2008-2942 Insufficient input validation
+    (Closes: #488628)
+
+ -- Vincent Danjean <vdanjean@debian.org>  Tue, 01 Jul 2008 18:44:19 +0200
+
+mercurial (1.0.1-1) unstable; urgency=low
+
+  * New upstream release
+    + Bugfix release
+  * debian/watch: do not call uupdate
+
+ -- Vincent Danjean <vdanjean@debian.org>  Sat, 31 May 2008 19:26:16 +0200
+
+mercurial (1.0-7) unstable; urgency=low
+
+  * Lowering versioned dependency on ucf. Etch version of ucf is enought.
+    #479485 was using a pre etch version of ucf.
+
+ -- Vincent Danjean <vdanjean@debian.org>  Mon, 26 May 2008 09:25:45 +0200
+
+mercurial (1.0-6) unstable; urgency=low
+
+  * add versionned dependency on ucf due to the use to ucfr (Closes: #479485)
+  * re-add rcs as first alternative of recommands. Discussion about this
+    can be found in #460943 and #479077 (Closes: #479077)
+
+ -- Vincent Danjean <vdanjean@debian.org>  Wed, 21 May 2008 10:04:32 +0200
+
+mercurial (1.0-5) unstable; urgency=low
+
+  * Add a note in the NEWS file about upstream change for merging conflicts.
+    (Closes: #481553, )
+  * install mergetools.hgrc system wide (Closes: #481089)
+  * add suggest and documentation for convert extension dependencies
+    (Closes: #477652)
+
+ -- Vincent Danjean <vdanjean@debian.org>  Tue, 20 May 2008 22:46:57 +0200
+
+mercurial (1.0-4) unstable; urgency=low
+
+  * fix build system so that "hg version" works
+  * fix typos in doc (darcs instead of darc)
+  * remove suggests: for foreign SCM. If someone needs them for the convert
+    extension, they should be already installed (Closes: #476342)
+
+ -- Vincent Danjean <vdanjean@debian.org>  Wed, 16 Apr 2008 10:05:53 +0200
+
+mercurial (1.0-3) unstable; urgency=low
+
+  * really fix auto-enabling extensions at installation time
+    + be less strict with spaces
+    + reformat the hgext.rc file to be consistent
+
+ -- Vincent Danjean <vdanjean@debian.org>  Tue, 15 Apr 2008 10:32:38 +0200
+
+mercurial (1.0-2) unstable; urgency=low
+
+  * fix typo in mercurial postinst
+  * remove Suggests to non existant mercurial-web
+  * add lintian-override for non depends on "tk8.4 | wish" in
+    mercurial-common (the Suggests: is in the mercurial package
+    as for all other extensions' dependencies)
+  * fix handling of automatic enabled extension in postinst
+    (they must be disabled in the installed template)
+  * add detection of inotify extension before enabling it (needed on
+    etch that has a too old libc)
+
+ -- Vincent Danjean <vdanjean@debian.org>  Mon, 07 Apr 2008 09:06:04 +0200
+
+mercurial (1.0-1) unstable; urgency=low
+
+  * new upstream version
+    Closes several Debian bugs:
+     * "hg convert broken" (Closes: #472185)
+     * "hgmerge: uses non-POSIX syntax `type' in /bin/sh script" (Closes:
+       #447094)
+     * "hgmerge: --help option gives a message that ends strangely" (Closes:
+       #443428)
+     * "mercurial: hg/editor interaction leaves a lot of temp files around"
+       (Closes: #472943)
+     * "mercurial: Mercurial merge with meld needs hint" (Closes: #466006)
+     * "glog: tries to close closed fd" (Closes: #454326)
+     * "mercurial: `hg diff` can break UTF-8 encoding" (Closes: #469326)
+     * "Recording mtime after recording commit message leads to hidden (lost)
+       changes" (Closes: #452385)
+    General:
+     * greatly improved merge tool configuration, see "hgrc.5.txt" for details
+     * improved copy/rename handling in diffs, status, and merge
+     * files in .hg inherit permissions from .hg/store
+     * infer --repository when possible, so commands may be run from anywhere.
+     * easy-installable
+     * new "droplet" logo
+
+    Commands:
+     * archive: disable ".hg_archival.txt" file addition with "ui.archivemeta"
+     * bisect: now built-in with greatly improved performance and usability
+     * bundle: new --all option to bundle the whole repository more easily.
+     * cat: apply decode filters with --decode
+     * clone: can clone from a full-history bundle
+     * commit: warn when creating a new head
+     * debugancestor: index argument is now optional
+     * diff: set the number of context line to show with -U/--unified
+     * grep: display matched revisions commit date with --date
+     * import: new --no-commit and --user options
+     * incoming/outgoing: add --limit option
+     * log: use -b/--only-branch to show revisions of a single branch
+     * remove: improve handling for --after
+     * revert: major speedup
+     * serve: prefix the served path with --prefix (also in [web] section)
+     * status: unknown files are skipped by --quiet
+     * tag: allow multiple tags to be added or removed
+     * tags: --verbose flags local tags
+     * update: switch between named branches without -C
+
+    Extensions:
+     * churn: promoted to an official extension (previously in contrib)
+     * color: new extension coloring "status" and "qseries" command outputs
+     * convert:
+       * allow synthetic history to be spliced in with --splicemap
+       * support GNU Arch and Monotone sources
+       * svn: allow shallow conversions of single branches with
+         convert.svn.startrev option.
+       * svn: make trunk/branches/tags layout detection more flexible by
+         allowing either of them to be skipped.
+       * svn: preliminary support as a conversion target
+     * hgk: configuration file changed from .gitk to .hgk
+     * highlight: new extension enabling syntax highlighting in hgweb file view
+       (requires pygments)
+     * inotify: new extension using Linux 2.6 inotify API for instant status
+       checking
+     * keyword: new extension for filewise RCS-keyword expansion in working
+       directory
+     * mq: new --currentdate, --date, --currentuser, and
+       --user options
+     * record: add "qrecord" command when used with mq
+
+    Web interface:
+     * improved WSGI integration and compatibility
+     * follow symlinks in hgwebdir collections
+     * show branches in most of gitweb templates
+     * add line anchors to annotate, changeset, diff and file views
+     * support web.baseurl in hgwebdir, overriding SCRIPT_NAME
+
+    Hooks:
+     * standard hook to reject text files with CRLF in win32text extension
+     * redirect stdout to stderr for ssh and http servers
+
+  [ Gerardo Curiel ]
+  * Split package to fix lintian warnings:
+    + mercurial -  main package
+    + mercurial-common - Arch-indep bits
+  * Fix clean target
+  * Dropped patches:
+    patches/proposed_upstream__check_hgmerge_args.patch
+    patches/proposed_upstream__type_is_not_posix.patch
+  * patches/deb_specific__use_sensible-editor.patch:
+    Rediff against mercurial 1.0
+  * hgmerge shell script is not provided anymore
+  * contrib/favicon.ico is not provided anymore
+  * Deleted obsolete link_hgit target from debian/rules
+  * Added mergetools.hgrc to the examples
+    directory
+  * Added logo-droplets.svg to /usr/share/mercurial
+  * Added new extensions to the hgext.rc file
+    + hgext.color (not enabled by default)
+    + hgext.highlight (not enabled by default)
+    + hgext.inotify (enabled, Closes: #472583)
+    + hgext.keyword (not enabled by default)
+  * Removed extensions from the hgext.rc file
+    + hgext.hbisect (now provided as a built-in command)
+  * Added new suggested dependencies :
+    + python-pygments (needed for hgext/highlight.py)
+    + python-elementtree (for darcs conversion)
+
+  [ Vincent Danjean ]
+  * import mercurial in the Python Application Packaging Team project
+  * debian/control:
+    + add PAPT in the Uploaders field
+    + add Vcs-* fields
+    + add conflicts/replaces fields to ensure proper upgrade for
+      mercurial-common
+  * cleanup debian/ files
+    + remove unneeded debian/*.{dirs} files
+  * move examples/ in usr/share/doc/mercurial (in the mercurial-common
+    package)
+  * manage hgext.rc with ucf. Enabling some extensions only if their
+    dependencies are present
+  * put all usr/share/python-support/* in mercurial-common instead of
+    mercurial. This trigger a lintian warning but this is an error (see
+    #473428)
+
+  [ Piotr Ożarowski ]
+  * New recommended packages:
+    + python-mysqldb (hgext/bugzilla.py)
+    + python-openssl (hgweb/server.py)
+  * New suggested packages:
+    + python-flup (contrib/hgwebdir.fcgi, Closes: #466731)
+
+  [ William Pitcock ]
+  * patches/deb_specific__use_sensible-editor.patch:
+    +Rediff against 1.0 branch.
+
+ -- Vincent Danjean <vdanjean@debian.org>  Mon, 07 Apr 2008 00:11:40 +0200
+
+mercurial (0.9.5-3) unstable; urgency=low
+
+  * [debian/control]
+    + Recommends rcs first (and before kdiff3) as hgmerge
+      use it in first (and does not use another program if it exists)
+      (Closes: #460943)
+      As an additionnal value, rcs has really fewer dependencies
+    + Move Homepage: from description to source stanza
+    + Suggest qct instead of commit-tool (better developed upstream)
+    + Bump standard-version to 3.7.3 (no change needed)
+    + Add python-elementtree to suggest (needed for hg convert with darcs
+      repo) (Closes: 459353)
+      Should be removed when debian will switch to python2.5 (as it is
+      included in it)
+    + move tk8.4 | wish from recommends to suggests as it is needed by
+      an extension (hgk) and not by the core package
+  * [debian/README]
+    + document that extension dependencies are listed as Suggests:
+  * [debian/patches/deb_specific__use_VISUAL_envvar.patch]
+    Rewrite the patch using sensible-editor (Closes: 448376)
+    and rename it to deb_specific__use_sensible-editor.patch
+  * [debian/rule]
+    + rewrite the fix for cdbs/dh_python so that we depend on the
+      current python version (Closes: #456556)
+
+ -- Vincent Danjean <vdanjean@debian.org>  Mon, 21 Jan 2008 20:57:27 +0100
+
+mercurial (0.9.5-2) unstable; urgency=low
+
+  * Apply patch to change 'hgext/' into 'hgext.' when loading an extension
+    Current config files use the documented syntax (ie 'hgext.extname=')
+    Users can use 'hgext/extname=' in their hgrc if they want to
+    (Closes: #447088)
+
+ -- Vincent Danjean <vdanjean@debian.org>  Fri, 02 Nov 2007 11:59:03 +0100
+
+mercurial (0.9.5-1) unstable; urgency=low
+
+  * New upstream release
+    Closes: #435636 (erroneous multiple heads after commit)
+    Closes: #427808 (hgweb/hgwebdir do not work with flup (FastCGI))
+    Closes: #418780 (partial hgweb listings)
+    Closes: #440175 (please include record extension)
+    Closes: #447663 (0.9.5 available)
+    Closes: #427851 (RSS feeds have wrong URL with https)
+    New features:
+     * Handle symlinks on systems without symlink support
+     * hg archive supports symlinks
+     * Display executable/symlink bit with "hg manifest -v" (see UpgradeNotes)
+     * Improved hg verify diagostics
+     * Faster revlog handling
+     * Faster handling of large directories
+     * Greatly improved handling of large files
+     * Atom syndication support in hgweb
+     * Improved test suite with parallel execution
+
+    Fixes:
+     * Fixes for some file copy and rename corner cases
+     * Allow moving newly-added files before commit
+     * Improve hg diff whitespace handling
+     * Disallow fast-forward merge with an ancestor
+     * Fix adding untracked files on directory renames
+     * Fix hg archive %r format specifier
+     * Fix re: and glob: patterns in .hgignore
+     * Improve hg executable path resolution
+     * Many options and hgrc parsing improvements
+     * Better handling of VFAT filesystems on Linux
+     * Fix tgz archival on Windows
+     * Fix hg serve on Windows requiring pywin32 modules
+     * Fix --profile under Windows
+
+    New extensions:
+     * alias - allow user-defined command aliases
+     * children - show the children of the given or working dir revision
+     * imerge - incremental interactive merging
+     * interhg - modify changelog text as in InterWiki
+     * record - darcs-style interactive change selection during commit
+
+    New extension features:
+     * convert
+       * Now supports Subversion, Darcs and Mercurial as source SCMs
+       * Use clone's behaviour for the default destination name
+       * Force encoding to UTF-8 for converted repository
+       * Support new-style .cvspass file format
+       * Filter the files and directories to import
+       * Remap paths to new locations during import
+     * hgk
+       * Fix hgk stopping because of untrusted repository warnings
+       * Handle filenames with spaces
+       * Improved documentation
+     * mq
+       * Autodetect --git patches on qrefresh
+
+  * Improve README.Debian about Emacs
+    Closes: #446972 (mercurial.el: autoload)
+    Thanks to Trent W. Buck for its explainations added to the README.Debian
+  * Apply several patches to hgmerge:
+    - use /bin/bash for hgmerge: 'type' is not POSIX (Closes: #447094)
+    - patch hgmerge to do minimum check of its arguments (Closes: #443428)
+    - use $VISUAL and default to 'editor' instead of 'vi'
+      (Closes: #447095, #448376) [mercurial/command.py modified too]
+  * Correct wrong link to web docs in README.Debian (Closes: #425841)
+  * [debian/control] Recommends: meld (used to hgmerge) (Closes: #316347)
+
+ -- Vincent Danjean <vdanjean@debian.org>  Mon, 29 Oct 2007 10:22:45 +0100
+
+mercurial (0.9.4-1) unstable; urgency=low
+
+  * New upstream release (Closes: #430714)
+    + New features:
+       * support for symlinks
+       * improved tag handling
+       * improved merge handling of file and directory renames
+       * improved named branch usability
+       * numerous improvements to commands
+       * generic pre- and post-command hooks
+       * improved Windows support
+       * basic BeOS and OpenVMS support
+       * numerous bug fixes
+
+    + New extensions and contributions:
+       * extensions can now be specified in .hg/hgrc
+       * new convert extension with CVS support
+       * new graphlog extension
+       * improved patchbomb extension
+       * example FastCGI script
+
+ -- Vincent Danjean <vdanjean@debian.org>  Wed, 27 Jun 2007 00:33:27 +0200
+
+mercurial (0.9.3-2) unstable; urgency=low
+
+  * [debian/rule, debian/control] remove workaround for symlink support in
+    python-support and bump dependency of python-support (>= 0.4.3)
+  * [debian/rule] use default python interpreter as 2.4 is the default now
+  * [debian/mercurial.postinst] remove old
+    /usr/lib/python*/site-packages/{mercurial,hgext} directories if needed
+    (Closes: #382252)
+  * forgot to closes: #382185 since 0.9.2 upstream release (hgrc manual does
+    not say [smtp] host is optional any more)
+
+ -- Vincent Danjean <vdanjean@debian.org>  Wed,  3 Jan 2007 14:22:10 +0100
+
+mercurial (0.9.3-1) unstable; urgency=low
+
+  * New upstream release
+    + Bug fixes:
+       - fix a merge copy/rename corner case
+       - fix spurious new heads message with push -r
+       - fix hg export %n sequence numbers
+       - fix shell quoting on Windows
+       - fix charset encoding for hgwebdir and obfuscated addresses
+       - fix missing generated files for distribution tarball
+       - fix convert-repo tag updates and transcoding of committer
+       - add instructions for redoing failed merges
+
+    + Documentation fixes:
+       - hg cat, manifest, and tag default to current parent revision.
+       - CGI stub comments clarified
+       - corrected synopses for many commands
+       - improve doc building and distribution
+       - convert-repo: update usage information
+
+    + Extension fixes:
+       - mq: fix strip on Windows
+       - mq: fix some guards corner cases
+       - gpg: make 'hg sign' default to current parent
+
+
+
+ -- Vincent Danjean <vdanjean@debian.org>  Tue, 19 Dec 2006 11:25:55 +0100
+
+mercurial (0.9.2-3) unstable; urgency=low
+
+  * remove debian/patches/submitted_upstream__restore_hgk.py.patch
+    as it is now included in the release (and avoid to use a old hgk.py
+    with a recent hg) (Closes: #403282)
+
+ -- Vincent Danjean <vdanjean@debian.org>  Sat, 16 Dec 2006 15:51:13 +0100
+
+mercurial (0.9.2-2) unstable; urgency=low
+
+  * [debian/rules] add support for python2.5
+  * [README.Debian] update list of default extensions
+
+ -- Vincent Danjean <vdanjean@debian.org>  Thu, 14 Dec 2006 15:26:10 +0100
+
+mercurial (0.9.2-1) unstable; urgency=low
+
+  * New upstream release
+   + New features:
+      - merge now follows renames and copies
+      - new layout protects against case-insensitivity issues
+      - new branch and branches commands for managing named branches
+      - push command accepts -r for pushing specified heads or named
+        branches
+      - proper storage of changelog and other metadata in UTF-8
+      - log, annotate and grep '--follow' follow renames and copies
+      - date parsing is improved and log, update, and revert accept
+        --date ranges
+      - additional command options for log, status, addremove
+      - improved schema for hgweb URLs
+      - bundle can now use '-r' and '--base' removing the need of an
+        base repository
+      - support for git-style extended patches with --git option
+      - new debuginstall command to check for common installation issues
+
+   + New contributions and extensions:
+      - mq
+        - support for quilt-style guards
+        - can import existing changesets into mq ('qimport -r') or
+          commit mq patches as regular changesets ('qdel -f')
+        - edit the log message with 'qrefresh -e'
+        - rename patches with 'qrename'
+        - qheader to display the patch header of particular patches,
+          and '--summary' for qseries, qapplied, qunapplied and qtop
+        - combine patches with 'qfold'
+        - qrefresh supports pattern options to import only a subset
+          of the changes into a patch, to help split changes into
+          multiple patches
+        - patch names for applied patches act like local tags, and can
+          be used in the revision arguments of any hg command
+      - hgk
+        - browse a subset of the history with '--limit' and revision range
+          arguments
+        - shows revision numbers as well as node hashes
+      - churn: graph lines of code changed per user over a range of history
+      - patchbomb: generate inline attachments with '-a'
+
+   + Behavior changes:
+      - hg cat defaults to the working directory revision rather than tip
+      - hg manifest no longer shows internal file revision hashes by default
+      - hg revert now requires the -a flag to revert all files
+
+   + Developer notes:
+      - new high-level API functions in the 'hg' module
+      - new context API simplifies many operations
+      - The changelog can now include arbitrary metadata in key: value form
+  * [debian]: include the churn extension and enable it by default
+
+ -- Vincent Danjean <vdanjean@debian.org>  Thu, 14 Dec 2006 13:05:01 +0100
+
+mercurial (0.9.1+20061210+8c24b6fd5866-1) experimental; urgency=low
+
+  * New upstream release
+    snapshot before 0.9.2 release
+  * [debian/control] : update maintainer field : I'am DD now :-)
+
+ -- Vincent Danjean <vdanjean@debian.org>  Sun, 10 Dec 2006 22:40:30 +0100
+
+mercurial (0.9.1-1) unstable; urgency=low
+
+  * New upstream release
+    Major changes between Mercurial 0.9 and 0.9.1:
+
+     New features:
+     - You can now configure your 'hgweb' server to let remote users
+       'push' changes over http.
+     - You can now 'import' a patch in a mail message by saving the mail
+       message, and importing it.  This works for patches sent either
+       inline or as attachments.
+     - The 'diff' command now accepts '-rA:B' syntax as a synonym for
+       '-r A -r B', and adds '-b' and '-B' options.
+
+     New contributions and extensions:
+     - The 'acl' extension lets you lock down parts of a repository
+       against incoming changes
+     - The 'extdiff' extension lets you run your favourite graphical
+       change viewer
+     - Comprehensive integration with the 'vim' editor
+     - A restricted shell for 'ssh'-hosted repositories
+     - An importer for 'darcs' repositories
+
+     New hooks added:
+     - 'preupdate' is run before an update or merge in the working
+       directory.
+     - 'update' is run after an update or merge in the working
+       directory.
+
+     Behaviour changes:
+     - NOTE: Mercurial as installed by the Windows binary
+       installer no longer performs automatic line-ending conversion for
+       Unix/Linux compatibility.  To re-enable this feature, edit your
+       'mercurial.ini' file after you upgrade.
+     - The Windows binary installer now automatically adds 'hg' to your
+       '%PATH%'.
+     - The 'backout' command now runs an editor by default, to let you
+       modify the commit message for a backed-out changeset.
+     - An earlier problem with parsing of tags has been fixed.
+       This makes tag parsing slower but more reliable.
+
+     Memory usage and performance improvements:
+     - The 'remove' command has been rewritten to be hundreds of times
+       faster in large repositories.
+     - It is now possible to 'clone' a repository very quickly over a
+       LAN, if the server is configured to allow it.  See the new 'server'
+       section in the 'hgrc' documentation.
+
+     Other changes of note:
+     - Mercurial will now print help for an extension if you type 'hg
+       help EXT_NAME'.
+     - The usual array of bug fixes and documentation improvements.
+     - The integrated web server is now more WSGI-compliant.
+     - Work has begun to solidify Mercurial's API for use by third-party
+       packages.
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Tue, 25 Jul 2006 19:21:13 +0200
+
+mercurial (0.9-9) unstable; urgency=low
+
+  * Force the use of python2.4 with a sed command. A race condition on some
+    autobuilders makes that workaround needed. (Really closes: #378835)
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Thu, 20 Jul 2006 17:59:35 +0200
+
+mercurial (0.9-8) unstable; urgency=low
+
+  * do not use default python but python2.4 instead for hg :
+    most code is python2.3 compatible (so we still compile .py files for
+    pyhton2.3) but "hg help" need features for python2.4
+    Closes: #378835
+    Thanks David Douard for reporting this.
+  * adding missing manpage hgignore (Closes: #378502)
+    Thanks Baruch Even for reporting this.
+  * remove hack in postinst (dpkg not replacing directory by symlink) as it is
+    no more useful (directory was in /usr/lib/python2.3, symlink in now in
+    /usr/lib/python2.4)
+  * Create symlinks for the templates directory within the mercurial directory
+    (and not in another python serch path) (Closes: #378538)
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Wed, 19 Jul 2006 12:25:30 +0200
+
+mercurial (0.9-7) unstable; urgency=low
+
+  * mercurial will use the default python interpreter
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Tue, 11 Jul 2006 23:12:14 +0200
+
+mercurial (0.9-6) unstable; urgency=low
+
+  * update to the new python policy
+  * reenable the fix for #362487 as python2.3 is useable again
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Tue,  4 Jul 2006 00:19:50 +0200
+
+mercurial (0.9-5) unstable; urgency=low
+
+  * call dh_python with -V 2.4 argument
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Mon, 29 May 2006 09:18:53 +0200
+
+mercurial (0.9-4) unstable; urgency=low
+
+  * [debian/copyright] add copyright for Debian packaging
+  * [debian/NEWS] talk about python2.3->python2.4 transition
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Wed, 17 May 2006 00:28:48 +0200
+
+mercurial (0.9-3) unstable; urgency=low
+
+  * [debian/compat] debhelper compat version dumped to 5
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Sun, 14 May 2006 21:27:43 +0200
+
+mercurial (0.9-2) unstable; urgency=low
+
+  * fix a bug in update/revert (patch from Vadim Gelfer already applied
+    upstream)
+  * [debian/control] build-depend on python as dh_python require it
+    (package did not fail to build due to an indirect build-dependency
+    but it is safer like that)
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Fri, 12 May 2006 19:30:44 +0200
+
+mercurial (0.9-1) unstable; urgency=low
+
+  * New upstream release
+    Major changes between Mercurial 0.8.1 and 0.9:
+     - The repository file format has been improved.
+       - This has resulted in an average 40% reduction in disk space usage.
+       - The new format (called RevlogNG) is now the default.
+       - Mercurial works perfectly with both the old and new repository
+         file formats. It can transfer changes transparently between
+         repositories of either format.
+       - To use the new repository format, simply use `hg clone --pull` to
+         clone an existing repository.
+       - Note: Versions 0.8.1 and earlier of Mercurial cannot read
+         RevlogNG repositories directly, but they can `clone`, `pull`
+         from, and `push` to servers that are serving RevlogNG
+         repositories.
+     - Memory usage has been improved by over 50% for many common operations.
+     - Substantial performance improvements on large repositories.
+     - New commands:
+       - 'archive' - generate a directory tree snapshot, tarball, or zip
+         file of a revision
+     - Deprecated commands:
+       - 'addremove' - replaced by 'add' and 'remove --after'
+       - 'forget' - replaced by 'revert'
+       - 'undo' - replaced by 'rollback'
+     - New extensions:
+       - Bugzilla integration hook
+       - Email notification hook
+     - Nested repositories are now supported. Mercurial will not recurse
+       into a subdirectory that contains a '.hg' directory. It is treated
+       as a separate repository.
+     - The standalone web server, 'hg serve', is now threaded, so it can
+       talk to multiple clients at a time.
+     - The web server can now display a "message of the day".
+     - Support added for hooks written in Python.
+     - Many improvements and clarifications to built-in help.
+  * [debian/control] set Standard-Version to 3.7.2 (no changes required)
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Thu, 11 May 2006 01:00:03 +0200
+
+mercurial (0.8.1-6) unstable; urgency=low
+
+  * cleanup patches applied on top of upstream sources
+    send the interesting one to upstream before the 0.9 release
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Thu, 27 Apr 2006 03:20:24 +0200
+
+mercurial (0.8.1-5) unstable; urgency=low
+
+  * use python2.4 instead of standard python (2.3 for now):
+    this allows to use hglib backend with tailor
+  * several minor fixes so that tailor works with the 'hglib' backend
+    these are submitted upstream
+  * hardcode python interpreter in script instead of using /usr/bin/env
+    as suggested by the python policy
+  * remove previous hack (dpkg not replacing directory by symlink) as
+    it is no more useful (directory was in /usr/lib/python2.3, symlink in now
+    in /usr/lib/python2.4)
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Mon, 17 Apr 2006 12:21:24 +0200
+
+mercurial (0.8.1-4) unstable; urgency=low
+
+  * directory doesn't get replaced by symlink (Closes: #362487)
+    and dpkg does not say anything ! Thanks Norbert Tretkowski
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Fri, 14 Apr 2006 00:38:10 +0200
+
+mercurial (0.8.1-3) unstable; urgency=low
+
+  * Really fix #361897 (Thanks Darren Salt again)
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Wed, 12 Apr 2006 20:33:45 +0200
+
+mercurial (0.8.1-2) unstable; urgency=low
+
+  * Fix new tag syntax for hgk. Thanks Darren Salt (Closes: #361897)
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Tue, 11 Apr 2006 13:25:04 +0200
+
+mercurial (0.8.1-1) unstable; urgency=low
+
+  * New upstream release
+    Major changes from 0.8 to 0.8.1:
+    - new extensions:
+      mq (manage a queue of patches, like quilt only better) (Closes: #343824)
+      email (send changes as series of email patches)
+    - new command: merge (replaces "update -m")
+    - improved commands: log (--limit option added), pull/push ("-r" works
+      on specific revisions), revert (rewritten, much better)
+    - comprehensive hook support
+    - output templating added, supporting e.g. GNU changelog style
+    - Windows, Mac OS X: prebuilt binary packages, better support
+    - many reliability, performance, and memory usage improvements
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Mon, 10 Apr 2006 22:09:16 +0200
+
+mercurial (0.8-3) unstable; urgency=low
+
+  * Fix typo in long description
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Tue,  4 Apr 2006 03:30:22 +0200
+
+mercurial (0.8-2) unstable; urgency=low
+
+  * Add documentation about extensions packaged for Debian.
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Tue, 31 Jan 2006 11:14:52 +0100
+
+mercurial (0.8-1) unstable; urgency=low
+
+  * New upstream release
+    Major changes from 0.7 to 0.8:
+    - faster status, diff, and commit
+    - reduced memory usage for push and pull
+    - improved extension API
+    - new bisect, gpg, hgk, and win32text extensions
+    - short URLs, binary file handling, and optional gitweb skin for hgweb
+    - numerous new command options including log --keyword and pull --rev
+    - improved hooks and file filtering
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Mon, 30 Jan 2006 16:06:34 +0100
+
+mercurial (0.7+20060110+0d36e3d7e2ea-1) experimental; urgency=low
+
+  * package test to try upstream sources before 0.8
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Tue, 10 Jan 2006 22:47:38 +0100
+
+mercurial (0.7-8) unstable; urgency=low
+
+  * Closes: #343459: correct FAQ URL
+  * Closes: #343458: fix directory completion
+  * Closes: #343472: clone does not work with path aliases
+    (Thanks Daniel Kobras for these three bugreports with patch)
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Tue,  3 Jan 2006 21:13:23 +0100
+
+mercurial (0.7-7) unstable; urgency=low
+
+  * Add support for alias st for hg status (Closes: #340235)
+    (backport from tip, thanks  Michael Gebetsroither <michael.geb@gmx.at>)
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Tue, 22 Nov 2005 13:01:39 +0100
+
+mercurial (0.7-6) unstable; urgency=low
+
+  * Backport of the patch "fix handling of daylight saving time"
+    from upstream (Closes: #336646)
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Wed,  2 Nov 2005 06:17:04 +0100
+
+mercurial (0.7-5) unstable; urgency=low
+
+  * Add hgweb.cgi and hgwebdir.cgi in examples (Closes: #332973)
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Sat, 15 Oct 2005 11:24:54 +0200
+
+mercurial (0.7-4) unstable; urgency=low
+
+  * backport from upstream of
+    - use of 'hgext' directory for extensions
+    - 'hgk.py' extension (was hgit before)
+    => 'hg view' works ;-)
+  * add 'Recommands: wish' for the hgk extension
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Fri, 23 Sep 2005 11:45:13 +0200
+
+mercurial (0.7-3) unstable; urgency=low
+
+  * Add system-wide config directory (so that extensions can be easyly added)
+  * Enable hgit extension
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Tue, 20 Sep 2005 02:47:16 +0200
+
+mercurial (0.7-2) unstable; urgency=low
+
+  * Correct changelog.Debian (I forgot to add upstream changes in the
+    previous entry)
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Sun, 18 Sep 2005 22:46:14 +0200
+
+mercurial (0.7-1) unstable; urgency=low
+
+  * New upstream release (Closes: #328725)
+    core
+     improved merge logic
+     improved copy/rename support (still experimental)
+     automatic binary file handling
+     generic file filtering support
+     various performance improvements
+    command line
+     new bundle/unbundle commands for exchanging native updates
+     more natural support for remove, copy, and rename
+     faster, more powerful log command
+     new grep command for searching entire history
+     support for plug-in extensions
+     improved exception handling and debugging facilities
+    hgweb
+     optional downloading of tarballs and zip files
+    Windows support
+     hardlinking support
+     newline conversion through file filtering
+    contrib
+     updated hgk
+  * New package (a bit delayed due to a crash disk and a new job)
+  * Upstream added support for options -h and --help (Closes: #324049)
+  * renamming conffile 'bash_completion' to 'mercurial' (Closes: #325266)
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Sat, 17 Sep 2005 16:54:37 +0200
+
+mercurial (0.6c-1) unstable; urgency=low
+
+  * New upstream release
+    What's new:
+
+    core functionality
+     ability to use tags to identify branches
+     detect adding new heads with push
+     protocol versioning for push/pull
+     https: support
+     minor merge fixes
+    command line
+     much more powerful path handling
+     incoming/outgoing commands
+     smarter import/export
+     fewer long, confusing hashes to deal with
+     many new command options and settings
+    portability
+     improved portability of test suite and support scripts
+     improved Windows support
+    web interface
+     easy to set up multiple repository interface
+     several new hgrc config options
+     IPv6 support
+    documentation
+     improved built-in help and man pages
+     a steadily growing wiki
+     tutorial in multiple languages
+    extras
+     a highly functional bash auto-completion script
+     a new Emacs mode
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Tue, 23 Aug 2005 11:01:36 +0200
+
+mercurial (0.6b-2) unstable; urgency=low
+
+  * Adds proper python dependencies
+  * Recommends tkdiff or kdiff3 for merge purpose
+  * Suggests meld as this is another merging program that can be used by
+    mercurial (but this needs the user set the HGMERGE variable)
+  * Closes: #316347: Please Recommands: meld
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Wed, 17 Aug 2005 10:33:33 +0200
+
+mercurial (0.6b-1) unstable; urgency=low
+
+  * New upstream release
+    What's new:
+
+    improved ui
+     new clone command replaces mkdir+init+pull+update
+     new revert command
+     add range support and -p option to log to show patches
+     tags command now supports local tags
+     improved push and pull
+     better exception and signal handling
+     improved option parsing
+     support for user-defined hooks (aka triggers)
+    performance updates
+     even faster import of large sets of patches
+     faster delta generation
+     faster annotate
+     faster status and ignore
+    improved web interface
+     more conformant and compatible HTML output
+     built-in RSS feeds
+     better tags handling
+     fast multiple keyword search
+    portability work
+     support for Windows is nearly complete
+     should easily compile and install on any modern UNIX
+     comes with RPM spec file and script
+    and more
+     doc and help updates
+     improved test suite
+     numerous bug fixes and cleanups
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Tue, 12 Jul 2005 11:45:13 +0200
+
+mercurial (0.6-2) unstable; urgency=low
+
+  * Add meld to Suggest as it is not used by default hgmerge
+    (Closes: #316347: Please Recommands: meld)
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Thu, 30 Jun 2005 16:30:33 +0200
+
+mercurial (0.6-1) unstable; urgency=low
+
+  * New upstream release
+    This release contains a huge number of improvements:
+
+    improved source tracking
+      multi-head support
+      permission tracking
+      rename and copy tracking
+      improved tag handling
+    friendlier, more robust command line interface
+      integrated help
+      faster startup
+      better exception handling
+      smarter three-way merge helper
+    improved communication
+      faster outstanding changeset detection
+      SSH-based push support
+      non-transparent proxy support
+    improved configuration handling
+      support for .hgrc and .hg/hgrc files
+      save per-repo defaults for pull
+    new delta extension
+      faster, smaller, and simpler than GNU diff or xdiff
+      faster commit, push/pull, and annotate
+    improved interoperability
+      convert-repo framework for importing from other SCMs
+      can work with gitk and git-viz
+    portability improvements
+      tested on big and little-endian 32 and 64-bit UNIX platforms
+      Windows support is nearly complete
+    and much more
+      numerous performance tweaks and bugfixes
+      automated test suite
+      updated docs and FAQ
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Sat, 25 Jun 2005 00:15:13 +0200
+
+mercurial (0.5b+20050618-1) unstable; urgency=low
+
+  * New upstream sources (tip 396:8f8bb77d560e70bcc95577e4dfa877df18d876ab)
+    this fix a alignment bug reported on alpha
+  * many others fix and improvments from upstream
+  * Change short description
+    Closes: #314577: Please spell out the abbreviation in the synopsis
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Sat, 18 Jun 2005 10:02:39 +0200
+
+mercurial (0.5b+20050612-2) unstable; urgency=low
+
+  * Fix spelling mistake (thanks Emanuele Aina)
+    Closes: #314161: Small spelling error in documentation
+  * New package that should solve the FTBFS due to the use of the boggus
+    package debhelper 4.9.0 by autobuilders
+    Closes: #313491: mercurial_0.5b+20050612-1: FTBFS: syntax error at
+    /usr/bin/dh_strip line 191, near 'if'
+  * Closes: #314577: Please spell out the abbreviation in the synopsis
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Fri, 17 Jun 2005 11:14:06 +0200
+
+mercurial (0.5b+20050612-1) unstable; urgency=low
+
+  * New upstream sources
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Sun, 12 Jun 2005 11:40:02 +0200
+
+mercurial (0.5b-5) unstable; urgency=low
+
+  * manually fix wrong build-dependencies that have been previously generated
+    by cdbs (ie remove 'build-essential' and duplicates)
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Sat,  4 Jun 2005 09:16:40 +0200
+
+mercurial (0.5b-4) unstable; urgency=low
+
+  * remove automatic generation of control from control.in (with cdbs
+    dependencies) as requested by ftpmaster to accept this NEW package
+    (see still opened bugs #311724 for more information)
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Fri,  3 Jun 2005 08:57:06 +0200
+
+mercurial (0.5b-3) unstable; urgency=low
+
+  * First official Debian release. (Closes: #308873: ITP: mercurial -- scalable
+    distributed SCM)
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Thu,  2 Jun 2005 08:55:53 +0200
+
+mercurial (0.5b-2) unstable; urgency=low
+
+  * package description improved from the mercurial ML
+  * Add Homepage: to long description (thanks Anibal Monsalve Salazar)
+  * Change Architecture from all to any as mercurial sources now have C files
+    to compile (thanks Anibal Monsalve Salazar)
+  * Update copyright (thanks Anibal Monsalve Salazar)
+  * Add rcs and tkdiff to Recommands as hgmerge use it (only recommands and
+    not depends because if the user set HGMERGE to kdiff3, he does not need
+    them)
+  * use hgmerge if HGMERGE is not set (patch submitted upstream)
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Wed,  1 Jun 2005 11:35:20 +0200
+
+mercurial (0.5b-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Tue, 31 May 2005 00:00:29 +0200
+
+mercurial (0.5-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Sun, 29 May 2005 21:36:55 +0200
+
+mercurial (0.4f-1) unstable; urgency=low
+
+  * New upstream release
+  * english improved in description (thanks Jay Berkenbilt <qjb@debian.org>)
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Sat, 14 May 2005 00:55:40 +0200
+
+mercurial (0.4e-3) unstable; urgency=low
+
+  * package description improved (thanks Bas Zoetekouw <bas@debian.org>)
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Fri, 13 May 2005 13:46:44 +0200
+
+mercurial (0.4e-2) unstable; urgency=low
+
+  * update description
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Thu, 12 May 2005 23:32:43 +0200
+
+mercurial (0.4e-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Thu, 12 May 2005 23:13:54 +0200
+
+mercurial (0.4b-2) unstable; urgency=low
+
+  * add debian watch file
+  * add depend on tkdiff
+  * correct some lintian warnings
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Fri, 29 Apr 2005 12:59:33 +0200
+
+mercurial (0.4b-1) unstable; urgency=low
+
+  * Initial Release.
+
+ -- Vincent Danjean <Vincent.Danjean@ens-lyon.org>  Fri, 29 Apr 2005 08:54:25 +0200
diff --git a/control b/control
new file mode 100644 (file)
index 0000000..c1136ea
--- /dev/null
+++ b/control
@@ -0,0 +1,79 @@
+Source: mercurial
+Section: vcs
+Priority: optional
+Maintainer: Debian Python Team <team+python@tracker.debian.org>
+Uploaders:
+ Tristan Seligmann <mithrandi@debian.org>,
+ Julien Cristau <jcristau@debian.org>,
+Build-Depends:
+ bash-completion,
+ debhelper-compat (= 13),
+ dh-python,
+ gettext,
+ netbase <!nocheck>,
+ patchutils (>= 0.2.25) <!nocheck>,
+ python3-all-dev,
+ python3-docutils,
+ python3-roman,
+ python3-packaging <!nocheck>,
+ rename <!nocheck>,
+ unzip <!nocheck>,
+ zip <!nocheck>,
+ less <!nocheck>,
+Standards-Version: 4.5.0
+Homepage: https://www.mercurial-scm.org/
+Vcs-Git: https://salsa.debian.org/python-team/packages/mercurial.git
+Vcs-Browser: https://salsa.debian.org/python-team/packages/mercurial
+Rules-Requires-Root: no
+
+Package: mercurial-common
+Architecture: all
+Depends: ${misc:Depends}, ${python3:Depends}
+Recommends: ca-certificates, mercurial (>= ${source:Version}), sensible-utils
+Suggests: python3-mysqldb, python3-openssl, python3-pygments, wish
+Breaks: mercurial (<< ${source:Version})
+Replaces: mercurial (<< 2.6.3)
+Description: easy-to-use, scalable distributed version control system (common files)
+ Mercurial is a fast, lightweight Source Control Management system designed
+ for efficient handling of very large distributed projects.
+ .
+ This package contains the architecture independent components of Mercurial,
+ and is generally useless without the mercurial package.
+
+Package: mercurial
+Architecture: any
+Depends:
+ mercurial-common (= ${source:Version}),
+ ucf (>= 2.0020),
+ ${misc:Depends},
+ ${python3:Depends},
+ ${shlibs:Depends},
+Recommends: openssh-client
+Suggests: kdiff3 | kdiff3-qt | kompare | meld | tkcvs | mgdiff, qct
+Breaks:
+ hgsubversion (<= 1.9.3+git20190419+6a6ce-3),
+ hgview-common,
+ mercurial-crecord (<< 0.20151121-2~),
+ mercurial-git (<= 0.8.12-1.2),
+ qct,
+ mercurial-keyring (<= 1.3.0-1),
+ mercurial-server,
+ python-sphinx-patchqueue,
+ trac-mercurial,
+Provides: python3-mercurial
+Description: easy-to-use, scalable distributed version control system
+ Mercurial is a fast, lightweight Source Control Management system designed
+ for efficient handling of very large distributed projects.
+ .
+ Its features include:
+  * O(1) delta-compressed file storage and retrieval scheme
+  * Complete cross-indexing of files and changesets for efficient exploration
+    of project history
+  * Robust SHA1-based integrity checking and append-only storage model
+  * Decentralized development model with arbitrary merging between trees
+  * High-speed HTTP-based network merge protocol
+  * Easy-to-use command-line interface
+  * Integrated stand-alone web interface
+  * Small Python codebase
+ .
+ This package contains the architecture dependent files.
diff --git a/copyright b/copyright
new file mode 100644 (file)
index 0000000..1a05cbd
--- /dev/null
+++ b/copyright
@@ -0,0 +1,267 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: mercurial
+Source: http://www.selenic.com/mercurial/
+
+Files: *
+Copyright: 2005-2021, Olivia Mackall and many others.
+License: GPL-2+
+
+Files: contrib/python-zstandard/*
+Copyright: (c) 2016, Gregory Szorc
+License:
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+ .
+ 1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+ .
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ .
+ 3. Neither the name of the copyright holder nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Files: mercurial/thirdparty/selectors2.py
+Copyright: (c) 2017 Seth Michael Larson
+License:
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+ .
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+Files: mercurial/thirdparty/attr/*
+Copyright: (c) 2015 Hynek Schlawack
+License:
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+ .
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+Files: mercurial/thirdparty/cbor/*
+Copyright: (c) Alex Grönholm
+License:
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this
+ software and associated documentation files (the "Software"), to deal in the Software
+ without restriction, including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
+ to whom the Software is furnished to do so, subject to the following conditions:
+ .
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+ INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+ FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+Files: mercurial/thirdparty/concurrent/*
+Copyright: 2009 Brian Quinlan
+License:
+ PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
+ --------------------------------------------
+ .
+ 1. This LICENSE AGREEMENT is between the Python Software Foundation
+ ("PSF"), and the Individual or Organization ("Licensee") accessing and
+ otherwise using this software ("Python") in source or binary form and
+ its associated documentation.
+ .
+ 2. Subject to the terms and conditions of this License Agreement, PSF
+ hereby grants Licensee a nonexclusive, royalty-free, world-wide
+ license to reproduce, analyze, test, perform and/or display publicly,
+ prepare derivative works, distribute, and otherwise use Python
+ alone or in any derivative version, provided, however, that PSF's
+ License Agreement and PSF's notice of copyright, i.e., "Copyright (c)
+ 2001, 2002, 2003, 2004, 2005, 2006 Python Software Foundation; All Rights
+ Reserved" are retained in Python alone or in any derivative version
+ prepared by Licensee.
+ .
+ 3. In the event Licensee prepares a derivative work that is based on
+ or incorporates Python or any part thereof, and wants to make
+ the derivative work available to others as provided herein, then
+ Licensee hereby agrees to include in any such work a brief summary of
+ the changes made to Python.
+ .
+ 4. PSF is making Python available to Licensee on an "AS IS"
+ basis.  PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+ IMPLIED.  BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
+ DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
+ FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
+ INFRINGE ANY THIRD PARTY RIGHTS.
+ .
+ 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
+ FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
+ A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
+ OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+ .
+ 6. This License Agreement will automatically terminate upon a material
+ breach of its terms and conditions.
+ .
+ 7. Nothing in this License Agreement shall be deemed to create any
+ relationship of agency, partnership, or joint venture between PSF and
+ Licensee.  This License Agreement does not grant permission to use PSF
+ trademarks or trade name in a trademark sense to endorse or promote
+ products or services of Licensee, or any third party.
+ .
+ 8. By copying, installing or otherwise using Python, Licensee
+ agrees to be bound by the terms and conditions of this License
+ Agreement.
+
+Files: mercurial/thirdparty/xdiff/*
+Copyright: (C) 2003  Davide Libenzi
+License: LGPL-2.1+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+ .
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ Lesser General Public License for more details.
+ .
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, see
+ <http://www.gnu.org/licenses/>.
+ .
+ On Debian systems, the full text of the GNU Lesser General Public
+ License version 2.1 can be found in the file
+ `/usr/share/common-licenses/LGPL-2.1'.
+
+Files: mercurial/thirdparty/zope/*
+Copyright: 2001-2006 Zope Foundation and Contributors.
+License:
+ Zope Public License (ZPL) Version 2.1
+ .
+ A copyright notice accompanies this license document that identifies the
+ copyright holders.
+ .
+ This license has been certified as open source. It has also been designated as
+ GPL compatible by the Free Software Foundation (FSF).
+ .
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ .
+ 1. Redistributions in source code must retain the accompanying copyright
+ notice, this list of conditions, and the following disclaimer.
+ .
+ 2. Redistributions in binary form must reproduce the accompanying copyright
+ notice, this list of conditions, and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ .
+ 3. Names of the copyright holders must not be used to endorse or promote
+ products derived from this software without prior written permission from the
+ copyright holders.
+ .
+ 4. The right to distribute this software or to use it for any purpose does not
+ give you the right to use Servicemarks (sm) or Trademarks (tm) of the
+ copyright
+ holders. Use of them is covered by separate agreement with the copyright
+ holders.
+ .
+ 5. If any files are modified, you must cause the modified files to carry
+ prominent notices stating that you changed the files and the date of any
+ change.
+ .
+ Disclaimer
+ .
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY EXPRESSED
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+ EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Files: contrib/zsh_completion
+Copyright: 2005, 2006 Steve Borho <steve@borho.org>
+           2006-10 Brendan Cully <brendan@kublai.com>
+License:
+ Permission is hereby granted, without written agreement and without
+ licence or royalty fees, to use, copy, modify, and distribute this
+ software and to distribute modified versions of this software for any
+ purpose, provided that the above copyright notice and the following
+ two paragraphs appear in all copies of this software.
+ .
+ In no event shall the authors be liable to any party for direct,
+ indirect, special, incidental, or consequential damages arising out of
+ the use of this software and its documentation, even if the authors
+ have been advised of the possibility of such damage.
+ .
+ The authors specifically disclaim any warranties, including, but not
+ limited to, the implied warranties of merchantability and fitness for
+ a particular purpose.  The software provided hereunder is on an "as
+ is" basis, and the authors have no obligation to provide maintenance,
+ support, updates, enhancements, or modifications.
+
+
+Files: debian/*
+Copyright: 2005-2010, Vincent Danjean <vdanjean@debian.org>
+           2011-2015, Javi Merino <vicho@debian.org>
+           2017 Tristan Seligmann <mithrandi@debian.org>
+License: GPL-2+
+
+License: GPL-2+
+ This program is free software; you can redistribute it
+ and/or modify it under the terms of the GNU General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later
+ version.
+ .
+ This program is distributed in the hope that it will be
+ useful, but WITHOUT ANY WARRANTY; without even the implied
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE.  See the GNU General Public License for more
+ details.
+ .
+ You should have received a copy of the GNU General Public
+ License along with this package; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ Boston, MA  02110-1301 USA
+ .
+ On Debian systems, the full text of the GNU General Public
+ License version 2 can be found in the file
+ `/usr/share/common-licenses/GPL-2'.
diff --git a/gbp.conf b/gbp.conf
new file mode 100644 (file)
index 0000000..d20ac55
--- /dev/null
+++ b/gbp.conf
@@ -0,0 +1,5 @@
+[DEFAULT]
+debian-branch=debian/master
+
+[import-orig]
+pristine-tar = True
diff --git a/hgext.rc b/hgext.rc
new file mode 100644 (file)
index 0000000..7d4cc89
--- /dev/null
+++ b/hgext.rc
@@ -0,0 +1,125 @@
+# mercurial configuration file for bundled hg extensions
+# See hgrc(5) for more information
+
+# Extensions included in Mercurial listed in alphabetical order
+[extensions]
+
+# changeset access control
+# hgext.acl =
+
+# allow user-defined command aliases
+# hgext.alias =
+
+# provides the 'bookmarks' command
+# hgext.bookmarks =
+
+# bugzilla integration
+# requires python3-mysqldb
+# hgext.bugzilla =
+
+# show the children of the given or working dir revision
+# provides the 'children' command
+# hgext.children =
+
+# graph count of revisions grouped by template
+# provides the 'churn' command
+# hgext.churn =
+
+# add color output to status, qseries, and diff-related commands
+# hgext.color =
+
+# converts a foreign SCM to a Mercurial one
+# provides the 'convert' and 'debugsvnlog' commands
+# requires:
+# - bzr to convert from Bazaar
+# - cvs to convert from CVS
+# - darcs to convert from Darcs
+# - git to convert from Git
+# - tla to convert from GNU Arch
+# - monotone to convert from Monotone
+# - python3-subversion to convert from Subversion
+# hgext.convert =
+
+# external diff program support
+# hgext.extdiff =
+
+# pull and merge remote changes
+# provides the 'fetch' command
+# hgext.fetch =
+
+# GnuPG signing
+# provides the 'sign', 'sigcheck' and 'sigs' commands
+# requires gnupg
+# hgext.gpg =
+
+# show revision graphs in terminal windows
+# provides the 'glog' command
+# hgext.graphlog =
+
+# CIA notification hook
+# hgext.hgcia =
+
+# allows browsing the history of a repository in a graphical way
+# provides the 'view' command
+# requires wish
+# hgext.hgk =
+
+# syntax highlighting in hgweb
+# requires python3-pygments
+# hgext.highlight =
+
+# lets you split a merge into pieces
+# provides the 'imerge' command
+# hgext.imerge =
+
+# inotify-based status acceleration for Linux systems
+# provides the 'inserve' command
+# hgext.inotify =
+
+# allows you to change changelog and summary text
+# hgext.interhg =
+
+# CVS/RCS-like keyword expansion
+# hgext.keyword =
+
+# quilt-like patch queues
+# provides the 'q*' commands
+# hgext.mq =
+
+# email notifications
+# hgext.notify =
+
+# display output using a pager
+# hgext.pager =
+
+# make it easy to refer to the parent of a revision
+# hgext.parentrevspec =
+
+# send changes as series of email patches
+# provides the 'email' command
+# hgext.patchbomb =
+
+# removes files not known to mercurial
+# provides the 'purge' command
+# hgext.purge =
+
+# moves sets of revisions to a different ancestor
+# provides the 'rebase' command
+# hgext.rebase =
+
+# interactive change selection during commit
+# provides the 'record' command
+# hgext.record =
+
+# patch transplanting tool
+# provides the 'transplant' command
+# hgext.transplant =
+
+# non-Unicode MBCS filename support
+# hgext.win32mbcs =
+
+# Unix/Mac/DOS line ending conversion utilities
+# hgext.win32text =
+
+# mDNS/DNS-SD (Zeroconf) support for 'hg serve'
+# hgext.zeroconf =
diff --git a/hgext.rc.md5sums b/hgext.rc.md5sums
new file mode 100644 (file)
index 0000000..79d0bb3
--- /dev/null
@@ -0,0 +1,2 @@
+4c808ced6b7ddc2e3c1514703bc238b9  0.9.5-3
+80086669df3007b5b17d7d12efe03775  sarge
diff --git a/hgrc b/hgrc
new file mode 100644 (file)
index 0000000..dfc3400
--- /dev/null
+++ b/hgrc
@@ -0,0 +1,2 @@
+# system-wide mercurial configuration file
+# See hgrc(5) for more information
diff --git a/mercurial-common.bash-completion b/mercurial-common.bash-completion
new file mode 100644 (file)
index 0000000..6ba7c63
--- /dev/null
@@ -0,0 +1 @@
+contrib/bash_completion hg
diff --git a/mercurial-common.dirs b/mercurial-common.dirs
new file mode 100644 (file)
index 0000000..5e62736
--- /dev/null
@@ -0,0 +1 @@
+etc/mercurial/hgrc.d
diff --git a/mercurial-common.examples b/mercurial-common.examples
new file mode 100644 (file)
index 0000000..121193d
--- /dev/null
@@ -0,0 +1,14 @@
+contrib/dumprevlog
+contrib/hgsh
+contrib/hgweb.fcgi
+contrib/hgweb.wsgi
+contrib/mercurial.el
+contrib/perf.py
+contrib/python-hook-examples.py
+contrib/simplemerge
+contrib/tcsh_completion
+contrib/tcsh_completion_build.sh
+contrib/undumprevlog
+contrib/vim
+hgeditor
+hgweb.cgi
diff --git a/mercurial-common.install b/mercurial-common.install
new file mode 100644 (file)
index 0000000..814b85c
--- /dev/null
@@ -0,0 +1,9 @@
+contrib/hg-ssh usr/bin
+contrib/hgk usr/share/mercurial/
+contrib/logo-droplets.svg usr/share/mercurial
+contrib/mq.el usr/share/emacs/site-lisp
+debian/cacerts.rc etc/mercurial/hgrc.d/
+debian/hgrc etc/mercurial/
+debian/tmp/usr/lib
+contrib/packaging/debian/default-tools.rc etc/mercurial/hgrc.d/
+debian/tmp/usr/share
diff --git a/mercurial-common.maintscript b/mercurial-common.maintscript
new file mode 100644 (file)
index 0000000..8c11148
--- /dev/null
@@ -0,0 +1,2 @@
+rm_conffile /etc/bash_completion.d/mercurial 3.5.1-2~ mercurial-common
+rm_conffile /etc/mercurial/hgrc.d/mergetools.rc 4.7.2-1~ mercurial-common
diff --git a/mercurial-common.postinst b/mercurial-common.postinst
new file mode 100644 (file)
index 0000000..a084b9d
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+if [ "$1" = configure ]; then
+       if dpkg --compare-versions "$2" lt-nl 4.7.2-1~; then
+               if [ -f "/etc/mercurial/hgrc.d/mergetools.rc.dpkg-bak" ]; then
+                       mv /etc/mercurial/hgrc.d/mergetools.rc.dpkg-bak /etc/mercurial/hgrc.d/mergetools.rc
+               fi
+       fi
+fi
diff --git a/mercurial.dirs b/mercurial.dirs
new file mode 100644 (file)
index 0000000..dd45de9
--- /dev/null
@@ -0,0 +1 @@
+usr/share/doc/mercurial
diff --git a/mercurial.install b/mercurial.install
new file mode 100644 (file)
index 0000000..f1cfe1b
--- /dev/null
@@ -0,0 +1,5 @@
+debian/hgext.rc  usr/share/mercurial/
+debian/hgext.rc.md5sums  usr/share/mercurial/
+debian/tmp/usr/bin
+debian/tmp/usr/lib
+contrib/chg/chg /usr/bin
diff --git a/mercurial.links b/mercurial.links
new file mode 100644 (file)
index 0000000..6185003
--- /dev/null
@@ -0,0 +1 @@
+usr/share/doc/mercurial-common/examples usr/share/doc/mercurial/examples
diff --git a/mercurial.postinst b/mercurial.postinst
new file mode 100644 (file)
index 0000000..2eab2a9
--- /dev/null
@@ -0,0 +1,49 @@
+#!/bin/sh
+# postinst script for mercurial
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <postinst> `abort-remove'
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+case "$1" in
+    configure)
+       for conffile in hgext.rc; do
+         # Tell ucf that the file in /usr/share/mercurial is the latest maintainer
+         # version, and let it handle how to manage the real configuration file in
+         # /etc/mercurial/hgrc.d.
+         ucf --sum-file /usr/share/mercurial/$conffile.md5sums --three-way \
+               /usr/share/mercurial/$conffile /etc/mercurial/hgrc.d/$conffile
+         ucfr mercurial /etc/mercurial/hgrc.d/$conffile
+       done
+
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/mercurial.postrm b/mercurial.postrm
new file mode 100644 (file)
index 0000000..ee5e14c
--- /dev/null
@@ -0,0 +1,60 @@
+#!/bin/sh
+# postrm script for mercurial
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postrm> `remove'
+#        * <postrm> `purge'
+#        * <old-postrm> `upgrade' <new-version>
+#        * <new-postrm> `failed-upgrade' <old-version>
+#        * <new-postrm> `abort-install'
+#        * <new-postrm> `abort-install' <old-version>
+#        * <new-postrm> `abort-upgrade' <old-version>
+#        * <disappearer's-postrm> `disappear' <overwriter>
+#          <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    purge)
+       for conffile in hgext.rc; do
+           # we mimic dpkg as closely as possible, so we remove configuration
+           # files with dpkg backup extensions too:
+           ### Some of the following is from Tore Anderson:
+           for ext in '~' '%' .bak .dpkg-tmp .dpkg-new .dpkg-old .dpkg-dist .ucf-old .ucf-new .ucf-dist;  do
+                   rm -f /etc/mercurial/hgrc.d/$conffile$ext
+           done
+           # remove the configuration file itself
+           rm -f /etc/mercurial/hgrc.d/$conffile
+           # and finally clear it out from the ucf database
+           if which ucf >/dev/null; then
+                   ucf --purge /etc/mercurial/hgrc.d/$conffile
+           fi
+           if which ucfr >/dev/null; then
+                   ucfr --purge mercurial /etc/mercurial/hgrc.d/$conffile
+           fi
+        done
+
+    ;;
+
+    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+    ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/mercurial.test_blacklist b/mercurial.test_blacklist
new file mode 100644 (file)
index 0000000..13277cd
--- /dev/null
@@ -0,0 +1,38 @@
+# test-clonebundles.t fails in the reproducible-builds setup due to no
+#  name resolution:
+# --- /build/mercurial-3.7.2/tests/test-clonebundles.t
+# +++ /build/mercurial-3.7.2/tests/test-clonebundles.t.err
+# @@ -52,7 +52,7 @@
+#    $ echo 'http://does.not.exist/bundle.hg' > server/.hg/clonebundles.manifest
+#    $ hg clone http://localhost:$HGPORT 404-url
+#    applying clone bundle from http://does.not.exist/bundle.hg
+# -  error fetching bundle: (.* not known|getaddrinfo failed) (re)
+# +  error fetching bundle: Temporary failure in name resolution
+#    abort: error applying bundle
+#    (if this error persists, consider contacting the server operator or disable clone bundles via "--config ui.clonebundles=false")
+#    [255]
+#
+# ERROR: test-clonebundles.t output changed
+test-clonebundles.t
+
+# upstream don't run this test and it only fails when pyflakes is installed
+test-check-pyflakes.t
+
+# https://bz.mercurial-scm.org/show_bug.cgi?id=6294
+test-debugcommands.t
+
+# These tests are flaky, still need to investigate why:
+test-commandserver.t
+test-largefiles.t
+
+# We don't ship the git extension yet
+test-git-interop.t
+
+# https://bz.mercurial-scm.org/show_bug.cgi?id=6643
+test-http-bad-server.t
+
+# https://bz.mercurial-scm.org/show_bug.cgi?id=3782
+test-convert-cvs-synthetic.t
+
+# https://bz.mercurial-scm.org/show_bug.cgi?id=6783
+test-remotefilelog-gc.t
diff --git a/patches/0005-Tolerate-SIGINT-getting-the-kill-in-test-stdio.py.patch b/patches/0005-Tolerate-SIGINT-getting-the-kill-in-test-stdio.py.patch
new file mode 100644 (file)
index 0000000..3fd3f2c
--- /dev/null
@@ -0,0 +1,20 @@
+From: Tristan Seligmann <mithrandi@debian.org>
+Date: Mon, 17 Aug 2020 10:30:26 +0200
+Subject: Tolerate SIGINT getting the kill in test-stdio.py.
+
+Forwarded: https://bz.mercurial-scm.org/show_bug.cgi?id=6402
+---
+ tests/test-stdio.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/tests/test-stdio.py
++++ b/tests/test-stdio.py
+@@ -175,7 +175,7 @@ class TestStdio(unittest.TestCase):
+                 raise
+             finally:
+                 retcode = proc.wait()
+-            self.assertEqual(retcode, 0)
++            self.assertIn(retcode, [0, -2])
+             if post_child_check is not None:
+                 post_child_check()
diff --git a/patches/CVE-2025-2361.patch b/patches/CVE-2025-2361.patch
new file mode 100644 (file)
index 0000000..433393a
--- /dev/null
@@ -0,0 +1,341 @@
+# HG changeset patch
+# User Raphaël Gomès <rgomes@octobus.net>
+# Date 1742340720 -3600
+#      Wed Mar 19 00:32:00 2025 +0100
+# Branch stable
+# Node ID a5c72ed2929341d97b11968211c880854803f003
+# Parent  74439d1cbebaa9ff8f8300e37e93b42e6d381be4
+hgweb: fix XSS vulnerability in hgweb (CVE-2025-2361)
+
+818598f5bc8b91 is the change that introduced the vulnerability (in 2006!)
+that was disclosed to us, but I found a similar pattern in other places
+in the code.
+
+Since XSS escaping is actually hard and that would mean vendoring some
+better sanitation tool, I decided to simply remove user input from any
+HTML output in hgweb, hopefully in all places.
+
+---
+ mercurial/hgweb/hgweb_mod.py    |    5 ++-
+ mercurial/hgweb/webcommands.py  |   21 ++++++++++-----
+ tests/test-archive.t            |   54 ++++++++++++++++++++--------------------
+ tests/test-hgweb.t              |   10 +++----
+ tests/test-lfs-serve-access.t   |    4 +-
+ tests/test-remotefilelog-http.t |    4 +-
+ 6 files changed, 54 insertions(+), 44 deletions(-)
+
+--- a/mercurial/hgweb/hgweb_mod.py
++++ b/mercurial/hgweb/hgweb_mod.py
+@@ -455,7 +455,10 @@ class hgweb:
+                 res.headers[b'ETag'] = tag
+             if cmd not in webcommands.__all__:
+-                msg = b'no such method: %s' % cmd
++                msg = b'method not found'
++                # /!\ Do not print `cmd` here unless you do *extensive*
++                # escaping.
++                # Because XSS escaping is hard, we just don't risk it.
+                 raise ErrorResponse(HTTP_BAD_REQUEST, msg)
+             else:
+                 # Set some globals appropriate for web handlers. Commands can
+--- a/mercurial/hgweb/webcommands.py
++++ b/mercurial/hgweb/webcommands.py
+@@ -585,7 +585,9 @@ def manifest(web):
+             h[None] = None  # denotes files present
+     if mf and not files and not dirs:
+-        raise ErrorResponse(HTTP_NOT_FOUND, b'path not found: ' + path)
++        # /!\ Do not print `path` here unless you do *extensive* escaping.
++        # Because XSS escaping is hard, we just don't risk it.
++        raise ErrorResponse(HTTP_NOT_FOUND, b'path not found')
+     def filelist(context):
+         for f in sorted(files):
+@@ -1255,11 +1257,15 @@ def archive(web):
+     key = web.req.qsparams[b'node']
+     if type_ not in webutil.archivespecs:
+-        msg = b'Unsupported archive type: %s' % stringutil.pprint(type_)
++        # /!\ Do not print `type_` here unless you do *extensive* escaping.
++        # Because XSS escaping is hard, we just don't risk it.
++        msg = b'Unsupported archive type'
+         raise ErrorResponse(HTTP_NOT_FOUND, msg)
+-    if not ((type_ in allowed or web.configbool(b"web", b"allow" + type_))):
+-        msg = b'Archive type not allowed: %s' % type_
++    if not (type_ in allowed or web.configbool(b"web", b"allow" + type_)):
++        # /!\ Do not print `type_` here unless you do *extensive* escaping.
++        # Because XSS escaping is hard, we just don't risk it.
++        msg = b'Archive type not allowed'
+         raise ErrorResponse(HTTP_FORBIDDEN, msg)
+     reponame = re.sub(br"\W+", b"-", os.path.basename(web.reponame))
+@@ -1278,9 +1284,10 @@ def archive(web):
+         if pats:
+             files = [f for f in ctx.manifest().keys() if match(f)]
+             if not files:
+-                raise ErrorResponse(
+-                    HTTP_NOT_FOUND, b'file(s) not found: %s' % file
+-                )
++                # /!\ Do not print `files` here unless you do *extensive*
++                # escaping.
++                # Because XSS escaping is hard, we just don't risk it.
++                raise ErrorResponse(HTTP_NOT_FOUND, b'file(s) not found')
+     mimetype, artype, extension, encoding = webutil.archivespecs[type_]
+--- a/tests/test-archive.t
++++ b/tests/test-archive.t
+@@ -135,22 +135,22 @@ check http return codes
+   body: size=506, sha1=70926a04cb8887d0bcccf5380488100a10222def (py38 no-py39 !)
+   body: size=505, sha1=eb823c293bedff0df4070b854e2c5cbb06d6ec62 (py39 !)
+   % tar.bz2 and zip disallowed should both give 403
+-  403 Archive type not allowed: bz2
++  403 Archive type not allowed
+   content-type: text/html; charset=ascii
+   date: $HTTP_DATE$
+   etag: W/"*" (glob)
+   server: testing stub value
+   transfer-encoding: chunked
+   
+-  body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
+-  403 Archive type not allowed: zip
++  body: size=1446, sha1=023cb60af79cf672217fbae8ecf20ad4b7472c9d
++  403 Archive type not allowed
+   content-type: text/html; charset=ascii
+   date: $HTTP_DATE$
+   etag: W/"*" (glob)
+   server: testing stub value
+   transfer-encoding: chunked
+   
+-  body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
++  body: size=1446, sha1=023cb60af79cf672217fbae8ecf20ad4b7472c9d
+   $ test_archtype bz2 tar.bz2 zip tar.gz
+   % bz2 allowed should give 200
+   200 Script output follows
+@@ -165,22 +165,22 @@ check http return codes
+   body: size=506, sha1=1bd1f8e8d3701704bd4385038bd9c09b81c77f4e (py38 no-py39 !)
+   body: size=503, sha1=2d8ce8bb3816603b9683a1804a5a02c11224cb01 (py39 !)
+   % zip and tar.gz disallowed should both give 403
+-  403 Archive type not allowed: zip
++  403 Archive type not allowed
+   content-type: text/html; charset=ascii
+   date: $HTTP_DATE$
+   etag: W/"*" (glob)
+   server: testing stub value
+   transfer-encoding: chunked
+   
+-  body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
+-  403 Archive type not allowed: gz
++  body: size=1446, sha1=023cb60af79cf672217fbae8ecf20ad4b7472c9d
++  403 Archive type not allowed
+   content-type: text/html; charset=ascii
+   date: $HTTP_DATE$
+   etag: W/"*" (glob)
+   server: testing stub value
+   transfer-encoding: chunked
+   
+-  body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
++  body: size=1446, sha1=023cb60af79cf672217fbae8ecf20ad4b7472c9d
+   $ test_archtype zip zip tar.gz tar.bz2
+   % zip allowed should give 200
+   200 Script output follows
+@@ -193,22 +193,22 @@ check http return codes
+   
+   body: size=(1377|1461|1489), sha1=(677b14d3d048778d5eb5552c14a67e6192068650|be6d3983aa13dfe930361b2569291cdedd02b537|1897e496871aa89ad685a92b936f5fa0d008b9e8) (re)
+   % tar.gz and tar.bz2 disallowed should both give 403
+-  403 Archive type not allowed: gz
++  403 Archive type not allowed
+   content-type: text/html; charset=ascii
+   date: $HTTP_DATE$
+   etag: W/"*" (glob)
+   server: testing stub value
+   transfer-encoding: chunked
+   
+-  body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
+-  403 Archive type not allowed: bz2
++  body: size=1446, sha1=023cb60af79cf672217fbae8ecf20ad4b7472c9d
++  403 Archive type not allowed
+   content-type: text/html; charset=ascii
+   date: $HTTP_DATE$
+   etag: W/"*" (glob)
+   server: testing stub value
+   transfer-encoding: chunked
+   
+-  body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
++  body: size=1446, sha1=023cb60af79cf672217fbae8ecf20ad4b7472c9d
+ check http return codes (with deprecated option)
+@@ -226,22 +226,22 @@ check http return codes (with deprecated
+   body: size=506, sha1=70926a04cb8887d0bcccf5380488100a10222def (py38 no-py39 !)
+   body: size=505, sha1=eb823c293bedff0df4070b854e2c5cbb06d6ec62 (py39 !)
+   % tar.bz2 and zip disallowed should both give 403
+-  403 Archive type not allowed: bz2
++  403 Archive type not allowed
+   content-type: text/html; charset=ascii
+   date: $HTTP_DATE$
+   etag: W/"*" (glob)
+   server: testing stub value
+   transfer-encoding: chunked
+   
+-  body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
+-  403 Archive type not allowed: zip
++  body: size=1446, sha1=023cb60af79cf672217fbae8ecf20ad4b7472c9d
++  403 Archive type not allowed
+   content-type: text/html; charset=ascii
+   date: $HTTP_DATE$
+   etag: W/"*" (glob)
+   server: testing stub value
+   transfer-encoding: chunked
+   
+-  body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
++  body: size=1446, sha1=023cb60af79cf672217fbae8ecf20ad4b7472c9d
+   $ test_archtype_deprecated bz2 tar.bz2 zip tar.gz
+   % bz2 allowed should give 200
+   200 Script output follows
+@@ -256,22 +256,22 @@ check http return codes (with deprecated
+   body: size=506, sha1=1bd1f8e8d3701704bd4385038bd9c09b81c77f4e (py38 no-py39 !)
+   body: size=503, sha1=2d8ce8bb3816603b9683a1804a5a02c11224cb01 (py39 !)
+   % zip and tar.gz disallowed should both give 403
+-  403 Archive type not allowed: zip
++  403 Archive type not allowed
+   content-type: text/html; charset=ascii
+   date: $HTTP_DATE$
+   etag: W/"*" (glob)
+   server: testing stub value
+   transfer-encoding: chunked
+   
+-  body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
+-  403 Archive type not allowed: gz
++  body: size=1446, sha1=023cb60af79cf672217fbae8ecf20ad4b7472c9d
++  403 Archive type not allowed
+   content-type: text/html; charset=ascii
+   date: $HTTP_DATE$
+   etag: W/"*" (glob)
+   server: testing stub value
+   transfer-encoding: chunked
+   
+-  body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
++  body: size=1446, sha1=023cb60af79cf672217fbae8ecf20ad4b7472c9d
+   $ test_archtype_deprecated zip zip tar.gz tar.bz2
+   % zip allowed should give 200
+   200 Script output follows
+@@ -284,22 +284,22 @@ check http return codes (with deprecated
+   
+   body: size=(1377|1461|1489), sha1=(677b14d3d048778d5eb5552c14a67e6192068650|be6d3983aa13dfe930361b2569291cdedd02b537|1897e496871aa89ad685a92b936f5fa0d008b9e8) (re)
+   % tar.gz and tar.bz2 disallowed should both give 403
+-  403 Archive type not allowed: gz
++  403 Archive type not allowed
+   content-type: text/html; charset=ascii
+   date: $HTTP_DATE$
+   etag: W/"*" (glob)
+   server: testing stub value
+   transfer-encoding: chunked
+   
+-  body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
+-  403 Archive type not allowed: bz2
++  body: size=1446, sha1=023cb60af79cf672217fbae8ecf20ad4b7472c9d
++  403 Archive type not allowed
+   content-type: text/html; charset=ascii
+   date: $HTTP_DATE$
+   etag: W/"*" (glob)
+   server: testing stub value
+   transfer-encoding: chunked
+   
+-  body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
++  body: size=1446, sha1=023cb60af79cf672217fbae8ecf20ad4b7472c9d
+   $ echo "allow-archive = gz bz2 zip" >> .hg/hgrc
+   $ hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log
+@@ -315,7 +315,7 @@ check archive links' order
+ invalid arch type should give 404
+   $ get-with-headers.py localhost:$HGPORT "archive/tip.invalid" | head -n 1
+-  404 Unsupported archive type: None
++  404 Unsupported archive type
+   $ TIP=`hg id -v | cut -f1 -d' '`
+   $ QTIP=`hg id -q`
+@@ -386,12 +386,12 @@ test that we can download single directo
+ test that we detect file patterns that match no files
+   $ "$PYTHON" getarchive.py "$TIP" gz foobar
+-  HTTP Error 404: file(s) not found: foobar
++  HTTP Error 404: file(s) not found
+ test that we reject unsafe patterns
+   $ "$PYTHON" getarchive.py "$TIP" gz relre:baz
+-  HTTP Error 404: file(s) not found: relre:baz
++  HTTP Error 404: file(s) not found
+   $ killdaemons.py
+--- a/tests/test-hgweb.t
++++ b/tests/test-hgweb.t
+@@ -122,25 +122,25 @@ should give a 400 - bad command
+   400* (glob)
+   
+   
+-  error: no such method: spam
++  error: method not found
+   [1]
+   $ get-with-headers.py --headeronly localhost:$HGPORT '?cmd=spam'
+-  400 no such method: spam
++  400 method not found
+   [1]
+ should give a 400 - bad command as a part of url path (issue4071)
+   $ get-with-headers.py --headeronly localhost:$HGPORT 'spam'
+-  400 no such method: spam
++  400 method not found
+   [1]
+   $ get-with-headers.py --headeronly localhost:$HGPORT 'raw-spam'
+-  400 no such method: spam
++  400 method not found
+   [1]
+   $ get-with-headers.py --headeronly localhost:$HGPORT 'spam/tip/foo'
+-  400 no such method: spam
++  400 method not found
+   [1]
+ should give a 404 - file does not exist
+--- a/tests/test-lfs-serve-access.t
++++ b/tests/test-lfs-serve-access.t
+@@ -30,7 +30,7 @@ Uploads fail...
+   $ hg -R client push http://localhost:$HGPORT
+   pushing to http://localhost:$HGPORT/
+   searching for changes
+-  abort: LFS HTTP error: HTTP Error 400: no such method: .git
++  abort: LFS HTTP error: HTTP Error 400: method not found
+   (check that lfs serving is enabled on http://localhost:$HGPORT/.git/info/lfs and "upload" is supported)
+   [50]
+@@ -52,7 +52,7 @@ Downloads fail...
+   added 1 changesets with 1 changes to 1 files
+   new changesets 525251863cad
+   updating to branch default
+-  abort: LFS HTTP error: HTTP Error 400: no such method: .git
++  abort: LFS HTTP error: HTTP Error 400: method not found
+   (check that lfs serving is enabled on http://localhost:$HGPORT/.git/info/lfs and "download" is supported)
+   [50]
+--- a/tests/test-remotefilelog-http.t
++++ b/tests/test-remotefilelog-http.t
+@@ -44,9 +44,9 @@ as the getfile method it offers doesn't
+   x_rfl_getflogheads
+   $ get-with-headers.py localhost:$HGPORT '?cmd=this-command-does-not-exist' | head -n 1
+-  400 no such method: this-command-does-not-exist
++  400 method not found
+   $ get-with-headers.py localhost:$HGPORT '?cmd=x_rfl_getfiles' | head -n 1
+-  400 no such method: x_rfl_getfiles
++  400 method not found
+ Verify serving from a shallow clone doesn't allow for remotefile
+ fetches. This also serves to test the error handling for our batchable
diff --git a/patches/cgitb.patch b/patches/cgitb.patch
new file mode 100644 (file)
index 0000000..56e5af0
--- /dev/null
@@ -0,0 +1,189 @@
+https://bz.mercurial-scm.org/show_bug.cgi?id=6784
+
+diff --git a/tests/test-clone-cgi.t b/tests/test-clone-cgi.t
+--- a/tests/test-clone-cgi.t
++++ b/tests/test-clone-cgi.t
+@@ -7,31 +7,29 @@ initialize repository
+   $ cd test
+   $ echo a > a
+   $ hg ci -Ama
+   adding a
+   $ cd ..
+   $ cat >hgweb.cgi <<HGWEB
+   > #
+   > # An example CGI script to use hgweb, edit as necessary
+-  > import cgitb
+-  > cgitb.enable()
+   > from mercurial import demandimport; demandimport.enable()
+   > from mercurial.hgweb import hgweb
+   > from mercurial.hgweb import wsgicgi
+   > application = hgweb(b"test", b"Empty test repository")
+   > wsgicgi.launch(application)
+   > HGWEB
+   $ chmod 755 hgweb.cgi
+ try hgweb request
+   $ . "$TESTDIR/cgienv"
+   $ QUERY_STRING="cmd=changegroup&roots=0000000000000000000000000000000000000000"; export QUERY_STRING
+-  $ "$PYTHON" hgweb.cgi >page1 2>&1
++  $ "$PYTHON" hgweb.cgi >page1
+   $ "$PYTHON" "$TESTDIR/md5sum.py" page1
+   1f424bb22ec05c3c6bc866b6e67efe43  page1
+ make sure headers are sent even when there is no body
+   $ QUERY_STRING="cmd=listkeys&namespace=nosuchnamespace" "$PYTHON" hgweb.cgi
+   Status: 200 Script output follows\r (esc)
+   Content-Type: application/mercurial-0.1\r (esc)
+diff --git a/tests/test-newcgi.t b/tests/test-newcgi.t
+--- a/tests/test-newcgi.t
++++ b/tests/test-newcgi.t
+@@ -4,19 +4,16 @@ This tests if CGI files from after d0db3
+ before d74fc8dec2b4 still work.
+   $ hg init test
+   $ cat >hgweb.cgi <<HGWEB
+   > #!$PYTHON
+   > #
+   > # An example CGI script to use hgweb, edit as necessary
+   > 
+-  > import cgitb
+-  > cgitb.enable()
+-  > 
+   > from mercurial import demandimport; demandimport.enable()
+   > from mercurial.hgweb import hgweb
+   > from mercurial.hgweb import wsgicgi
+   > from mercurial.hgweb.request import wsgiapplication
+   > 
+   > def make_web_app():
+   >     return hgweb(b"test", b"Empty test repository")
+   > 
+@@ -30,19 +27,16 @@ before d74fc8dec2b4 still work.
+   > test = test
+   > HGWEBDIRCONF
+   $ cat >hgwebdir.cgi <<HGWEBDIR
+   > #!$PYTHON
+   > #
+   > # An example CGI script to export multiple hgweb repos, edit as necessary
+   > 
+-  > import cgitb
+-  > cgitb.enable()
+-  > 
+   > from mercurial import demandimport; demandimport.enable()
+   > from mercurial.hgweb import hgwebdir
+   > from mercurial.hgweb import wsgicgi
+   > from mercurial.hgweb.request import wsgiapplication
+   > 
+   > def make_web_app():
+   >     return hgwebdir(b"hgweb.config")
+   > 
+diff --git a/tests/test-newercgi.t b/tests/test-newercgi.t
+--- a/tests/test-newercgi.t
++++ b/tests/test-newercgi.t
+@@ -4,19 +4,16 @@ This is a rudimentary test of the CGI fi
+   $ hg init test
+   $ cat >hgweb.cgi <<HGWEB
+   > #!$PYTHON
+   > #
+   > # An example CGI script to use hgweb, edit as necessary
+   > 
+-  > import cgitb
+-  > cgitb.enable()
+-  > 
+   > from mercurial import demandimport; demandimport.enable()
+   > from mercurial.hgweb import hgweb
+   > from mercurial.hgweb import wsgicgi
+   > 
+   > application = hgweb(b"test", b"Empty test repository")
+   > wsgicgi.launch(application)
+   > HGWEB
+@@ -27,19 +24,16 @@ This is a rudimentary test of the CGI fi
+   > test = test
+   > HGWEBDIRCONF
+   $ cat >hgwebdir.cgi <<HGWEBDIR
+   > #!$PYTHON
+   > #
+   > # An example CGI script to export multiple hgweb repos, edit as necessary
+   > 
+-  > import cgitb
+-  > cgitb.enable()
+-  > 
+   > from mercurial import demandimport; demandimport.enable()
+   > from mercurial.hgweb import hgwebdir
+   > from mercurial.hgweb import wsgicgi
+   > 
+   > application = hgwebdir(b"hgweb.config")
+   > wsgicgi.launch(application)
+   > HGWEBDIR
+diff --git a/tests/test-oldcgi.t b/tests/test-oldcgi.t
+--- a/tests/test-oldcgi.t
++++ b/tests/test-oldcgi.t
+@@ -3,19 +3,16 @@
+ This tests if CGI files from before d0db3462d568 still work.
+   $ hg init test
+   $ cat >hgweb.cgi <<HGWEB
+   > #!"$PYTHON"
+   > #
+   > # An example CGI script to use hgweb, edit as necessary
+   > 
+-  > import cgitb, os, sys
+-  > cgitb.enable()
+-  > 
+   > # sys.path.insert(0, "/path/to/python/lib") # if not a system-wide install
+   > from mercurial import hgweb
+   > 
+   > h = hgweb.hgweb(b"test", b"Empty test repository")
+   > h.run()
+   > HGWEB
+   $ chmod 755 hgweb.cgi
+@@ -25,19 +22,16 @@ This tests if CGI files from before d0db
+   > test = test
+   > HGWEBDIRCONF
+   $ cat >hgwebdir.cgi <<HGWEBDIR
+   > #!"$PYTHON"
+   > #
+   > # An example CGI script to export multiple hgweb repos, edit as necessary
+   > 
+-  > import cgitb, sys
+-  > cgitb.enable()
+-  > 
+   > # sys.path.insert(0, "/path/to/python/lib") # if not a system-wide install
+   > from mercurial import hgweb
+   > 
+   > # The config file looks like this.  You can have paths to individual
+   > # repos, collections of repos in a directory tree, or both.
+   > #
+   > # [paths]
+   > # virtual/path = /real/path
+diff --git a/tests/test-push-cgi.t b/tests/test-push-cgi.t
+--- a/tests/test-push-cgi.t
++++ b/tests/test-push-cgi.t
+@@ -11,18 +11,16 @@ initialize repository
+   adding a
+   $ echo '[web]' > .hg/hgrc
+   $ echo 'allow_push = *' >> .hg/hgrc
+   $ echo 'push_ssl = false' >> .hg/hgrc
+ create hgweb invocation script
+   $ cat >hgweb.cgi <<HGWEB
+-  > import cgitb
+-  > cgitb.enable()
+   > from mercurial import demandimport; demandimport.enable()
+   > from mercurial.hgweb import hgweb
+   > from mercurial.hgweb import wsgicgi
+   > application = hgweb(b'.', b'test repository')
+   > wsgicgi.launch(application)
+   > HGWEB
+   $ chmod 755 hgweb.cgi
diff --git a/patches/deb_specific__disable_libdir_replacement.patch b/patches/deb_specific__disable_libdir_replacement.patch
new file mode 100644 (file)
index 0000000..d39010e
--- /dev/null
@@ -0,0 +1,27 @@
+From: Stefano Rivera <stefanor@debian.org>
+Date: Sun, 16 Aug 2020 11:03:07 +0200
+Subject: Disabled hginstallscripts @LIBDIR@ replacement in setup.py.
+
+Bug-Debian: http://bugs.debian.org/620087
+Bug-Ubuntu: https://bugs.launchpad.net/bugs/745250
+Forwarded: not-needed
+
+setup.py replaces @LIBDIR@ in the hg script, with a path that differs between
+Python versions.
+libdir in hg doesn't need to be set if mercurial is available in the public
+namespace, as it is in Debian.
+hg doesn't alter sys.paths if this replacement hasn't happened.
+---
+ setup.py |    1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/setup.py
++++ b/setup.py
+@@ -1239,7 +1239,6 @@ cmdclass = {
+     'install': hginstall,
+     'install_completion': hginstallcompletion,
+     'install_lib': hginstalllib,
+-    'install_scripts': hginstallscripts,
+     'build_hgexe': buildhgexe,
+ }
diff --git a/patches/deb_specific__hgk.py.patch b/patches/deb_specific__hgk.py.patch
new file mode 100644 (file)
index 0000000..a5cb0a7
--- /dev/null
@@ -0,0 +1,21 @@
+From: Python Applications Packaging Team
+ <python-apps-team@lists.alioth.debian.org>
+Date: Sun, 16 Aug 2020 11:03:07 +0200
+Subject: deb_specific__hgk.py
+
+Set default hgk path for hgk outside bin.
+---
+ hgext/hgk.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/hgext/hgk.py
++++ b/hgext/hgk.py
+@@ -65,7 +65,7 @@ configitem = registrar.configitem(config
+ configitem(
+     b'hgk',
+     b'path',
+-    default=b'hgk',
++    default=b'/usr/share/mercurial/hgk',
+ )
diff --git a/patches/deb_specific__optional-dependencies b/patches/deb_specific__optional-dependencies
new file mode 100644 (file)
index 0000000..3aa3f07
--- /dev/null
@@ -0,0 +1,183 @@
+From: Python Applications Packaging Team
+ <python-apps-team@lists.alioth.debian.org>
+Date: Sun, 16 Aug 2020 11:03:07 +0200
+Subject: deb_specific__optional-dependencies
+
+Suggest Debian packages for some optional dependencies.
+---
+ hgext/bugzilla.py           |  3 ++-
+ hgext/convert/bzr.py        |  3 ++-
+ hgext/convert/common.py     |  5 +++--
+ hgext/convert/cvs.py        |  2 +-
+ hgext/convert/darcs.py      |  2 +-
+ hgext/convert/git.py        |  2 +-
+ hgext/convert/gnuarch.py    |  3 ++-
+ hgext/convert/monotone.py   |  2 +-
+ hgext/convert/subversion.py | 11 ++++++++---
+ mercurial/sslutil.py        |  3 ++-
+ tests/test-https.t          |  2 +-
+ 11 files changed, 24 insertions(+), 14 deletions(-)
+
+--- a/hgext/bugzilla.py
++++ b/hgext/bugzilla.py
+@@ -503,7 +503,8 @@ class bzmysql(bzaccess):
+             bzmysql._MySQLdb = mysql
+         except ImportError as err:
+             raise error.Abort(
+-                _(b'python mysql support not available: %s') % err
++                _(b'python mysql support not available: %s') % err +
++                _(b' (try installing the %s package)') % b'python3-mysqldb'
+             )
+         bzaccess.__init__(self, ui)
+--- a/hgext/convert/bzr.py
++++ b/hgext/convert/bzr.py
+@@ -62,7 +62,8 @@ class bzr_source(common.converter_source
+             # access breezy stuff
+             bzrdir
+         except NameError:
+-            raise common.NoRepo(_(b'Bazaar modules could not be loaded'))
++            raise common.NoRepo(_(b'Bazaar modules could not be loaded') +
++                                _(b' (try installing the %s package)') % b'bzr')
+         path = util.abspath(path)
+         self._checkrepotype(path)
+--- a/hgext/convert/common.py
++++ b/hgext/convert/common.py
+@@ -89,14 +89,15 @@ class MissingTool(Exception):
+     pass
+-def checktool(exe, name=None, abort=True):
++def checktool(exe, name=None, abort=True, debname=None):
+     name = name or exe
+     if not procutil.findexe(exe):
+         if abort:
+             exc = error.Abort
+         else:
+             exc = MissingTool
+-        raise exc(_(b'cannot find required "%s" tool') % name)
++        raise exc(_(b'cannot find required "%s" tool') % name +
++                  (debname and _(b' (try installing the %s package)') % debname or b''))
+ class NoRepo(Exception):
+--- a/hgext/convert/cvs.py
++++ b/hgext/convert/cvs.py
+@@ -46,7 +46,7 @@ class convert_cvs(converter_source):
+         if not os.path.exists(cvs):
+             raise NoRepo(_(b"%s does not look like a CVS checkout") % path)
+-        checktool(b'cvs')
++        checktool(b'cvs', debname=b'cvs')
+         self.changeset = None
+         self.files = {}
+--- a/hgext/convert/darcs.py
++++ b/hgext/convert/darcs.py
+@@ -35,7 +35,7 @@ class darcs_source(common.converter_sour
+         if not os.path.exists(os.path.join(path, b'_darcs')):
+             raise NoRepo(_(b"%s does not look like a darcs repository") % path)
+-        common.checktool(b'darcs')
++        common.checktool(b'darcs', debname=b'darcs')
+         version = self.run0(b'--version').splitlines()[0].strip()
+         if version < b'2.1':
+             raise error.Abort(
+--- a/hgext/convert/git.py
++++ b/hgext/convert/git.py
+@@ -100,7 +100,7 @@ class convert_git(common.converter_sourc
+         else:
+             self.simopt = []
+-        common.checktool(b'git', b'git')
++        common.checktool(b'git', b'git', debname=b'git')
+         self.path = path
+         self.submodules = []
+--- a/hgext/convert/gnuarch.py
++++ b/hgext/convert/gnuarch.py
+@@ -56,7 +56,8 @@ class gnuarch_source(common.converter_so
+             if procutil.findexe(b'tla'):
+                 self.execmd = b'tla'
+             else:
+-                raise error.Abort(_(b'cannot find a GNU Arch tool'))
++                raise error.Abort(_(b'cannot find a GNU Arch tool') +
++                                  _(b' (try installing the %s package)') % b'tla')
+         common.commandline.__init__(self, ui, self.execmd)
+--- a/hgext/convert/monotone.py
++++ b/hgext/convert/monotone.py
+@@ -86,7 +86,7 @@ class monotone_source(common.converter_s
+         self.files = None
+         self.dirs = None
+-        common.checktool(b'mtn', abort=False)
++        common.checktool(b'mtn', abort=False, debname=b'monotone')
+     def mtnrun(self, *args, **kwargs):
+         if self.automatestdio:
+--- a/hgext/convert/subversion.py
++++ b/hgext/convert/subversion.py
+@@ -474,7 +474,8 @@ class svn_source(converter_source):
+                 _(b"%s does not look like a Subversion repository") % url
+             )
+         if svn is None:
+-            raise MissingTool(_(b'could not load Subversion python bindings'))
++            raise MissingTool(_(b'could not load Subversion python bindings') +
++                              _(b' (try installing the %s package)') % b'python3-subversion')
+         try:
+             version = svn.core.SVN_VER_MAJOR, svn.core.SVN_VER_MINOR
+@@ -484,14 +485,16 @@ class svn_source(converter_source):
+                         b'Subversion python bindings %d.%d found, '
+                         b'1.4 or later required'
+                     )
+-                    % version
++                    % version +
++                    _(b' (try upgrading the %s package)') % b'python-subversion'
+                 )
+         except AttributeError:
+             raise MissingTool(
+                 _(
+                     b'Subversion python bindings are too old, 1.4 '
+                     b'or later required'
+-                )
++                ) +
++                _(b' (try upgrading the %s package)') % b'python-subversion'
+             )
+         self.lastrevs = {}
+@@ -1416,6 +1419,8 @@ class svn_sink(converter_sink, commandli
+         return self.join(b'hg-authormap')
+     def __init__(self, ui, repotype, path):
++        common.checktool(b'svn', debname=b'subversion')
++        common.checktool(b'svnadmin', debname=b'subversion')
+         converter_sink.__init__(self, ui, repotype, path)
+         commandline.__init__(self, ui, b'svn')
+--- a/mercurial/sslutil.py
++++ b/mercurial/sslutil.py
+@@ -207,7 +207,8 @@ def _hostsettings(ui, hostname):
+                 cafile = util.expandpath(cafile)
+                 if not os.path.exists(cafile):
+                     raise error.Abort(
+-                        _(b'could not find web.cacerts: %s') % cafile
++                        _(b'could not find web.cacerts: %s') % cafile +
++                        _(b' (try installing the %s package)') % b'ca-certificates'
+                     )
+             elif s[b'allowloaddefaultcerts']:
+                 # CAs not defined in config. Try to find system bundles.
+--- a/tests/test-https.t
++++ b/tests/test-https.t
+@@ -34,7 +34,7 @@ Make server certificates:
+ cacert not found
+   $ hg in --config web.cacerts=no-such.pem https://localhost:$HGPORT/
+-  abort: could not find web.cacerts: no-such.pem
++  abort: could not find web.cacerts: no-such.pem (try installing the ca-certificates package)
+   [255]
+ Test server address cannot be reused
diff --git a/patches/from_upstream_stable.patch b/patches/from_upstream_stable.patch
new file mode 100644 (file)
index 0000000..5711ee9
--- /dev/null
@@ -0,0 +1,1540 @@
+diff --git a/.hgsigs b/.hgsigs
+--- a/.hgsigs
++++ b/.hgsigs
+@@ -232,8 +232,9 @@ 0cc5f74ff7f0f4ac2427096bddbe102dbc2453ae
+ 288de6f5d724bba7bf1669e2838f196962bb7528 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmKrVSEZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVqfUDACWYt2x2yNeb3SgCQsMhntFoKgwZ/CKFpiaz8W6jYij4mnwwWNAcflJAG3NJPK1I4RJrQky+omTmoc7dTAxfbjds7kA8AsXrVIFyP7HV5OKLEACWEAlCrtBLoj+gSYwO+yHQD7CnWqcMqYocHzsfVIr6qT9QQMlixP4lCiKh8ZrwPRGameONVfDBdL+tzw/WnkA5bVeRIlGpHoPe1y7xjP1kfj0a39aDezOcNqzxnzCuhpi+AC1xOpGi9ZqYhF6CmcDVRW6m7NEonbWasYpefpxtVa1xVreI1OIeBO30l7OsPI4DNn+dUpA4tA2VvvU+4RMsHPeT5R2VadXjF3xoH1LSdxv5fSKmRDr98GSwC5MzvTgMzskfMJ3n4Z7jhfPUz4YW4DBr71H27b1Mfdnl2cwXyT/0fD9peBWXe4ZBJ6VegPBUOjuIu0lUyfk7Zj9zb6l1AZC536Q1KolJPswQm9VyrX9Mtk70s0e1Fp3q1oohZVxdLPQvpR4empP0WMdPgg=
+ 094a5fa3cf52f936e0de3f1e507c818bee5ece6b 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmLL1jYZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVn4gC/9Ls9JQEQrJPVfqp9+VicJIUUww/aKYWedlQJOlv4oEQJzYQQU9WfJq2d9OAuX2+cXCo7BC+NdjhjKjv7n0+gK0HuhfYYUoXiJvcfa4GSeEyxxnDf55lBCDxURstVrExU7c5OKiG+dPcsTPdvRdkpeAT/4gaewZ1cR0yZILNjpUeSWzQ7zhheXqfooyVkubdZY60XCNo9cSosOl1beNdNB/K5OkCNcYOa2AbiBY8XszQTCc+OU8tj7Ti8LGLZTW2vGD1QdVmqEPhtSQzRvcjbcRPoqXy/4duhN5V6QQ/O57hEF/6m3lXbCzNUDTqBw14Q3+WyLBR8npVwG7LXTCPuTtgv8Pk1ZBqY1UPf67xQu7WZN3EGWc9yuRKGkdetjZ09PJL7dcxctBkje3kQKmv7sdtCEo2DTugw38WN4beQA2hBKgqdUQVjfL+BbD48V+RnTdB4N0Hp7gw0gQdYsI14ZNe5wWhw98COi443dlVgKFl4jriVNM8aS1TQVOy15xyxA=
+ f69bffd00abe3a1b94d1032eb2c92e611d16a192 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmLifPsZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVukEC/oCa6AzaJlWh6G45Ap7BCWyB3EDWmcep07W8zRTfHQuuXslNFxRfj8O1DLVP05nDa1Uo2u1nkDxTH+x1fX0q4G8U/yLzCNsiBkCWSeEM8IeolarzzzvFe9Zk+UoRoRlc+vKAjxChtYTEnggQXjLdK+EdbXfEz2kJwdYlGX3lLr0Q2BKnBjSUvFe1Ma/1wxEjZIhDr6t7o8I/49QmPjK7RCYW1WBv77gnml0Oo8cxjDUR9cjqfeKtXKbMJiCsoXCS0hx3vJkBOzcs4ONEIw934is38qPNBBsaUjMrrqm0Mxs6yFricYqGVpmtNijsSRsfS7ZgNfaGaC2Bnu1E7P0A+AzPMPf/BP4uW9ixMbP1hNdr/6N41n19lkdjyQXVWGhB8RM+muf3jc6ZVvgZPMlxvFiz4/rP9nVOdrB96ssFZ9V2Ca/j2tU40AOgjI6sYsAR8pSSgmIdqe+DZQISHTT8D+4uVbtwYD49VklBcxudlbd3dAc5z9rVI3upsyByfRMROc=
+ b5c8524827d20fe2e0ca8fb1234a0fe35a1a36c7 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmMQxRoZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVm2gC/9HikIaOE49euIoLj6ctYsJY9PSQK4Acw7BXvdsTVMmW27o87NxH75bGBbmPQ57X1iuKLCQ1RoU3p2Eh1gPbkIsouWO3enBIfsFmkPtWQz28zpCrI9CUXg2ug4PGFPN9XyxNmhJ7vJ4Cst2tRxz9PBKUBO2EXJN1UKIdMvurIeT2sQrDQf1ePc85QkXx79231wZyF98smnV7UYU9ZPFnAzfcuRzdFn7UmH3KKxHTZQ6wAevj/fJXf5NdTlqbeNmq/t75/nGKXSFPWtRGfFs8JHGkkLgBiTJVsHYSqcnKNdVldIFUoJP4c2/SPyoBkqNvoIrr73XRo8tdDF1iY4ddmhHMSmKgSRqLnIEgew3Apa/IwPdolg+lMsOtcjgz4CB9agJ+O0+rdZd2ZUBNMN0nBSUh+lrkMjat8TJAlvut9h/6HAe4Dz8WheoWol8f8t1jLOJvbdvsMYi+Hf9CZjp7PlHT9y/TnDarcw2YIrf6Bv+Fm14ZDelu9VlF2zR1X8cofY=
+ dbdee8ac3e3fcdda1fa55b90c0a235125b7f8e6f 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmM77dQZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZViOTC/sEPicecV3h3v47VAIUigyKNWpcJ+epbRRaH6gqHTkexvULOPL6nJrdfBHkNry1KRtOcjaxQvtWZM+TRCfqsE++Q3ZYakRpWKontb/8xQSbmENvbnElLh6k0STxN/JVc480us7viDG5pHS9DLsgbkHmdCv5KdmSE0hphRrWX+5X7RTqpAfCgdwTkacB5Geu9QfRnuYjz6lvqbs5ITKtBGUYbg3hKzw2894FHtMqV6qa5rk1ZMmVDbQfKQaMVG41UWNoN7bLESi69EmF4q5jsXdIbuBy0KtNXmB+gdAaHN03B5xtc+IsQZOTHEUNlMgov3yEVTcA6fSG9/Z+CMsdCbyQxqkwakbwWS1L2WcAsrkHyafvbNdR2FU34iYRWOck8IUg2Ffv7UFrHabJDy+nY7vcTLb0f7lV4jLXMWEt1hvXWMYek6Y4jtWahg6fjmAdD3Uf4BMfsTdnQKPvJpWXx303jnST3xvFvuqbbbDlhLfAB9M6kxVntvCVkMlMpe39+gM=
+ a3356ab610fc50000cf0ba55c424a4d96da11db7 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmNWr44ZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVjalC/9ddIeZ1qc3ykUZb+vKw+rZ6WS0rnDgrfFYBQFooK106lB+IC2PlghXSrY2hXn/7Dk95bK90S9AO4TFidDPiRYuBYdXR+G+CzmYFtCQzGBgGyrWgpUYsZUeA3VNqZ+Zbwn/vRNiFVNDsrFudjE6xEwaYdepmoXJsv3NdgZME7T0ZcDIujIa7ihiXvGFPVzMyF/VZg4QvdmerC4pvkeKC3KRNjhBkMQbf0GtQ4kpgMFBj5bmgXbq9rftL5yYy+rDiRQ0qzpOMHbdxvSZjPhK/do5M3rt2cjPxtF+7R3AHxQ6plOf0G89BONYebopY92OIyA3Qg9d/zIKDmibhgyxj4G9YU3+38gPEpsNeEw0fkyxhQbCY3QpNX4JGFaxq5GVCUywvVIuqoiOcQeXlTDN70zhAQHUx0rcGe1Lc6I+rT6Y2lNjJIdiCiMAWIl0D+4SVrLqdMYdSMXcBajTxOudb9KZnu03zNMXuLb8FFk1lFzkY7AcWA++d02f15P3sVZsDXE=
+ 04f1dba53c961dfdb875c8469adc96fa999cfbed 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmNyC5sZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVqF+C/4uLaV/4nizZkWD3PjU1WyFYDg4bWDFOHb+PWuQ/3uoHXu1/EaYRnqmcDyOSJ99aXZBQ78rm9xhjxdmbklZ4ll1EGkqfTiYH+ld+rqE8iaqlc/DVy7pFXaenYwxletzO1OezzwF4XDLi6hcqzY9CXA3NM40vf6W4Rs5bEIi4eSbgJSNB1ll6ZzjvkU5bWTUoxSH+fxIJUuo27El2etdlKFQkS3/oTzWHejpVn6SQ1KyojTHMQBDRK4rqJBISp3gTf4TEezb0q0HTutJYDFdQNIRqx7V1Ao4Ei+YNbenJzcWJOA/2uk4V0AvZ4tnjgAzBYKwvIL1HfoQ0OmILeXjlVzV7Xu0G57lavum0sKkz/KZLKyYhKQHjYQLE7YMSM2y6/UEoFNN577vB47CHUq446PSMb8dGs2rmj66rj4iz5ml0yX+V9O2PpmIKoPAu1Y5/6zB9rCL76MRx182IW2m3rm4lsTfXPBPtea/OFt6ylxqCJRxaA0pht4FiAOvicPKXh4=
+ c890d8b8bc59b18e5febf60caada629df5356ee2 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmN48sEZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVqwwC/9GkaE5adkLaJBZeRqfLL710ZPMAttiPhLAYl9YcUeUjw2rTU1bxxUks0oSfW4J0AaJLscl+pG4zZW8FN2MXY3njdcpAA/bv4nb+rq50Mdm0mD3iLOyKbIDQbUoYe7YpIPbpyuf8G/y4R1IXiLJjK329vzIsHkqyKPwUzxvyfZkjg6Lx00RRcfWrosb2Jb0+EhP9Yi7tjJmNWjsaTb8Ufp+ImYAL3qcDErkqb6wJCGAM0AwVfAJ7MZz3v3E56n1HTPhNqf8UvfR4URsuDlk56mP4do/QThC7dANiKeWrFJSBPu8uSpaHzUk1XCat0RHK03DMr15Ln1YCEhTmaedHr2rtp0fgGqaMH1jLZt0+9fiPaaYjck7Y+aagdc3bt1VhqtClbCJz5KWynpCLrn8MX40QmXuwly+KHzMuPQ6i0ui95ifgtrW7/Zd7uI7mYZ2zUeFUZPnL9XmGpFI595N8TjoPuFeO/ea4OQbLUY+lmmgZQrWoTpc5LDUyFXSFzJS2bU=
++59466b13a3ae0e29a5d4f485393e516cfbb057d0 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmO1XgoZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVn8nDACU04KbPloLl+if6DQYreESnF9LU8C+qnLC/j5RRuaFNh/ec6C3DzLWqWdmnWA/siV3nUR1bXHfTui95azxJfYvWoXH2R2yam+YhE256B4rDDYWS1LI9kNNM+A33xcPS2HxVowkByhjB5FPKR6I90dX42BYJpTS5s/VPx63wXLznjFWuD7XJ3P0VI7D72j/+6EQCmHaAUEE5bO00Ob2JxmzJlaP+02fYc814PAONE2/ocfR0aExAVS3VA+SJGXnXTVpoaHr7NJKC2sBLFsdnhIRwtCf3rtGEvIJ5v2U2xx0ZEz/mimtGzW5ovkthobV4mojk0DRz7xBtA96pOGSRTD8QndIsdMCUipo8zZ/AGAMByCtsQOX7OYhR6gp+I6+iPh8fTR5oCbkO7cizDDQtXcrR5OT/BDH9xkAF1ghNL8o23a09/wfZ9NPg5zrh/4T/dFfoe2COlkAJJ1ttDPYyQkCfMsoWm3OXk6xJ3ExVbwkZzUDQSzsxGS+oxbFDWJZ64Q=
+diff --git a/.hgtags b/.hgtags
+--- a/.hgtags
++++ b/.hgtags
+@@ -248,8 +248,9 @@ f69bffd00abe3a1b94d1032eb2c92e611d16a192
+ b5c8524827d20fe2e0ca8fb1234a0fe35a1a36c7 6.2.2
+ dbdee8ac3e3fcdda1fa55b90c0a235125b7f8e6f 6.2.3
+ a3356ab610fc50000cf0ba55c424a4d96da11db7 6.3rc0
+ 04f1dba53c961dfdb875c8469adc96fa999cfbed 6.3.0
+ 04f1dba53c961dfdb875c8469adc96fa999cfbed 6.3
+ 04f1dba53c961dfdb875c8469adc96fa999cfbed 6.3.0
+ 0000000000000000000000000000000000000000 6.3.0
+ c890d8b8bc59b18e5febf60caada629df5356ee2 6.3.1
++59466b13a3ae0e29a5d4f485393e516cfbb057d0 6.3.2
+diff --git a/Makefile b/Makefile
+--- a/Makefile
++++ b/Makefile
+@@ -53,17 +53,17 @@ help:
+       @echo '  make all && su -c "make install" && hg version'
+       @echo
+       @echo 'Example for a local installation (usable in this directory):'
+       @echo '  make local && ./hg version'
+ all: build doc
+ local:
+-      $(PYTHON) setup.py $(PURE) \
++      MERCURIAL_SETUP_MAKE_LOCAL=1 $(PYTHON) setup.py $(PURE) \
+         build_py -c -d . \
+         build_ext $(COMPILERFLAG) -i \
+         build_hgexe $(COMPILERFLAG) -i \
+         build_mo
+       env HGRCPATH= $(PYTHON) hg version
+ build:
+       $(PYTHON) setup.py $(PURE) build $(COMPILERFLAG)
+diff --git a/contrib/heptapod-ci.yml b/contrib/heptapod-ci.yml
+--- a/contrib/heptapod-ci.yml
++++ b/contrib/heptapod-ci.yml
+@@ -29,25 +29,27 @@ variables:
+         - echo "$RUNTEST_ARGS"
+         - HGTESTS_ALLOW_NETIO="$TEST_HGTESTS_ALLOW_NETIO" HGMODULEPOLICY="$TEST_HGMODULEPOLICY" "$PYTHON" tests/run-tests.py --color=always $RUNTEST_ARGS
+ checks:
+     <<: *runtests
+     variables:
+         RUNTEST_ARGS: "--time --test-list /tmp/check-tests.txt"
+         PYTHON: python3
++        CI_CLEVER_CLOUD_FLAVOR: S
+ rust-cargo-test:
+     <<: *all
+     stage: tests
+     script:
+         - echo "python used, $PYTHON"
+         - make rust-tests
+     variables:
+         PYTHON: python3
++        CI_CLEVER_CLOUD_FLAVOR: S
+ test-c:
+     <<: *runtests
+     variables:
+         RUNTEST_ARGS: " --no-rust --blacklist /tmp/check-tests.txt"
+         PYTHON: python3
+         TEST_HGMODULEPOLICY: "c"
+         TEST_HGTESTS_ALLOW_NETIO: "1"
+diff --git a/hgext/convert/bzr.py b/hgext/convert/bzr.py
+--- a/hgext/convert/bzr.py
++++ b/hgext/convert/bzr.py
+@@ -36,16 +36,22 @@ try:
+     import breezy.revision
+     import breezy.revisionspec
+     bzrdir = breezy.bzr.bzrdir
+     errors = breezy.errors
+     revision = breezy.revision
+     revisionspec = breezy.revisionspec
+     revisionspec.RevisionSpec
++
++    try:
++        # brz 3.3.0 (revno: 7614.2.2)
++        from breezy.transport import NoSuchFile
++    except ImportError:
++        from breezy.errors import NoSuchFile
+ except ImportError:
+     pass
+ supportedkinds = ('file', 'symlink')
+ class bzr_source(common.converter_source):
+     """Reads Bazaar repositories by using the Bazaar Python libraries"""
+@@ -145,17 +151,17 @@ class bzr_source(common.converter_source
+         return heads
+     def getfile(self, name, rev):
+         name = name.decode()
+         revtree = self.sourcerepo.revision_tree(rev)
+         try:
+             kind = revtree.kind(name)
+-        except breezy.errors.NoSuchFile:
++        except NoSuchFile:
+             return None, None
+         if kind not in supportedkinds:
+             # the file is not available anymore - was deleted
+             return None, None
+         mode = self._modecache[(name.encode(), rev)]
+         if kind == 'symlink':
+             target = revtree.get_symlink_target(name)
+             if target is None:
+diff --git a/hgext/convert/cvs.py b/hgext/convert/cvs.py
+--- a/hgext/convert/cvs.py
++++ b/hgext/convert/cvs.py
+@@ -137,17 +137,19 @@ class convert_cvs(converter_source):
+         conntype = None
+         user, host = None, None
+         cmd = [b'cvs', b'server']
+         self.ui.status(_(b"connecting to %s\n") % root)
+         if root.startswith(b":pserver:"):
+             root = root[9:]
+-            m = re.match(r'(?:(.*?)(?::(.*?))?@)?([^:/]*)(?::(\d*))?(.*)', root)
++            m = re.match(
++                br'(?:(.*?)(?::(.*?))?@)?([^:/]*)(?::(\d*))?(.*)', root
++            )
+             if m:
+                 conntype = b"pserver"
+                 user, passw, serv, port, root = m.groups()
+                 if not user:
+                     user = b"anonymous"
+                 if not port:
+                     port = 2401
+                 else:
+@@ -192,17 +194,17 @@ class convert_cvs(converter_source):
+                             b"END AUTH REQUEST",
+                             b"",
+                         ]
+                     )
+                 )
+                 if sck.recv(128) != b"I LOVE YOU\n":
+                     raise error.Abort(_(b"CVS pserver authentication failed"))
+-                self.writep = self.readp = sck.makefile(b'r+')
++                self.writep = self.readp = sck.makefile('rwb')
+         if not conntype and root.startswith(b":local:"):
+             conntype = b"local"
+             root = root[7:]
+         if not conntype:
+             # :ext:user@host/home/user/path/to/cvsroot
+             if root.startswith(b":ext:"):
+diff --git a/hgext/convert/cvsps.py b/hgext/convert/cvsps.py
+--- a/hgext/convert/cvsps.py
++++ b/hgext/convert/cvsps.py
+@@ -681,17 +681,20 @@ def createchangeset(ui, log, fuzz=60, me
+                 mergepoint=e.mergepoint,
+                 branchpoints=e.branchpoints,
+                 commitid=e.commitid,
+             )
+             changesets.append(c)
+             files = set()
+             if len(changesets) % 100 == 0:
+-                t = b'%d %s' % (len(changesets), repr(e.comment)[1:-1])
++                t = b'%d %s' % (
++                    len(changesets),
++                    pycompat.byterepr(e.comment)[2:-1],
++                )
+                 ui.status(stringutil.ellipsis(t, 80) + b'\n')
+         c.entries.append(e)
+         files.add(e.file)
+         c.date = e.date  # changeset date is date of latest commit in it
+     # Mark synthetic changesets
+diff --git a/hgext/convert/darcs.py b/hgext/convert/darcs.py
+--- a/hgext/convert/darcs.py
++++ b/hgext/convert/darcs.py
+@@ -138,17 +138,17 @@ class darcs_source(common.converter_sour
+         return man
+     def getheads(self):
+         return self.parents[None]
+     def getcommit(self, rev):
+         elt = self.changes[rev]
+         dateformat = b'%a %b %d %H:%M:%S %Z %Y'
+-        date = dateutil.strdate(elt.get('local_date'), dateformat)
++        date = dateutil.strdate(self.recode(elt.get('local_date')), dateformat)
+         desc = elt.findtext('name') + '\n' + elt.findtext('comment', '')
+         # etree can return unicode objects for name, comment, and author,
+         # so recode() is used to ensure str objects are emitted.
+         newdateformat = b'%Y-%m-%d %H:%M:%S %1%2'
+         return common.commit(
+             author=self.recode(elt.get('author')),
+             date=dateutil.datestr(date, newdateformat),
+             desc=self.recode(desc).strip(),
+diff --git a/hgext/fix.py b/hgext/fix.py
+--- a/hgext/fix.py
++++ b/hgext/fix.py
+@@ -693,16 +693,19 @@ def fixfile(ui, repo, opts, fixers, fixc
+     for fixername, fixer in fixers.items():
+         if fixer.affects(opts, fixctx, path):
+             ranges = lineranges(
+                 opts, path, basepaths, basectxs, fixctx, newdata
+             )
+             command = fixer.command(ui, path, ranges)
+             if command is None:
+                 continue
++            msg = b'fixing: %s - %s - %s\n'
++            msg %= (fixctx, fixername, path)
++            ui.debug(msg)
+             ui.debug(b'subprocess: %s\n' % (command,))
+             proc = subprocess.Popen(
+                 procutil.tonativestr(command),
+                 shell=True,
+                 cwd=procutil.tonativestr(repo.root),
+                 stdin=subprocess.PIPE,
+                 stdout=subprocess.PIPE,
+                 stderr=subprocess.PIPE,
+diff --git a/hgext/histedit.py b/hgext/histedit.py
+--- a/hgext/histedit.py
++++ b/hgext/histedit.py
+@@ -991,17 +991,17 @@ class base(histeditaction):
+                 msg % (self.verb, short(self.node)),
+                 hint=_(b'base must only use unlisted changesets'),
+             )
+ @action(
+     [b'_multifold'],
+     _(
+-        """fold subclass used for when multiple folds happen in a row
++        b"""fold subclass used for when multiple folds happen in a row
+     We only want to fire the editor for the folded message once when
+     (say) four changes are folded down into a single change. This is
+     similar to rollup, but we should preserve both messages so that
+     when the last fold operation runs we can show the user all the
+     commit messages in their editor.
+     """
+     ),
+diff --git a/hgext/sparse.py b/hgext/sparse.py
+--- a/hgext/sparse.py
++++ b/hgext/sparse.py
+@@ -369,17 +369,17 @@ def debugsparse(ui, repo, **opts):
+         sparse.importfromfiles(repo, opts, importrules, force=force)
+     if clearrules:
+         sparse.clearrules(repo, force=force)
+     if refresh:
+         try:
+             wlock = repo.wlock()
+-            fcounts = map(
++            fcounts = pycompat.maplist(
+                 len,
+                 sparse.refreshwdir(
+                     repo, repo.status(), sparse.matcher(repo), force=force
+                 ),
+             )
+             sparse.printchanges(
+                 ui,
+                 opts,
+diff --git a/mercurial/bundlerepo.py b/mercurial/bundlerepo.py
+--- a/mercurial/bundlerepo.py
++++ b/mercurial/bundlerepo.py
+@@ -528,16 +528,18 @@ def makebundlerepository(ui, repopath, b
+     # a repo instance. Then, we dynamically create a new type derived from
+     # both it and our ``bundlerepository`` class which overrides some
+     # functionality. We then change the type of the constructed repository
+     # to this new type and initialize the bundle-specific bits of it.
+     try:
+         repo = localrepo.instance(ui, repopath, create=False)
+         tempparent = None
++    except error.RequirementError:
++        raise  # no fallback if the backing repo is unsupported
+     except error.RepoError:
+         tempparent = pycompat.mkdtemp()
+         try:
+             repo = localrepo.instance(ui, tempparent, create=True)
+         except Exception:
+             shutil.rmtree(tempparent)
+             raise
+diff --git a/mercurial/commands.py b/mercurial/commands.py
+--- a/mercurial/commands.py
++++ b/mercurial/commands.py
+@@ -7467,16 +7467,19 @@ def tag(ui, repo, name1, *names, **opts)
+                 raise error.InputError(
+                     _(
+                         b'working directory is not at a branch head '
+                         b'(use -f to force)'
+                     )
+                 )
+         node = logcmdutil.revsingle(repo, rev_).node()
++        if node is None:
++            raise error.InputError(_(b"cannot tag working directory"))
++
+         if not message:
+             # we don't translate commit messages
+             message = b'Added tag %s for changeset %s' % (
+                 b', '.join(names),
+                 short(node),
+             )
+         date = opts.get(b'date')
+diff --git a/mercurial/dirstate.py b/mercurial/dirstate.py
+--- a/mercurial/dirstate.py
++++ b/mercurial/dirstate.py
+@@ -1439,16 +1439,19 @@ class dirstate:
+         if not self._use_dirstate_v2:
+             return None
+         return backupname + b'.v2-data'
+     def _new_backup_data_filename(self, backupname):
+         """return a filename to backup a data-file or None"""
+         if not self._use_dirstate_v2:
+             return None
++        if self._map.docket.uuid is None:
++            # not created yet, nothing to backup
++            return None
+         data_filename = self._map.docket.data_filename()
+         return data_filename, self.data_backup_filename(backupname)
+     def backup_data_file(self, backupname):
+         if not self._use_dirstate_v2:
+             return None
+         docket = docketmod.DirstateDocket.parse(
+             self._opener.read(backupname),
+@@ -1509,41 +1512,54 @@ class dirstate:
+                 # end of this transaction
+                 tr.registertmp(bck_data_filename, location=b'plain')
+     def restorebackup(self, tr, backupname):
+         '''Restore dirstate by backup file'''
+         # this "invalidate()" prevents "wlock.release()" from writing
+         # changes of dirstate out after restoring from backup file
+         self.invalidate()
++        o = self._opener
++        if not o.exists(backupname):
++            # there was no file backup, delete existing files
++            filename = self._actualfilename(tr)
++            data_file = None
++            if self._use_dirstate_v2 and self._map.docket.uuid is not None:
++                data_file = self._map.docket.data_filename()
++            if o.exists(filename):
++                o.unlink(filename)
++            if data_file is not None and o.exists(data_file):
++                o.unlink(data_file)
++            return
+         filename = self._actualfilename(tr)
+-        o = self._opener
+         data_pair = self.backup_data_file(backupname)
+-        if util.samefile(o.join(backupname), o.join(filename)):
++        if o.exists(filename) and util.samefile(
++            o.join(backupname), o.join(filename)
++        ):
+             o.unlink(backupname)
+         else:
+             o.rename(backupname, filename, checkambig=True)
+         if data_pair is not None:
+             data_backup, target = data_pair
+             if o.exists(target) and util.samefile(
+                 o.join(data_backup), o.join(target)
+             ):
+                 o.unlink(data_backup)
+             else:
+                 o.rename(data_backup, target, checkambig=True)
+     def clearbackup(self, tr, backupname):
+         '''Clear backup file'''
+         o = self._opener
+-        data_backup = self.backup_data_file(backupname)
+-        o.unlink(backupname)
+-
+-        if data_backup is not None:
+-            o.unlink(data_backup[0])
++        if o.exists(backupname):
++            data_backup = self.backup_data_file(backupname)
++            o.unlink(backupname)
++            if data_backup is not None:
++                o.unlink(data_backup[0])
+     def verify(self, m1, m2):
+         """check the dirstate content again the parent manifest and yield errors"""
+         missing_from_p1 = b"%s in state %s, but not in manifest1\n"
+         unexpected_in_p1 = b"%s in state %s, but also in manifest1\n"
+         missing_from_ps = b"%s in state %s, but not in either manifest\n"
+         missing_from_ds = b"%s in manifest1, but listed as state %s\n"
+         for f, entry in self.items():
+diff --git a/mercurial/dirstatemap.py b/mercurial/dirstatemap.py
+--- a/mercurial/dirstatemap.py
++++ b/mercurial/dirstatemap.py
+@@ -109,16 +109,18 @@ class _dirstatemapcommon:
+             )
+         return self._docket
+     def write_v2_no_append(self, tr, st, meta, packed):
+         old_docket = self.docket
+         new_docket = docketmod.DirstateDocket.with_new_uuid(
+             self.parents(), len(packed), meta
+         )
++        if old_docket.uuid == new_docket.uuid:
++            raise error.ProgrammingError(b'dirstate docket name collision')
+         data_filename = new_docket.data_filename()
+         self._opener.write(data_filename, packed)
+         # Write the new docket after the new data file has been
+         # written. Because `st` was opened with `atomictemp=True`,
+         # the actual `.hg/dirstate` file is only affected on close.
+         st.write(new_docket.serialize())
+         st.close()
+         # Remove the old data file after the new docket pointing to
+diff --git a/mercurial/hgweb/server.py b/mercurial/hgweb/server.py
+--- a/mercurial/hgweb/server.py
++++ b/mercurial/hgweb/server.py
+@@ -198,17 +198,17 @@ class _httprequesthandler(httpservermod.
+             hkey = 'HTTP_' + header.replace('-', '_').upper()
+             hval = self.headers.get(header)
+             hval = hval.replace('\n', '').strip()
+             if hval:
+                 env[hkey] = hval
+         env['SERVER_PROTOCOL'] = self.request_version
+         env['wsgi.version'] = (1, 0)
+         env['wsgi.url_scheme'] = pycompat.sysstr(self.url_scheme)
+-        if env.get('HTTP_EXPECT', b'').lower() == b'100-continue':
++        if env.get('HTTP_EXPECT', '').lower() == '100-continue':
+             self.rfile = common.continuereader(self.rfile, self.wfile.write)
+         env['wsgi.input'] = self.rfile
+         env['wsgi.errors'] = _error_logger(self)
+         env['wsgi.multithread'] = isinstance(
+             self.server, socketserver.ThreadingMixIn
+         )
+         if util.safehasattr(socketserver, b'ForkingMixIn'):
+diff --git a/mercurial/revset.py b/mercurial/revset.py
+--- a/mercurial/revset.py
++++ b/mercurial/revset.py
+@@ -5,17 +5,16 @@
+ # This software may be used and distributed according to the terms of the
+ # GNU General Public License version 2 or any later version.
+ import binascii
+ import functools
+ import random
+ import re
+-import sys
+ from .i18n import _
+ from .pycompat import getattr
+ from .node import (
+     bin,
+     nullrev,
+     wdirrev,
+ )
+@@ -2350,17 +2349,17 @@ def roots(repo, subset, x):
+             for p in repo[None].parents():
+                 if p.rev() in s:
+                     return False
+         return True
+     return subset & s.filter(filter, condrepr=b'<roots>')
+-MAXINT = sys.maxsize
++MAXINT = (1 << 31) - 1
+ MININT = -MAXINT - 1
+ def pick_random(c, gen=random):
+     # exists as its own function to make it possible to overwrite the seed
+     return gen.randint(MININT, MAXINT)
+diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py
+--- a/mercurial/scmutil.py
++++ b/mercurial/scmutil.py
+@@ -273,16 +273,21 @@ def checknewlabel(repo, lbl, kind):
+         raise error.InputError(_(b"the name '%s' is reserved") % lbl)
+     for c in (b':', b'\0', b'\n', b'\r'):
+         if c in lbl:
+             raise error.InputError(
+                 _(b"%r cannot be used in a name") % pycompat.bytestr(c)
+             )
+     try:
+         int(lbl)
++        if b'_' in lbl:
++            # If label contains underscores, Python might consider it an
++            # integer (with "_" as visual separators), but we do not.
++            # See PEP 515 - Underscores in Numeric Literals.
++            raise ValueError
+         raise error.InputError(_(b"cannot use an integer as a name"))
+     except ValueError:
+         pass
+     if lbl.strip() != lbl:
+         raise error.InputError(
+             _(b"leading or trailing whitespace in name %r") % lbl
+         )
+diff --git a/mercurial/utils/resourceutil.py b/mercurial/utils/resourceutil.py
+--- a/mercurial/utils/resourceutil.py
++++ b/mercurial/utils/resourceutil.py
+@@ -54,17 +54,20 @@ else:
+ try:
+     # importlib.resources exists from Python 3.7; see fallback in except clause
+     # further down
+     from importlib import resources  # pytype: disable=import-error
+     # Force loading of the resources module
+-    resources.open_binary  # pytype: disable=module-attr
++    if pycompat.safehasattr(resources, 'files'):
++        resources.files  # pytype: disable=module-attr
++    else:
++        resources.open_binary  # pytype: disable=module-attr
+     # py2exe raises an AssertionError if uses importlib.resources
+     if getattr(sys, "frozen", None) in ("console_exe", "windows_exe"):
+         raise ImportError
+ except (ImportError, AttributeError):
+     # importlib.resources was not found (almost definitely because we're on a
+     # Python version before 3.7)
+@@ -87,19 +90,28 @@ except (ImportError, AttributeError):
+         for p in os.listdir(path):
+             yield pycompat.fsencode(p)
+ else:
+     from .. import encoding
+     def open_resource(package, name):
+-        return resources.open_binary(  # pytype: disable=module-attr
+-            pycompat.sysstr(package), pycompat.sysstr(name)
+-        )
++        if pycompat.safehasattr(resources, 'files'):
++            return (
++                resources.files(  # pytype: disable=module-attr
++                    pycompat.sysstr(package)
++                )
++                .joinpath(pycompat.sysstr(name))
++                .open('rb')
++            )
++        else:
++            return resources.open_binary(  # pytype: disable=module-attr
++                pycompat.sysstr(package), pycompat.sysstr(name)
++            )
+     def is_resource(package, name):
+         return resources.is_resource(  # pytype: disable=module-attr
+             pycompat.sysstr(package), encoding.strfromlocal(name)
+         )
+     def contents(package):
+         # pytype: disable=module-attr
+diff --git a/relnotes/6.3 b/relnotes/6.3
+--- a/relnotes/6.3
++++ b/relnotes/6.3
+@@ -1,8 +1,28 @@
++= Mercurial 6.3.2 =
++
++ * [ecfc84b956a8] tests: expect the message from 1baf0fffd82f in test-hghave.t (issue6762)
++ * [5c095119bff4] tests: add the missing space to test-hghave.t (issue6762)
++ * [2c346c1c75ec] tests: use an all too familiar executable in test-run-tests.t (issue6661)
++ * [13c0e3b4fd35] tests: use `test -f` instead of `ls` to see if a file is present (issue6662)
++ * [8ced4ca30ea1] bisect: correct message about aborting an in-progress bisect (issue6527)
++ * filemerge: fix crash when using filesets in [partial-merge-tools]
++ * help: fix a py3 error interpolating Set into b'%s'
++ * match: make the FLAG_RE pattern a raw string
++ * python-compat: adapt to Python 3.11 BC breakage with `random.sample`
++ * rust-status: fix thread count ceiling
++ * hg: show the correct message when cloning an LFS repo with extension disabled
++ * extensions: process disabled external paths when `hgext` package is in-memory
++ * emitrevision: consider ancestors revision to emit as available base
++ * make: add a target for building pyoxidizer tests on macOS
++ * run-tests: support --pyoxidized on macOS
++ * packaging: add dependencies to the PyOxidizer build on macOS
++ * Miscellaneous test fixes
++
+ = Mercurial 6.3.1 =
+  * memory-usage: fix `hg log --follow --rev R F` space complexity (dcb2581e33be)
+  * Improve portability and robustness of test harness
+  * hg-core: relax dependencies pinning
+  * matcher: fix issues regex flag contained in pattern (issue6759)
+  * matcher: do not prepend '.*' to pattern using ^ after flags
+  * packaging: refresh dependency hashes (issue6750)
+diff --git a/rust/Cargo.lock b/rust/Cargo.lock
+--- a/rust/Cargo.lock
++++ b/rust/Cargo.lock
+@@ -227,19 +227,19 @@ source = "registry+https://github.com/ru
+ checksum = "e54ea8bc3fb1ee042f5aace6e3c6e025d3874866da222930f70ce62aceba0bfa"
+ dependencies = [
+  "cfg-if 1.0.0",
+  "crossbeam-utils",
+ ]
+ [[package]]
+ name = "crossbeam-deque"
+-version = "0.8.0"
++version = "0.8.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9"
++checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc"
+ dependencies = [
+  "cfg-if 1.0.0",
+  "crossbeam-epoch",
+  "crossbeam-utils",
+ ]
+ [[package]]
+ name = "crossbeam-epoch"
+@@ -911,36 +911,33 @@ version = "0.4.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "a9fcdd2e881d02f1d9390ae47ad8e5696a9e4be7b547a1da2afbc61973217004"
+ dependencies = [
+  "rand_core 0.5.1",
+ ]
+ [[package]]
+ name = "rayon"
+-version = "1.5.1"
++version = "1.6.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90"
++checksum = "6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7"
+ dependencies = [
+- "autocfg",
+- "crossbeam-deque",
+  "either",
+  "rayon-core",
+ ]
+ [[package]]
+ name = "rayon-core"
+-version = "1.9.1"
++version = "1.10.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e"
++checksum = "356a0625f1954f730c0201cdab48611198dc6ce21f4acff55089b5a78e6e835b"
+ dependencies = [
+  "crossbeam-channel",
+  "crossbeam-deque",
+  "crossbeam-utils",
+- "lazy_static",
+  "num_cpus",
+ ]
+ [[package]]
+ name = "redox_syscall"
+ version = "0.2.11"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "8380fe0152551244f0747b1bf41737e0f8a74f97a14ccefd1148187271634f3c"
+diff --git a/rust/hg-core/Cargo.toml b/rust/hg-core/Cargo.toml
+--- a/rust/hg-core/Cargo.toml
++++ b/rust/hg-core/Cargo.toml
+@@ -18,17 +18,17 @@ home = "0.5.3"
+ im-rc = "15.0"
+ itertools = "0.10.3"
+ lazy_static = "1.4.0"
+ libc = "0.2"
+ ouroboros = "0.15.0"
+ rand = "0.8.4"
+ rand_pcg = "0.3.1"
+ rand_distr = "0.4.3"
+-rayon = "1.5.1"
++rayon = "1.6.1"
+ regex = "1.5.5"
+ sha-1 = "0.10.0"
+ twox-hash = "1.6.2"
+ same-file = "1.0.6"
+ tempfile = "3.1.0"
+ thread_local = "1.1.4"
+ crossbeam-channel = "0.5.0"
+ micro-timer = "0.4.0"
+diff --git a/rust/hg-core/src/narrow.rs b/rust/hg-core/src/narrow.rs
+--- a/rust/hg-core/src/narrow.rs
++++ b/rust/hg-core/src/narrow.rs
+@@ -95,17 +95,17 @@ pub fn matcher(
+ fn validate_patterns(patterns: &[u8]) -> Result<(), SparseConfigError> {
+     for pattern in patterns.split(|c| *c == b'\n') {
+         if pattern.is_empty() {
+             continue;
+         }
+         for prefix in VALID_PREFIXES.iter() {
+             if pattern.starts_with(prefix.as_bytes()) {
+-                break;
++                return Ok(());
+             }
+-            return Err(SparseConfigError::InvalidNarrowPrefix(
+-                pattern.to_owned(),
+-            ));
+         }
++        return Err(SparseConfigError::InvalidNarrowPrefix(
++            pattern.to_owned(),
++        ));
+     }
+     Ok(())
+ }
+diff --git a/rust/rhg/Cargo.toml b/rust/rhg/Cargo.toml
+--- a/rust/rhg/Cargo.toml
++++ b/rust/rhg/Cargo.toml
+@@ -17,9 +17,9 @@ home = "0.5.3"
+ lazy_static = "1.4.0"
+ log = "0.4.14"
+ micro-timer = "0.4.0"
+ regex = "1.5.5"
+ env_logger = "0.9.0"
+ format-bytes = "0.3.0"
+ users = "0.11.0"
+ which = "4.2.5"
+-rayon = "1.5.1"
++rayon = "1.6.1"
+diff --git a/setup.py b/setup.py
+--- a/setup.py
++++ b/setup.py
+@@ -16,16 +16,21 @@ supportedpy = ','.join(
+ import sys, platform
+ import sysconfig
+ def sysstr(s):
+     return s.decode('latin-1')
++def eprint(*args, **kwargs):
++    kwargs['file'] = sys.stderr
++    print(*args, **kwargs)
++
++
+ import ssl
+ # ssl.HAS_TLSv1* are preferred to check support but they were added in Python
+ # 3.7. Prior to CPython commit 6e8cda91d92da72800d891b2fc2073ecbc134d98
+ # (backported to the 3.7 branch), ssl.PROTOCOL_TLSv1_1 / ssl.PROTOCOL_TLSv1_2
+ # were defined only if compiled against a OpenSSL version with TLS 1.1 / 1.2
+ # support. At the mentioned commit, they were unconditionally defined.
+ _notset = object()
+@@ -216,19 +221,20 @@ class hgcommand:
+     def __init__(self, cmd, env):
+         self.cmd = cmd
+         self.env = env
+     def run(self, args):
+         cmd = self.cmd + args
+         returncode, out, err = runcmd(cmd, self.env)
+         err = filterhgerr(err)
+-        if err or returncode != 0:
++        if err:
+             print("stderr from '%s':" % (' '.join(cmd)), file=sys.stderr)
+             print(err, file=sys.stderr)
++        if returncode != 0:
+             return b''
+         return out
+ def filterhgerr(err):
+     # If root is executing setup.py, but the repository is owned by
+     # another user (as in "sudo python setup.py install") we will get
+     # trust warnings since the .hg/hgrc file is untrusted. That is
+@@ -286,20 +292,21 @@ def findhg():
+     hgcmd = [sys.executable, 'hg']
+     try:
+         retcode, out, err = runcmd(hgcmd + check_cmd, hgenv)
+     except EnvironmentError:
+         retcode = -1
+     if retcode == 0 and not filterhgerr(err):
+         return hgcommand(hgcmd, hgenv)
+-    raise SystemExit(
+-        'Unable to find a working hg binary to extract the '
+-        'version from the repository tags'
+-    )
++    eprint("/!\\")
++    eprint(r"/!\ Unable to find a working hg binary")
++    eprint(r"/!\ Version cannot be extract from the repository")
++    eprint(r"/!\ Re-run the setup once a first version is built")
++    return None
+ def localhgenv():
+     """Get an environment dictionary to use for invoking or importing
+     mercurial from the local repository."""
+     # Execute hg out of this directory with a custom environment which takes
+     # care to not use any hgrc files and do no localization.
+     env = {
+@@ -314,39 +321,56 @@ def localhgenv():
+         # SystemRoot is required by Windows to load various DLLs.  See:
+         # https://bugs.python.org/issue13524#msg148850
+         env['SystemRoot'] = os.environ['SystemRoot']
+     return env
+ version = ''
+-if os.path.isdir('.hg'):
++
++def _try_get_version():
+     hg = findhg()
++    if hg is None:
++        return ''
++    hgid = None
++    numerictags = []
+     cmd = ['log', '-r', '.', '--template', '{tags}\n']
+-    numerictags = [t for t in sysstr(hg.run(cmd)).split() if t[0:1].isdigit()]
++    pieces = sysstr(hg.run(cmd)).split()
++    numerictags = [t for t in pieces if t[0:1].isdigit()]
+     hgid = sysstr(hg.run(['id', '-i'])).strip()
+     if not hgid:
+-        # Bail out if hg is having problems interacting with this repository,
+-        # rather than falling through and producing a bogus version number.
+-        # Continuing with an invalid version number will break extensions
+-        # that define minimumhgversion.
+-        raise SystemExit('Unable to determine hg version from local repository')
++        eprint("/!\\")
++        eprint(r"/!\ Unable to determine hg version from local repository")
++        eprint(r"/!\ Failed to retrieve current revision tags")
++        return ''
+     if numerictags:  # tag(s) found
+         version = numerictags[-1]
+         if hgid.endswith('+'):  # propagate the dirty status to the tag
+             version += '+'
+-    else:  # no tag found
++    else:  # no tag found on the checked out revision
+         ltagcmd = ['parents', '--template', '{latesttag}']
+         ltag = sysstr(hg.run(ltagcmd))
++        if not ltag:
++            eprint("/!\\")
++            eprint(r"/!\ Unable to determine hg version from local repository")
++            eprint(
++                r"/!\ Failed to retrieve current revision distance to lated tag"
++            )
++            return ''
+         changessincecmd = ['log', '-T', 'x\n', '-r', "only(.,'%s')" % ltag]
+         changessince = len(hg.run(changessincecmd).splitlines())
+         version = '%s+hg%s.%s' % (ltag, changessince, hgid)
+     if version.endswith('+'):
+         version = version[:-1] + 'local' + time.strftime('%Y%m%d')
++    return version
++
++
++if os.path.isdir('.hg'):
++    version = _try_get_version()
+ elif os.path.exists('.hg_archival.txt'):
+     kw = dict(
+         [[t.strip() for t in l.split(':', 1)] for l in open('.hg_archival.txt')]
+     )
+     if 'tag' in kw:
+         version = kw['tag']
+     elif 'latesttag' in kw:
+         if 'changessincelatesttag' in kw:
+@@ -356,31 +380,45 @@ elif os.path.exists('.hg_archival.txt'):
+         else:
+             version = '%(latesttag)s+hg%(latesttagdistance)s.%(node).12s' % kw
+     else:
+         version = '0+hg' + kw.get('node', '')[:12]
+ elif os.path.exists('mercurial/__version__.py'):
+     with open('mercurial/__version__.py') as f:
+         data = f.read()
+     version = re.search('version = b"(.*)"', data).group(1)
+-
+-if version:
+-    versionb = version
+-    if not isinstance(versionb, bytes):
+-        versionb = versionb.encode('ascii')
++if not version:
++    if os.environ.get("MERCURIAL_SETUP_MAKE_LOCAL") == "1":
++        version = "0.0+0"
++        eprint("/!\\")
++        eprint(r"/!\ Using '0.0+0' as the default version")
++        eprint(r"/!\ Re-run make local once that first version is built")
++        eprint("/!\\")
++    else:
++        eprint("/!\\")
++        eprint(r"/!\ Could not determine the Mercurial version")
++        eprint(r"/!\ You need to build a local version first")
++        eprint(r"/!\ Run `make local` and try again")
++        eprint("/!\\")
++        msg = "Run `make local` first to get a working local version"
++        raise SystemExit(msg)
+-    write_if_changed(
+-        'mercurial/__version__.py',
+-        b''.join(
+-            [
+-                b'# this file is autogenerated by setup.py\n'
+-                b'version = b"%s"\n' % versionb,
+-            ]
+-        ),
+-    )
++versionb = version
++if not isinstance(versionb, bytes):
++    versionb = versionb.encode('ascii')
++
++write_if_changed(
++    'mercurial/__version__.py',
++    b''.join(
++        [
++            b'# this file is autogenerated by setup.py\n'
++            b'version = b"%s"\n' % versionb,
++        ]
++    ),
++)
+ class hgbuild(build):
+     # Insert hgbuildmo first so that files in mercurial/locale/ are found
+     # when build_py is run next.
+     sub_commands = [('build_mo', None)] + build.sub_commands
+diff --git a/tests/filtertraceback.py b/tests/filtertraceback.py
+--- a/tests/filtertraceback.py
++++ b/tests/filtertraceback.py
+@@ -26,14 +26,19 @@ for line in sys.stdin:
+     elif state == 'tb':
+         if line.startswith('  File '):
+             state = 'file'
+             continue
+         elif not line.startswith(' '):
+             state = 'none'
++        elif not line.replace('^', '').replace('~', '').strip():
++            # PEP 657: Fine-grained error locations in tracebacks
++            #                       ~~~~~~^^^^^^^^^
++            continue
++
+     elif state == 'file':
+         # Ignore lines after "  File "
+         state = 'tb'
+         continue
+     print(line, end='')
+diff --git a/tests/hghave.py b/tests/hghave.py
+--- a/tests/hghave.py
++++ b/tests/hghave.py
+@@ -201,25 +201,25 @@ def has_rhg():
+ def has_pyoxidizer():
+     return 'PYOXIDIZED_INSTALLED_AS_HG' in os.environ
+ @check(
+     "pyoxidizer-in-memory",
+     "running with pyoxidizer build as 'hg' with embedded resources",
+ )
+-def has_pyoxidizer():
++def has_pyoxidizer_mem():
+     return 'PYOXIDIZED_IN_MEMORY_RSRC' in os.environ
+ @check(
+     "pyoxidizer-in-filesystem",
+     "running with pyoxidizer build as 'hg' with external resources",
+ )
+-def has_pyoxidizer():
++def has_pyoxidizer_fs():
+     return 'PYOXIDIZED_FILESYSTEM_RSRC' in os.environ
+ @check("cvs", "cvs client/server")
+ def has_cvs():
+     re = br'Concurrent Versions System.*?server'
+     return matchoutput('cvs --version 2>&1', re) and not has_msys()
+@@ -656,46 +656,32 @@ def has_pygments():
+         import pygments
+         pygments.highlight  # silence unused import warning
+         return True
+     except ImportError:
+         return False
+-@check("pygments25", "Pygments version >= 2.5")
+-def pygments25():
++def getpygmentsversion():
+     try:
+         import pygments
+         v = pygments.__version__
++
++        parts = v.split(".")
++        return (int(parts[0]), int(parts[1]))
+     except ImportError:
+-        return False
+-
+-    parts = v.split(".")
+-    major = int(parts[0])
+-    minor = int(parts[1])
+-
+-    return (major, minor) >= (2, 5)
++        return (0, 0)
+-@check("pygments211", "Pygments version >= 2.11")
+-def pygments211():
+-    try:
+-        import pygments
+-
+-        v = pygments.__version__
+-    except ImportError:
+-        return False
+-
+-    parts = v.split(".")
+-    major = int(parts[0])
+-    minor = int(parts[1])
+-
+-    return (major, minor) >= (2, 11)
++@checkvers("pygments", "Pygments version >= %s", (2.5, 2.11, 2.14))
++def has_pygments_range(v):
++    major, minor = v.split('.')[0:2]
++    return getpygmentsversion() >= (int(major), int(minor))
+ @check("outer-repo", "outer repo")
+ def has_outer_repo():
+     # failing for other reasons than 'no repo' imply that there is a repo
+     return not matchoutput('hg root 2>&1', br'abort: no repository found', True)
+diff --git a/tests/test-branches.t b/tests/test-branches.t
+--- a/tests/test-branches.t
++++ b/tests/test-branches.t
+@@ -77,16 +77,21 @@ trailing or leading spaces should be str
+   (use 'hg update' to switch to it)
+   [10]
+   $ hg branch ' b'
+   abort: a branch of the same name already exists
+   (use 'hg update' to switch to it)
+   [10]
++underscores in numeric branch names (issue6737)
++
++  $ hg branch 2700_210
++  marked working directory as branch 2700_210
++
+ verify update will accept invalid legacy branch names
+   $ hg init test-invalid-branch-name
+   $ cd test-invalid-branch-name
+   $ hg unbundle -u "$TESTDIR"/bundles/test-invalid-branch-name.hg
+   adding changesets
+   adding manifests
+   adding file changes
+diff --git a/tests/test-check-shbang.t b/tests/test-check-shbang.t
+--- a/tests/test-check-shbang.t
++++ b/tests/test-check-shbang.t
+@@ -9,17 +9,18 @@ look for python scripts that do not use 
+   [1]
+ In tests, enforce $PYTHON and *not* /usr/bin/env python or similar:
+   $ testrepohg files 'set:grep(r"#!.*?python") and **/*.t' \
+   > -X tests/test-check-execute.t \
+   > -X tests/test-check-format.t \
+   > -X tests/test-check-module-imports.t \
+   > -X tests/test-check-pyflakes.t \
+-  > -X tests/test-check-shbang.t
++  > -X tests/test-check-shbang.t \
++  > -X tests/test-highlight.t
+   [1]
+ The above exclusions are because they're looking for files that
+ contain Python but don't end in .py - please avoid adding more.
+ look for shell scripts that do not use /bin/sh
+   $ testrepohg files 'set:grep(r"^#!.*/bi{1}n/sh") and not grep(r"^#!/bi{1}n/sh")'
+diff --git a/tests/test-chg.t b/tests/test-chg.t
+--- a/tests/test-chg.t
++++ b/tests/test-chg.t
+@@ -347,21 +347,20 @@ remove foo
+   $ hg debugexpandscheme bar://expanded
+   https://bar.example.org/expanded
+   $ cd ..
+ repository cache
+ ----------------
+-  $ rm log/server.log*
+   $ cp $HGRCPATH.unconfigured $HGRCPATH
+   $ cat <<'EOF' >> $HGRCPATH
+   > [cmdserver]
+-  > log = $TESTTMP/log/server.log
++  > log = $TESTTMP/log/server-cached.log
+   > max-repo-cache = 1
+   > track-log = command, repocache
+   > EOF
+ isolate socket directory for stable result:
+   $ OLDCHGSOCKNAME=$CHGSOCKNAME
+   $ mkdir chgsock
+@@ -415,19 +414,17 @@ read uncached repo:
+ shut down servers and restore environment:
+   $ rm -R chgsock
+   $ sleep 2
+   $ CHGSOCKNAME=$OLDCHGSOCKNAME
+ check server log:
+-  $ cat log/server.log | filterlog
+-  YYYY/MM/DD HH:MM:SS (PID)> worker process exited (pid=...)
+-  YYYY/MM/DD HH:MM:SS (PID)> worker process exited (pid=...) (?)
++  $ cat log/server-cached.log | filterlog
+   YYYY/MM/DD HH:MM:SS (PID)> init cached
+   YYYY/MM/DD HH:MM:SS (PID)> id -R cached
+   YYYY/MM/DD HH:MM:SS (PID)> loaded repo into cache: $TESTTMP/cached (in  ...s)
+   YYYY/MM/DD HH:MM:SS (PID)> repo from cache: $TESTTMP/cached
+   YYYY/MM/DD HH:MM:SS (PID)> ci -R cached -Am 'add a'
+   YYYY/MM/DD HH:MM:SS (PID)> loaded repo into cache: $TESTTMP/cached (in  ...s)
+   YYYY/MM/DD HH:MM:SS (PID)> repo from cache: $TESTTMP/cached
+   YYYY/MM/DD HH:MM:SS (PID)> log -R cached
+diff --git a/tests/test-demandimport.py b/tests/test-demandimport.py
+--- a/tests/test-demandimport.py
++++ b/tests/test-demandimport.py
+@@ -4,16 +4,17 @@ demandimport.enable()
+ import os
+ import subprocess
+ import sys
+ import types
+ # Don't import pycompat because it has too many side-effects.
+ ispy3 = sys.version_info[0] >= 3
++ispy311 = (sys.version_info.major, sys.version_info.minor) >= (3, 11)
+ # Only run if demandimport is allowed
+ if subprocess.call(
+     [os.environ['PYTHON'], '%s/hghave' % os.environ['TESTDIR'], 'demandimport']
+ ):
+     sys.exit(80)
+ # We rely on assert, which gets optimized out.
+@@ -76,18 +77,17 @@ else:
+ del os.environ['HGDEMANDIMPORT']
+ demandimport.enable()
+ # Test access to special attributes through demandmod proxy
+ assert 'mercurial.error' not in sys.modules
+ from mercurial import error as errorproxy
+ if ispy3:
+-    # unsure why this isn't lazy.
+-    assert not isinstance(f, _LazyModule)
++    assert isinstance(errorproxy, _LazyModule)
+     assert f(errorproxy) == "<module 'mercurial.error' from '?'>", f(errorproxy)
+ else:
+     assert f(errorproxy) == "<unloaded module 'error'>", f(errorproxy)
+ doc = ' '.join(errorproxy.__doc__.split()[:3])
+ assert doc == 'Mercurial exceptions. This', doc
+ assert errorproxy.__name__ == 'mercurial.error', errorproxy.__name__
+@@ -101,22 +101,28 @@ if ispy3:
+     assert f(errorproxy) == "<module 'mercurial.error' from '?'>", f(errorproxy)
+ else:
+     assert f(errorproxy) == "<proxied module 'error'>", f(errorproxy)
+ import os
+ if ispy3:
+     assert not isinstance(os, _LazyModule)
+-    assert f(os) == "<module 'os' from '?'>", f(os)
++    if ispy311:
++        assert f(os) == "<module 'os' (frozen)>", f(os)
++    else:
++        assert f(os) == "<module 'os' from '?'>", f(os)
+ else:
+     assert f(os) == "<unloaded module 'os'>", f(os)
+ assert f(os.system) == '<built-in function system>', f(os.system)
+-assert f(os) == "<module 'os' from '?'>", f(os)
++if ispy311:
++    assert f(os) == "<module 'os' (frozen)>", f(os)
++else:
++    assert f(os) == "<module 'os' from '?'>", f(os)
+ assert 'mercurial.utils.procutil' not in sys.modules
+ from mercurial.utils import procutil
+ if ispy3:
+     assert isinstance(procutil, _LazyModule)
+     assert f(procutil) == "<module 'mercurial.utils.procutil' from '?'>", f(
+         procutil
+diff --git a/tests/test-extension.t b/tests/test-extension.t
+--- a/tests/test-extension.t
++++ b/tests/test-extension.t
+@@ -593,16 +593,17 @@ Make sure a broken uisetup doesn't globa
+ Even though the extension fails during uisetup, hg is still basically usable:
+   $ hg --config extensions.baduisetup=$TESTTMP/baduisetup.py version
+   Traceback (most recent call last):
+     File "*/mercurial/extensions.py", line *, in _runuisetup (glob) (no-pyoxidizer !)
+     File "mercurial.extensions", line *, in _runuisetup (glob) (pyoxidizer !)
+       uisetup(ui)
+     File "$TESTTMP/baduisetup.py", line 2, in uisetup
+       1 / 0
++      ~~^~~ (py311 !)
+   ZeroDivisionError: * by zero (glob)
+   *** failed to set up extension baduisetup: * by zero (glob)
+   Mercurial Distributed SCM (version *) (glob)
+   (see https://mercurial-scm.org for more information)
+   
+   Copyright (C) 2005-* Olivia Mackall and others (glob)
+   This is free software; see the source for copying conditions. There is NO
+   warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+diff --git a/tests/test-fix.t b/tests/test-fix.t
+--- a/tests/test-fix.t
++++ b/tests/test-fix.t
+@@ -1148,16 +1148,17 @@ useful for anyone trying to set up a new
+   $ hg init debugoutput
+   $ cd debugoutput
+   $ printf "foo\nbar\nbaz\n" > foo.changed
+   $ hg commit -Aqm "foo"
+   $ printf "Foo\nbar\nBaz\n" > foo.changed
+   $ hg --debug fix --working-dir
++  fixing: f65cf3136d41+ - uppercase-changed-lines - foo.changed
+   subprocess: * $TESTTMP/uppercase.py 1-1 3-3 (glob)
+   $ cd ..
+ Fixing an obsolete revision can cause divergence, so we abort unless the user
+ configures to allow it. This is not yet smart enough to know whether there is a
+ successor, but even then it is not likely intentional or idiomatic to fix an
+ obsolete revision.
+diff --git a/tests/test-highlight.t b/tests/test-highlight.t
+--- a/tests/test-highlight.t
++++ b/tests/test-highlight.t
+@@ -158,17 +158,18 @@ hgweb filerevision, html
+   <span id="l2"></span><a href="#l2"></a>
+   <span id="l3"><span class="sd">primes = 2 : sieve [3, 5..]</span></span><a href="#l3"></a>
+   <span id="l4"><span class="sd">    where sieve (p:ns) = p : sieve [n | n &lt;- ns, mod n p /= 0]</span></span><a href="#l4"></a>
+   <span id="l5"><span class="sd">&quot;&quot;&quot;</span></span><a href="#l5"></a>
+   <span id="l6"></span><a href="#l6"></a>
+   <span id="l7"><span class="kn">import</span> <span class="nn">itertools</span></span><a href="#l7"></a>
+   <span id="l8"></span><a href="#l8"></a>
+   <span id="l9"><span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></span><a href="#l9"></a>
+-  <span id="l10">    <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></span><a href="#l10"></a>
++  <span id="l10"><span class="w">    </span><span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></span><a href="#l10"></a> (pygments214 !)
++  <span id="l10">    <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></span><a href="#l10"></a> (no-pygments214 !)
+   <span id="l11">    <span class="kn">def</span> <span class="nf">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></span><a href="#l11"></a>
+   <span id="l12">        <span class="n">p</span> <span class="o">=</span> <span class="n">ns</span><span class="o">.</span><span class="n">next</span><span class="p">()</span></span><a href="#l12"></a>
+   <span id="l13">        <span class="c"># It is important to yield *here* in order to stop the</span></span><a href="#l13"></a>
+   <span id="l14">        <span class="c"># infinite recursion.</span></span><a href="#l14"></a>
+   <span id="l15">        <span class="kn">yield</span> <span class="n">p</span></span><a href="#l15"></a>
+   <span id="l16">        <span class="n">ns</span> <span class="o">=</span> <span class="n">itertools</span><span class="o">.</span><span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">%</span> <span class="n">p</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span></span><a href="#l16"></a>
+   <span id="l17">        <span class="kn">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></span><a href="#l17"></a>
+   <span id="l18">            <span class="kn">yield</span> <span class="n">n</span></span><a href="#l18"></a>
+@@ -484,17 +485,18 @@ hgweb fileannotate, html
+   a
+   </div>
+   <div><em>&#116;&#101;&#115;&#116;</em></div>
+   <div>parents: </div>
+   <a href="/diff/687f2d169546/primes.py">diff</a>
+   <a href="/rev/687f2d169546">changeset</a>
+   </div>
+   </td>
+-  <td class="source followlines-btn-parent"><a href="#l10">    10</a>     <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></td>
++  <td class="source followlines-btn-parent"><a href="#l10">    10</a> <span class="w">    </span><span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></td> (pygments214 !)
++  <td class="source followlines-btn-parent"><a href="#l10">    10</a>     <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></td> (no-pygments214 !)
+   </tr>
+   <tr id="l11" class="thisrev">
+   <td class="annotate parity0">
+   
+   <div class="annotate-info">
+   <div>
+   <a href="/annotate/687f2d169546/primes.py#l11">
+   687f2d169546</a>
+@@ -1003,17 +1005,17 @@ We attempt to highlight unknown files by
+   $ killdaemons.py
+   $ cat > .hg/hgrc << EOF
+   > [web]
+   > highlightfiles = **
+   > EOF
+   $ cat > unknownfile << EOF
+-  > #!$PYTHON
++  > #!/this/helps/pygments/detect/python
+   > def foo():
+   >    pass
+   > EOF
+   $ hg add unknownfile
+   $ hg commit -m unknown unknownfile
+   $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid
+diff --git a/tests/test-lfs-serve-access.t b/tests/test-lfs-serve-access.t
+--- a/tests/test-lfs-serve-access.t
++++ b/tests/test-lfs-serve-access.t
+@@ -335,22 +335,24 @@ Test a checksum failure during the proce
+   $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/276f73cfd75f9fb519810df5f5d96d6594ca2521abd86cbcd92122f7d51a1f3d HTTP/1.1" 500 - (glob)
+   $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
+   $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/276f73cfd75f9fb519810df5f5d96d6594ca2521abd86cbcd92122f7d51a1f3d HTTP/1.1" 422 - (glob)
+   $ grep -v '  File "' $TESTTMP/errors.log
+   $LOCALIP - - [$ERRDATE$] HG error:  Exception happened while processing request '/.git/info/lfs/objects/batch': (glob)
+   $LOCALIP - - [$ERRDATE$] HG error:  Traceback (most recent call last): (glob)
+   $LOCALIP - - [$ERRDATE$] HG error:      verifies = store.verify(oid) (glob)
++  $LOCALIP - - [$ERRDATE$] HG error:                 ^^^^^^^^^^^^^^^^^ (glob) (py311 !)
+   $LOCALIP - - [$ERRDATE$] HG error:      raise IOError(errno.EIO, r'%s: I/O error' % oid.decode("utf-8")) (glob)
+   $LOCALIP - - [$ERRDATE$] HG error:  *Error: [Errno *] f03217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e: I/O error (glob)
+   $LOCALIP - - [$ERRDATE$] HG error:   (glob)
+   $LOCALIP - - [$ERRDATE$] HG error:  Exception happened while processing request '/.git/info/lfs/objects/batch': (glob)
+   $LOCALIP - - [$ERRDATE$] HG error:  Traceback (most recent call last): (glob)
+   $LOCALIP - - [$ERRDATE$] HG error:      verifies = store.verify(oid) (glob)
++  $LOCALIP - - [$ERRDATE$] HG error:                 ^^^^^^^^^^^^^^^^^ (glob) (py311 !)
+   $LOCALIP - - [$ERRDATE$] HG error:      raise IOError(errno.EIO, r'%s: I/O error' % oid.decode("utf-8")) (glob)
+   $LOCALIP - - [$ERRDATE$] HG error:  *Error: [Errno *] b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c: I/O error (glob)
+   $LOCALIP - - [$ERRDATE$] HG error:   (glob)
+   $LOCALIP - - [$ERRDATE$] HG error:  Exception happened while processing request '/.hg/lfs/objects/b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c': (glob)
+   $LOCALIP - - [$ERRDATE$] HG error:  Traceback (most recent call last): (glob)
+   $LOCALIP - - [$ERRDATE$] HG error:      localstore.download(oid, req.bodyfh, req.headers[b'Content-Length'])
+   $LOCALIP - - [$ERRDATE$] HG error:      super(badstore, self).download(oid, src, contentlength)
+   $LOCALIP - - [$ERRDATE$] HG error:      raise LfsCorruptionError( (glob) (py38 !)
+@@ -358,29 +360,36 @@ Test a checksum failure during the proce
+   $LOCALIP - - [$ERRDATE$] HG error:  hgext.lfs.blobstore.LfsCorruptionError: corrupt remote lfs object: b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c (py3 !)
+   $LOCALIP - - [$ERRDATE$] HG error:   (glob)
+   $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/.hg/lfs/objects/276f73cfd75f9fb519810df5f5d96d6594ca2521abd86cbcd92122f7d51a1f3d': (glob)
+   Traceback (most recent call last):
+       self.do_write()
+       self.do_hgweb()
+       for chunk in self.server.application(env, self._start_response):
+       for r in self._runwsgi(req, res, repo):
++               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (py311 !)
+       handled = wireprotoserver.handlewsgirequest( (py38 !)
++                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (py311 !)
+       return _processbasictransfer( (py38 !)
++             ^^^^^^^^^^^^^^^^^^^^^^ (py311 !)
+       rctx, req, res, self.check_perm (no-py38 !)
+       rctx.repo, req, res, lambda perm: checkperm(rctx, req, perm) (no-py38 !)
+       res.setbodybytes(localstore.read(oid))
++                       ^^^^^^^^^^^^^^^^^^^^ (py311 !)
+       blob = self._read(self.vfs, oid, verify)
++             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (py311 !)
+       raise IOError(errno.EIO, r'%s: I/O error' % oid.decode("utf-8"))
+   *Error: [Errno *] 276f73cfd75f9fb519810df5f5d96d6594ca2521abd86cbcd92122f7d51a1f3d: I/O error (glob)
+   
+   $LOCALIP - - [$ERRDATE$] HG error:  Exception happened while processing request '/.hg/lfs/objects/276f73cfd75f9fb519810df5f5d96d6594ca2521abd86cbcd92122f7d51a1f3d': (glob)
+   $LOCALIP - - [$ERRDATE$] HG error:  Traceback (most recent call last): (glob)
+   $LOCALIP - - [$ERRDATE$] HG error:      res.setbodybytes(localstore.read(oid)) (glob)
++  $LOCALIP - - [$ERRDATE$] HG error:                       ^^^^^^^^^^^^^^^^^^^^ (glob) (py311 !)
+   $LOCALIP - - [$ERRDATE$] HG error:      blob = self._read(self.vfs, oid, verify) (glob)
++  $LOCALIP - - [$ERRDATE$] HG error:             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (glob) (py311 !)
+   $LOCALIP - - [$ERRDATE$] HG error:      blobstore._verify(oid, b'dummy content') (glob)
+   $LOCALIP - - [$ERRDATE$] HG error:      raise LfsCorruptionError( (glob) (py38 !)
+   $LOCALIP - - [$ERRDATE$] HG error:      hint=_(b'run hg verify'), (glob) (no-py38 !)
+   $LOCALIP - - [$ERRDATE$] HG error:  hgext.lfs.blobstore.LfsCorruptionError: detected corrupt lfs object: 276f73cfd75f9fb519810df5f5d96d6594ca2521abd86cbcd92122f7d51a1f3d (py3 !)
+   $LOCALIP - - [$ERRDATE$] HG error:   (glob)
+ Basic Authorization headers are returned by the Batch API, and sent back with
+ the GET/PUT request.
+diff --git a/tests/test-narrow-clone.t b/tests/test-narrow-clone.t
+--- a/tests/test-narrow-clone.t
++++ b/tests/test-narrow-clone.t
+@@ -23,16 +23,28 @@ Only path: and rootfilesin: pattern pref
+   (narrow patterns must begin with one of the following: path:, rootfilesin:)
+   [255]
+   $ hg clone --narrow ssh://user@dummy/master badnarrow --noupdate --exclude 'set:ignored'
+   abort: invalid prefix on narrow pattern: set:ignored
+   (narrow patterns must begin with one of the following: path:, rootfilesin:)
+   [255]
++rootfilesin: patterns work
++
++  $ hg clone --narrow ssh://user@dummy/master rootfilesin --noupdate --include 'rootfilesin:dir'
++  requesting all changes
++  adding changesets
++  adding manifests
++  adding file changes
++  added 1 changesets with 0 changes to 0 files
++  new changesets 26ce255d5b5d
++  $ hg tracked -R rootfilesin
++  I rootfilesin:dir
++
+ narrow clone a file, f10
+   $ hg clone --narrow ssh://user@dummy/master narrow --noupdate --include "dir/src/f10"
+   requesting all changes
+   adding changesets
+   adding manifests
+   adding file changes
+   added 3 changesets with 1 changes to 1 files
+diff --git a/tests/test-remotefilelog-local.t b/tests/test-remotefilelog-local.t
+--- a/tests/test-remotefilelog-local.t
++++ b/tests/test-remotefilelog-local.t
+@@ -72,16 +72,21 @@
+   2 files updated, 0 files merged, 1 files removed, 0 files unresolved
+   $ clearcache
+   $ hg debugdirstate
+   n 644          2 * x (glob)
+   n 644          2 * y (glob)
+   n 644          2 * z (glob)
+   $ echo xxxx > x
+   $ echo yyyy > y
++# run status early to avoid a flaky second fetch during commit.
++  $ hg st
++  M x
++  M y
++  \d+ files fetched over \d+ fetches .* (re) (?)
+   $ hg commit -m x
+   created new head
+   2 files fetched over 1 fetches - (2 misses, 0.00% hit ratio) over *s (glob)
+ # restore state for future tests
+   $ hg -q strip .
+   $ hg -q up tip
+@@ -99,16 +104,19 @@
+   searching for changes
+   adding changesets
+   adding manifests
+   adding file changes
+   added 1 changesets with 0 changes to 0 files (+1 heads)
+   new changesets fed61014d323
+   (run 'hg heads' to see heads, 'hg merge' to merge)
++# run status early to avoid a flaky second fetch during commit
++  $ hg status
++  \d+ files fetched over \d+ fetches .* (re) (?)
+   $ hg rebase -d tip
+   rebasing 1:9abfe7bca547 "a"
+   saved backup bundle to $TESTTMP/shallow/.hg/strip-backup/9abfe7bca547-8b11e5ff-rebase.hg (glob)
+   3 files fetched over 2 fetches - (3 misses, 0.00% hit ratio) over *s (glob)
+ # strip
+   $ clearcache
+diff --git a/tests/test-requires.t b/tests/test-requires.t
+--- a/tests/test-requires.t
++++ b/tests/test-requires.t
+@@ -76,9 +76,19 @@ another repository of push/pull/clone on
+   $ hg clone supported clone-dst
+   abort: repository requires features unknown to this Mercurial: featuresetup-test
+   (see https://mercurial-scm.org/wiki/MissingRequirement for more information)
+   [255]
+   $ hg clone --pull supported clone-dst
+   abort: required features are not supported in the destination: featuresetup-test
+   [255]
++Bundlerepo also enforces the underlying repo requirements
++
++  $ hg --cwd supported bundle --all ../bundle.hg
++  1 changesets found
++  $ echo outdoor-pool > push-dst/.hg/requires
++  $ hg --cwd push-dst log -R ../bundle.hg -T phases
++  abort: repository requires features unknown to this Mercurial: outdoor-pool
++  (see https://mercurial-scm.org/wiki/MissingRequirement for more information)
++  [255]
++
+   $ cd ..
+diff --git a/tests/test-revset.t b/tests/test-revset.t
+--- a/tests/test-revset.t
++++ b/tests/test-revset.t
+@@ -2976,26 +2976,26 @@ test sorting by multiple keys including 
+ random sort
+   $ hg log --rev 'sort(all(), "random")' | wc -l
+   \s*8 (re)
+   $ hg log --rev 'sort(all(), "-random")' | wc -l
+   \s*8 (re)
+   $ hg log --rev 'sort(all(), "random", random.seed=celeste)'
++  0 b12  m111 u112 111 10800
++  4 b111 m112 u111 110 14400
++  2 b111 m11  u12  111 3600
+   6 b111 t2   tu   130 0
++  1 b11  m12  u111 112 7200
+   7 b111 t3   tu   130 0
+-  4 b111 m112 u111 110 14400
+-  3 b112 m111 u11  120 0
+   5 b111 t1   tu   130 0
++  3 b112 m111 u11  120 0
++  $ hg log --rev 'first(sort(all(), "random", random.seed=celeste))'
+   0 b12  m111 u112 111 10800
+-  1 b11  m12  u111 112 7200
+-  2 b111 m11  u12  111 3600
+-  $ hg log --rev 'first(sort(all(), "random", random.seed=celeste))'
+-  6 b111 t2   tu   130 0
+ topographical sorting can't be combined with other sort keys, and you can't
+ use the topo.firstbranch option when topo sort is not active:
+   $ hg log -r 'sort(all(), "topo user")'
+   hg: parse error: topo sort order cannot be combined with other sort keys
+   [10]
+diff --git a/tests/test-tag.t b/tests/test-tag.t
+--- a/tests/test-tag.t
++++ b/tests/test-tag.t
+@@ -407,16 +407,20 @@ tagging on null rev
+   $ hg tag -R empty nullrev
+   abort: cannot tag null revision
+   [10]
+   $ hg tag -R empty -r 00000000000 -f nulltag
+   abort: cannot tag null revision
+   [10]
++  $ hg tag -R empty -r "wdir()" -f wdirtag
++  abort: cannot tag working directory
++  [10]
++
+ issue5539: pruned tags do not appear in .hgtags
+   $ cat >> $HGRCPATH << EOF
+   > [experimental]
+   > evolution.exchange = True
+   > evolution.createmarkers=True
+   > EOF
+   $ hg up e4d483960b9b --quiet
diff --git a/patches/openssl_3_cipher_tlsv1.patch b/patches/openssl_3_cipher_tlsv1.patch
new file mode 100644 (file)
index 0000000..1c34cc7
--- /dev/null
@@ -0,0 +1,87 @@
+Tweak cipher selection further to make tls < 1.2 work with openssl 3
+
+Ref: https://bugs.debian.org/1011076
+
+--- a/mercurial/sslutil.py
++++ b/mercurial/sslutil.py
+@@ -117,17 +117,17 @@ def _hostsettings(ui, hostname):
+     ciphers = ui.config(b'hostsecurity', b'%s:ciphers' % bhostname, ciphers)
+     # If --insecure is used, we allow the use of TLS 1.0 despite config options.
+     # We always print a "connection security to %s is disabled..." message when
+     # --insecure is used. So no need to print anything more here.
+     if ui.insecureconnections:
+         minimumprotocol = b'tls1.0'
+         if not ciphers:
+-            ciphers = b'DEFAULT'
++            ciphers = b'DEFAULT:@SECLEVEL=0'
+     s[b'minimumprotocol'] = minimumprotocol
+     s[b'ciphers'] = ciphers
+     # Look for fingerprints in [hostsecurity] section. Value is a list
+     # of <alg>:<fingerprint> strings.
+     fingerprints = ui.configlist(
+         b'hostsecurity', b'%s:fingerprints' % bhostname
+@@ -621,17 +621,17 @@ def wrapserversocket(
+     # Improve forward secrecy.
+     sslcontext.options |= getattr(ssl, 'OP_SINGLE_DH_USE', 0)
+     sslcontext.options |= getattr(ssl, 'OP_SINGLE_ECDH_USE', 0)
+     # In tests, allow insecure ciphers
+     # Otherwise, use the list of more secure ciphers if found in the ssl module.
+     if exactprotocol:
+-        sslcontext.set_ciphers('DEFAULT')
++        sslcontext.set_ciphers('DEFAULT:@SECLEVEL=0')
+     elif util.safehasattr(ssl, b'_RESTRICTED_SERVER_CIPHERS'):
+         sslcontext.options |= getattr(ssl, 'OP_CIPHER_SERVER_PREFERENCE', 0)
+         # pytype: disable=module-attr
+         sslcontext.set_ciphers(ssl._RESTRICTED_SERVER_CIPHERS)
+         # pytype: enable=module-attr
+     if requireclientcert:
+         sslcontext.verify_mode = ssl.CERT_REQUIRED
+--- a/tests/test-https.t
++++ b/tests/test-https.t
+@@ -356,19 +356,19 @@ Start servers running supported TLS vers
+   $ cat ../hg1.pid >> $DAEMON_PIDS
+   $ hg serve -p $HGPORT2 -d --pid-file=../hg2.pid --certificate=$PRIV \
+   > --config devel.serverexactprotocol=tls1.2
+   $ cat ../hg2.pid >> $DAEMON_PIDS
+   $ cd ..
+ Clients talking same TLS versions work
+-  $ P="$CERTSDIR" hg --config hostsecurity.minimumprotocol=tls1.0 --config hostsecurity.ciphers=DEFAULT id https://localhost:$HGPORT/
++  $ P="$CERTSDIR" hg --config hostsecurity.minimumprotocol=tls1.0 --config hostsecurity.ciphers=DEFAULT:@SECLEVEL=0 id https://localhost:$HGPORT/
+   5fed3813f7f5
+-  $ P="$CERTSDIR" hg --config hostsecurity.minimumprotocol=tls1.1 --config hostsecurity.ciphers=DEFAULT id https://localhost:$HGPORT1/
++  $ P="$CERTSDIR" hg --config hostsecurity.minimumprotocol=tls1.1 --config hostsecurity.ciphers=DEFAULT:@SECLEVEL=0 id https://localhost:$HGPORT1/
+   5fed3813f7f5
+   $ P="$CERTSDIR" hg --config hostsecurity.minimumprotocol=tls1.2 id https://localhost:$HGPORT2/
+   5fed3813f7f5
+ Clients requiring newer TLS version than what server supports fail
+   $ P="$CERTSDIR" hg id https://localhost:$HGPORT/
+   (could not negotiate a common security protocol (tls1.1+) with localhost; the likely cause is Mercurial is configured to be more secure than the server can support)
+@@ -400,17 +400,17 @@ Clients requiring newer TLS version than
+   $ hg --config hostsecurity.minimumprotocol=tls1.2 id --insecure https://localhost:$HGPORT1/
+   warning: connection security to localhost is disabled per current settings; communication is susceptible to eavesdropping and tampering
+   5fed3813f7f5
+ The per-host config option overrides the default
+   $ P="$CERTSDIR" hg id https://localhost:$HGPORT/ \
+-  > --config hostsecurity.ciphers=DEFAULT \
++  > --config hostsecurity.ciphers=DEFAULT:@SECLEVEL=0 \
+   > --config hostsecurity.minimumprotocol=tls1.2 \
+   > --config hostsecurity.localhost:minimumprotocol=tls1.0
+   5fed3813f7f5
+ The per-host config option by itself works
+   $ P="$CERTSDIR" hg id https://localhost:$HGPORT/ \
+   > --config hostsecurity.localhost:minimumprotocol=tls1.2
diff --git a/patches/patchbomb-ambiguous-address.patch b/patches/patchbomb-ambiguous-address.patch
new file mode 100644 (file)
index 0000000..7dffe2f
--- /dev/null
@@ -0,0 +1,36 @@
+# HG changeset patch
+# User Raphaël Gomès <rgomes@octobus.net>
+# Date 1729684194 -7200
+#      Wed Oct 23 13:49:54 2024 +0200
+# Branch stable
+# Node ID d906406658a947ab64b34302df15be21e928ba24
+# Parent  e760a36a601336f75016e5c2bbc5a53da2ea7182
+patchbomb: don't test ambiguous address
+
+This is a bug in Python's `email` package and shouldn't be relied on.
+Python 3.12 has fixed this problem¹ and raises an exception. We keep the
+multiple `-t` because this is still relevant for testing.
+
+[1] https://github.com/python/cpython/issues/102988
+[2] https://docs.python.org/3/whatsnew/changelog.html
+
+--- a/tests/test-patchbomb.t
++++ b/tests/test-patchbomb.t
+@@ -2377,7 +2377,7 @@ test multiple flags for multiple patches
+   
+ test multi-address parsing:
+-  $ hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t 'spam<spam><eggs>' \
++  $ hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t 'spam<spam>' \
+   >  -t toast -c 'foo,bar@example.com' -c '"A, B <>" <a@example.com>' -s test -r 0 \
+   >  --config email.bcc='"Quux, A." <quux>'
+   this patch series consists of 1 patches.
+@@ -2398,7 +2398,7 @@ test multi-address parsing:
+   User-Agent: Mercurial-patchbomb/* (glob)
+   Date: Tue, 01 Jan 1980 00:01:00 +0000
+   From: quux
+-  To: =?iso-8859-1?q?spam?= <spam>, eggs, toast (py3 !)
++  To: =?iso-8859-1?q?spam?= <spam>, toast (py3 !)
+   Cc: foo, bar@example.com, =?iso-8859-1?q?A=2C_B_=3C=3E?= <a@example.com> (py3 !)
+   Bcc: =?iso-8859-1?q?Quux=2C_A=2E?= <quux> (py3 !)
+   
diff --git a/patches/proposed_upstream__doctest.path b/patches/proposed_upstream__doctest.path
new file mode 100644 (file)
index 0000000..82e6a89
--- /dev/null
@@ -0,0 +1,55 @@
+# HG changeset patch
+# User Julien Cristau <jcristau@debian.org>
+# Date 1589916203 -7200
+#      Tue May 19 21:23:23 2020 +0200
+# Node ID de789b6b188b62cf38c5c5cfe760cff9a48c52f5
+# Parent  3b7aabd02e11fcfc015b3a90a0c52d971a7b8a83
+test: make test-doctest.py work when it's not run from a mercurial repo
+
+This assumption fails when building and running tests from a source
+tarball, e.g.
+
+Differential Revision: https://phab.mercurial-scm.org/D8571
+---
+ tests/test-doctest.py | 23 ++++++++++++-----------
+ 1 file changed, 12 insertions(+), 11 deletions(-)
+
+--- a/tests/test-doctest.py
++++ b/tests/test-doctest.py
+@@ -4,7 +4,6 @@
+ import doctest
+ import os
+ import re
+-import subprocess
+ import sys
+ ispy3 = sys.version_info[0] >= 3
+@@ -68,16 +67,18 @@ testmod_arg_overrides = {
+ fileset = 'set:(**.py)'
+-cwd = os.path.dirname(os.environ["TESTDIR"])
+-
+-if not os.path.isdir(os.path.join(cwd, ".hg")):
+-    sys.exit(0)
+-
+-files = subprocess.check_output(
+-    "hg files --print0 \"%s\"" % fileset,
+-    shell=True,
+-    cwd=cwd,
+-).split(b'\0')
++if ispy3:
++    cwd = os.path.dirname(os.environb[b"TESTDIR"])
++else:
++    cwd = os.path.dirname(os.environ["TESTDIR"])
++
++files = []
++for dirpath, dirnames, filenames in os.walk(cwd):
++    excludeddirindexes = reversed([i for i, dir in enumerate(dirnames) if dir == b'build' or dir.startswith(b'.')])
++    for i in excludeddirindexes:
++        del dirnames[i]
++    # include all .py files, removing the cwd + dirsep prefix
++    files.extend(os.path.join(dirpath, f)[len(cwd) + 1:] for f in filenames if f.endswith(b'.py'))
+ if sys.version_info[0] >= 3:
+     cwd = os.fsencode(cwd)
diff --git a/patches/py310/9_tests__silence_asyncore_smtpd_deprecation_warnings.patch b/patches/py310/9_tests__silence_asyncore_smtpd_deprecation_warnings.patch
new file mode 100644 (file)
index 0000000..d7ce819
--- /dev/null
@@ -0,0 +1,36 @@
+# HG changeset patch
+# User Julien Cristau <jcristau@debian.org>
+# Date 1649671433 -7200
+#      Mon Apr 11 12:03:53 2022 +0200
+# Node ID d3df32e12246208fc8bb9507ff921099348c6783
+# Parent  5005928cac60a43d98d88523713983efdc204d50
+tests: silence asyncore/smtpd deprecation warnings
+
+--- a/tests/dummysmtpd.py
++++ b/tests/dummysmtpd.py
+@@ -1,19 +1,23 @@
+ #!/usr/bin/env python
+ """dummy SMTP server for use in tests"""
+-import asyncore
+ import optparse
+-import smtpd
+ import ssl
+ import sys
+ import traceback
++import warnings
++
++with warnings.catch_warnings():
++    warnings.filterwarnings('ignore', 'The (asyncore|smtpd) module is deprecated', DeprecationWarning)
++    import asyncore
++    import smtpd
+ from mercurial import (
+     pycompat,
+     server,
+     sslutil,
+     ui as uimod,
+ )
diff --git a/patches/series b/patches/series
new file mode 100644 (file)
index 0000000..310dbe8
--- /dev/null
@@ -0,0 +1,12 @@
+from_upstream_stable.patch
+py310/9_tests__silence_asyncore_smtpd_deprecation_warnings.patch
+proposed_upstream__doctest.path
+deb_specific__hgk.py.patch
+deb_specific__optional-dependencies
+deb_specific__disable_libdir_replacement.patch
+0005-Tolerate-SIGINT-getting-the-kill-in-test-stdio.py.patch
+openssl_3_cipher_tlsv1.patch
+test-hghave-testrepo.patch
+cgitb.patch
+CVE-2025-2361.patch
+patchbomb-ambiguous-address.patch
diff --git a/patches/test-hghave-testrepo.patch b/patches/test-hghave-testrepo.patch
new file mode 100644 (file)
index 0000000..17dfe15
--- /dev/null
@@ -0,0 +1,20 @@
+https://bz.mercurial-scm.org/show_bug.cgi?id=6762
+
+diff --git a/tests/test-hghave.t b/tests/test-hghave.t
+index d51fdcbf..a49caa42 100644
+--- a/tests/test-hghave.t
++++ b/tests/test-hghave.t
+@@ -1,5 +1,3 @@
+-  $ . "$TESTDIR/helpers-testrepo.sh"
+-
+ Testing that hghave does not crash when checking features
+   $ hghave --test-features 2>/dev/null
+@@ -21,7 +19,6 @@ Testing hghave extensibility for third party tools
+   >   foo
+   > EOF
+   $ ( \
+-  > testrepohgenv; \
+   > "$PYTHON" $TESTDIR/run-tests.py --with-hg=$HGTEST_REAL_HG -j 1 \
+   >    $HGTEST_RUN_TESTS_PURE test-hghaveaddon.t \
+   > )
diff --git a/rules b/rules
new file mode 100755 (executable)
index 0000000..9cd39bb
--- /dev/null
+++ b/rules
@@ -0,0 +1,101 @@
+#!/usr/bin/make -f
+# -*- mode: makefile; coding: utf-8 -*-
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+%:
+       dh $@ --with python3,bash-completion
+
+PYVERS=$(shell py3versions -vs)
+
+include /usr/share/dpkg/architecture.mk
+
+override_dh_python3:
+       dh_python3 --shebang=/usr/bin/python3
+
+override_dh_auto_build: $(PYVERS:%=build-python%)
+       $(MAKE) build-chg
+       # Do not start a line with a word with a dot in a manpage
+       sed -i -e 's,^[.]\(hgignore\|hg/hgrc\),\\fP\1,' doc/hg.1
+
+build-python%:
+       $(MAKE) all PYTHON=python$*
+
+ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+         NJOBS := $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+         PARALLEL_TEST_JOBS := --jobs $(NJOBS)
+endif
+
+ARCH_IS_MIPS := $(if $(subst mips,,$(DEB_HOST_ARCH)),,T)
+ARCH_IS_KFREEBSD-i386 := $(if $(subst kfreebsd-i386,,$(DEB_HOST_ARCH)),,T)
+ARCH_IS_ARMEL := $(if $(subst armel,,$(DEB_HOST_ARCH)),,T)
+ARCH_IS_SPARC := $(if $(subst sparc,,$(DEB_HOST_ARCH)),,T)
+
+override_dh_auto_test:
+ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
+# test-pull-pull-corruption tries to execute two hg commands at the
+# same time to test for corruption.  It does so by running an hg
+# command in the background, sleeping one second and running the
+# second command.  In architectures with slow buildds, one second is
+# not enough and the second test starts before the first one has
+# started printing.  This is hacky and we just enhance the hack by
+# incrementing the sleep time in those architectures.
+ifneq ($(or $(ARCH_IS_MIPS), $(ARCH_IS_KFREEBSD-i386), $(ARCH_IS_ARMEL), $(ARCH_IS_SPARC)),)
+               sed -i.deb-backup -e 's/sleep 1/sleep 2/' $(CURDIR)/tests/test-pull-pull-corruption.t
+endif
+
+       http_proxy='' dh_auto_test -- PYTHON=python3 TESTFLAGS="--verbose --timeout 1800 $(PARALLEL_TEST_JOBS) --blacklist $(CURDIR)/debian/mercurial.test_blacklist"
+       file-rename 's/\.deb-backup$$//' $(CURDIR)/tests/*
+       # run blacklisted tests but ignore their results
+       -cd tests && python3 run-tests.py --verbose `grep ^test ../debian/mercurial.test_blacklist`
+endif
+
+override_dh_auto_install: $(PYVERS:%=install-python%)
+       $(MAKE) install-chg DESTDIR=$(CURDIR)/debian/tmp PREFIX=/usr PYTHON=python3
+       # #961245: mercurial-git grabbed the hgext/git directory years
+       # ago, so don't install our experimental extension there for now
+       rm -rf debian/tmp/usr/lib/python*/*-packages/hgext/git
+
+install-python%:
+       dh_auto_install -- PREFIX=/usr PYTHON=python$*
+
+execute_after_dh_install:
+       if test -d $(CURDIR)/debian/mercurial ; then \
+               $(MAKE) -f debian/rules install-archdep ; \
+       fi
+       if test -d $(CURDIR)/debian/mercurial-common ; then \
+               $(MAKE) -f debian/rules install-archindep ;\
+       fi
+
+install-archdep:
+       # remove arch-independent python stuff
+       find debian/mercurial/usr/lib \
+               ! -name '*.so' ! -type d -delete , \
+               -type d -empty -delete
+
+install-archindep:
+       # remove arch-dependent python stuff
+       find debian/mercurial-common/usr/lib \
+               -name '*.so' ! -type d -delete , \
+               -type d -empty -delete
+       install -DTm 644 contrib/zsh_completion \
+           debian/mercurial-common/usr/share/zsh/vendor-completions/_mercurial
+       install -DTm 644 tests/run-tests.py \
+           debian/mercurial-common/usr/share/mercurial/tests/run-tests.py
+
+override_dh_python3-arch:
+       dh_python3
+       find debian/mercurial/usr/share -type d -empty -delete ; \
+
+override_dh_auto_clean: mercurial/__version__.py
+       cp -a mercurial/__version__.py mercurial/__version__.py.save
+       dh_auto_clean -- PYTHON=python3
+       mv mercurial/__version__.py.save mercurial/__version__.py
+       $(RM) -rv tmp/
+
+mercurial/__version__.py:
+       @echo "$@ is missing (you probably call 'make clean' directly)."
+       @echo "Restore it from sources before building the package"
+       @echo "Aborting."
+       exit 1
diff --git a/source/format b/source/format
new file mode 100644 (file)
index 0000000..163aaf8
--- /dev/null
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/tests/control b/tests/control
new file mode 100644 (file)
index 0000000..d111a02
--- /dev/null
@@ -0,0 +1,27 @@
+Tests: testsuite
+Depends:
+    @,
+    python3-packaging,
+    zip,
+    unzip,
+    netbase,
+    subversion,
+    python3-subversion,
+    cvs,
+    bzr,
+    tla,
+    git,
+    darcs,
+    gcc,
+    python3-dev,
+    less,
+    gettext,
+    pylint,
+    python3-pygments,
+    python3-docutils,
+    sqlite3,
+    clang-format,
+    python3-vcr,
+    python3-fuzzywuzzy,
+    python3-pygit2,
+Restrictions: allow-stderr
diff --git a/tests/hgsubversion b/tests/hgsubversion
new file mode 100755 (executable)
index 0000000..c520eca
--- /dev/null
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+# This actually tests that hgsubversion is not broken and it really
+# belongs in the hgsubversion package (it's there).  I'm copying it
+# here because that way I can test if a new version of mercurial
+# breaks hgsubversion and update Breaks accordingly.  There's probably
+# a better way of doing this.
+
+set -e
+
+SVN_ROOT=$(mktemp --tmpdir -d hgsubversion.XXXXX)
+mkdir -p $SVN_ROOT
+
+PID_FILE=/tmp/svnmock.pid
+
+# Create a local svn server with an empty repo
+svnadmin create $SVN_ROOT/celesteville
+cat > $SVN_ROOT/celesteville/conf/svnserve.conf << EOF
+[general]
+anon-access = write
+EOF
+svnserve -d --pid-file $PID_FILE -r $SVN_ROOT
+
+# Put some content in the repository
+svn co svn://127.0.0.1/celesteville
+cd celesteville
+mkdir trunk tags branches
+svn add trunk tags branches
+svn commit -m "Initial commit"
+echo Cornelius > trunk/people
+svn add trunk/people
+svn commit -m "Add people"
+cd ..
+rm -rf celesteville
+
+# Now test hgsubversion
+hg --config extensions.hgsubversion= clone svn://127.0.0.1/celesteville
+cd celesteville
+echo Arthur >> people
+hg commit -u "Babar <babar@jungle.org>" -m "Add more people"
+hg --config extensions.hgsubversion= push
+cd ..
+
+# Kill the server and cleanup
+kill $(cat $PID_FILE)
+rm -rf $SVN_ROOT
+
+rm -r celesteville
diff --git a/tests/mercurial-git b/tests/mercurial-git
new file mode 100755 (executable)
index 0000000..2b404c0
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/sh
+#
+# Basic test to see if the mercurial-git extension still works.
+
+set -e
+
+# Setup a git repository with some content
+git init --bare git_server
+git clone git_server git_clone 2>&1
+cd git_clone
+git config user.name Babar
+git config user.email babar@jungle.org
+echo a >a
+git add a
+git commit -m a
+git push origin master 2>&1
+cd ..
+
+# Now try to clone it with mercurial-git
+hg --config extensions.git= clone git_server hg_clone
+
+# Do some changes and push them to the git server
+cd hg_clone
+echo b >>a
+hg commit -u "Babar <babar@jungle.org>" -m "more content to a"
+exec hg --config extensions.git= push
diff --git a/tests/testsuite b/tests/testsuite
new file mode 100755 (executable)
index 0000000..48f4c0f
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+set -ex
+
+exec make tests TESTFLAGS="--verbose --timeout 1800 --with-hg=/usr/bin/hg --blacklist=$(pwd)/debian/mercurial.test_blacklist" PYTHON=python3
diff --git a/upstream/signing-key.asc b/upstream/signing-key.asc
new file mode 100644 (file)
index 0000000..a0b9a28
--- /dev/null
@@ -0,0 +1,572 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+yrWppKRpUcx2Zb9PbwZPNLn5sjbYlQ==
+=NmUV
+-----END PGP PUBLIC KEY BLOCK-----
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFH/ChIBEADEajjD1+fw19RfXYGwuez6W3PL7w1NQ6AsDVyd0rqTwIGv30Z7
+sO3jt4I6C39/ZcNWyI4sJOvr0RGp6NaKV+BuL4I1R/cvVpC6eV1swC3iYca1DWIZ
+pyHgjZt4EylXWCAljAZB85UMELKbklghYO4wMlwzwHmpFM0OasG+amFdpjvZWPWw
+I6ofi39exrb43+UhDJ070wlvSdrZ7hNUpCjHcEbkdoI8X1SuCB9TmYEcNzxI8pr/
+/pAaRUnNwGNeDAnHC5cOWulbOSz7se4EiHtRGATXg83rQucH7XgPJO7tvSWhVXHW
+ZgOWVblR/5q1q8IKfD+R8ljIcHn04lO0su54D8e+4D0CgVb4XWeF82vnLMYPqoOI
+8BM/kYyI5S/Kd4FF2BYU0JqXC4WZJrSOvVbMCSWF64x7R3FMYvsu8kG9/e54mMoo
+aV1DQeTTidVTBY1/f7XWBnsTCNsTtqfCPWL6cuqpD7gEg24wrT5lepSjmUub6bKd
+xOYt0M1Ku2byOjDiihqqkBTSAT34n59e8i9abV0i4IB7IeKr6Hvy2gfd68uwg/13
+Cuo/tUhRn+3NUQs9BzEqE6Wo3oqGS/zxuND2Wk+WEyORvV4MjbIL7W6gSaRgomm7
+63TvkTKGBrx/Srv1LNZVcjQVug45LwjLlBlHNsRJHXlfSdy4SIqnfsoIrwARAQAB
+tCBLZXZpbiBCdWxsb2NrIDxrYnVsbG9ja0B1bW4uZWR1PokCPgQTAQIAKAUCUf8M
+zgIbAwUJCWYBgAYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQR6Z/+qNGqs6i
+Lg//Q7WLllLFHaMEzrHnYz6TcztZVOoaU1gDljzYlPnsME4GDyJ1Eh9EE9vTbgfn
+FGHGMPIs4sgX/O86rV2vLif9x5y2zawi7drIYeffeDWKagWySdCV9aqJMLIUGKBH
+/eUqqehntuNnK82TuzhWjNn3iGJ+mU77TS+uWcF0xGlILY2Yd1V79Y+97hgqDsPG
+aBVN96Il/401GIHYWTfTd+Sl82Lcthtq2qNVaqMw9wfyFE4TABDt9wNqIeTRGrtP
+h23vNckLuIxNCJbyExfKYBlQa9AesDTjxEzKGIoAD2xQnGawBtEpgN/d9PqVb9xx
+IFNbBwWNGPg13TO3EssSPGwkUxE2Th0YzCA+3+bMahNhc5ZnJYU92LpnCdNo5nWs
+g7JpxCU3Z21ws8YijRQC4WmZo1YCjPxrHXcR4ROqzMzLKr16AAOmqCucarzI1Z5Y
+2GJjqoaCXlGUpvcWb5NamUidtPrUWvJEJkbDbxqTorTk9EedTjVvg9d0vipk9o39
+W2oprXBfjLwRwaTbT6nZa5U+wi8YnRnffCRUGvIBRAp9THeSlEQ8V6lEuJ7KbvSa
+uxTNhTlC0jMwZo90QF1CsM84+pe6hhBB5MLVrdxHsTWE02lCSdr1qctg7722lS3t
+nQG8QOumjw/FJ21e7g9TA9MZD4/fuiUEODwdV48n+mISnpO0JUtldmluIEJ1bGxv
+Y2sgPGd1aXRhcmtAcmluZ3dvcmxkLm9yZz6JAj4EEwECACgFAlH/CqYCGwMFCQlm
+AYAGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEEemf/qjRqrOB7kQAL4d1vrE
+GT0M+x4IHbAueHyrhd5ovC5+NfBgVaOtJ9409msymdz7rfCRot6qSwECm0wDJDup
+I5wqmOTi1t8JT2Hovu4tETBp9qjB6W/gCdXxwWP6wn2jwf4PcZDul4bRhzYBNRJx
+VECs/i97Re+v4d10tow/v5lCbrgSYL+RcM07QwvmjB7sUait74w9E5Qc+3EL/sK3
+SIVlgfU49qjZEKBQhK57MDswLOWHFNfLx4swfOtUEmYnFcvNiVwmEwgBdfXhabX6
+UlcpYAJGHoPEw7KBtNJhHAD6UxYomsV+5CSB+VD8toaCuxsWkSiBpv4ud901m1YH
+aaxCuwCjcQje4gwawMwgLVNYLO97txbetWlCmAAvQfbqGNCG+tMcJsdVaFT2e/3G
+hMNWO7dKnL3qBmjz+T/o7OCDkolyk/Wdo2xC49KDaH4iamGA2TkGLZLCzUvX4pIg
+7mHdw3RngxO3+7BKujgCdQofRRS2p2PNDQfNRz9N1dDWuspFIGUS0Gs0AS64IvKO
+sGbhnff175eIey7LouW8JpphBVad6/FK76tXLkr5k6LZTSc/MbYomqxSyburcuyK
+9FYxYbTWTwAUecnKLSRa2TZdXUTCJ4GSyghA2M95RL8pGTv8pkV5ZFltkU0863Cq
+P4gCTnzzUdvGSp228lYTw1zkkes9LnWvOBGDtCZLZXZpbiBCdWxsb2NrIDxrYnVs
+bG9ja0ByaW5nd29ybGQub3JnPokCQQQTAQIAKwIbAwUJCWYBgAYLCQgHAwIGFQgC
+CQoLBBYCAwECHgECF4AFAlgr6RECGQEACgkQR6Z/+qNGqs7kLA//awiiFtFTsbfY
+WcLMaeIHkMfSUxbxX4MI7AO0Gon17w/U0fkbEqIzQhpiKzP4w7fQ+CISNoNMnDMm
+VcJ1DgZBA23vzcSn5NmZJGcHOp1FYTHuoMBxCAQ+i/n0l5cwbE4vnQQx830BnALd
+mx3+trDWDDXzh2p27ccOqy6tnab64U121NGJGK/pcIer4GuSxVatiFy6QYE6Vd2m
+71uwtqYKf3puSfqlybuFYz1I0A4o1p3pZUnkNRc2QqlHDdVFTtGdqkVCbtNkKYYF
+HSdAPhqZkVWgK2IeaZHkHn4SHFXThUK0aj7MzmqqsxzW0ycFw357vzt67i7jMe9N
+Z92Z8jCMJLN+IddcVYhwV2nRf8yR5RGrBETNeQPKC9OBBr8Hafxxhkcr+Haz9ZBh
+wAYYsI2e539W7WppvawvUxcBnDlt26stPPw8xCIWyrPF3EX3fZ1XtovvQIOct4J7
++gxU5VIpeWPujCJEqCs2MQjtqcwPZtCCpsiZvS+3X+g8Pg4XdOvhJSnYcXIJiyHA
+QkYvCb0kQvgmW8sEczq26V+WyB++fbArIdYllHAmUYhldvkODJCLvEacThQoe+Ai
+c28OC8Zkx+p3KL/G6BzTYqo2zVRtbG8cP90y0vvFWgcRmXAT6goMQayZ7yE4VhXI
+9OXxw1RMqj13bpEGLFIH5ANB9w7XMJu0KUtldmluIEJ1bGxvY2sgPGtldmluQHNv
+ZnR3YXJlZm9yZ29vZC5jb20+iQI+BBMBAgAoBQJR/wqWAhsDBQkJZgGABgsJCAcD
+AgYVCAIJCgsEFgIDAQIeAQIXgAAKCRBHpn/6o0aqzvhxD/0Q+kcNXDCp0aSBuZPz
+LGcNMQPbfeSOgkJCueWBF0hLrhd2vZKe+8DSZS+GlIIQClWl0bKD+/bfolnilBps
+yVrQnCUtu9wgBNI9ZxtBm8uhCLg+E7QDL4VFiq9Dg0d2KOaP3QenrLVOgns8kR/B
+jLPi9xGRZNNQe0KUGta42Rn27NYFX3Hl5Xy+df2N7klQtRnw6evwxY9rdpV6y1V2
+cBq90uR1/siDbiJ2rzdzJWteC07Fo0957jHmmNosUIi8jMnrycXyfoGfqH77FLYt
+6vpxX2lVJOZlLgcqBcEqVF814E9FPWTegRY8doMV1MXjwAWOtGf2UJN69BVEySCU
+xRIwA60TGGKZOy0HCOgF+/OskHZUTSUtMTRUPc9rIbUMOrv/InjThfvSHE6YBpgz
+W0xmOSw68IUiK9ixtrP9VXNnDiwzFZk5DFxDDwQn6ZkH7yNBcnw55ttIgnyraMjS
+c7zlE2yL2VEh6dwxMH01yzMe5u96SvB/heYRs0iM7e9ADq3hJqrLq+PwiVt3v932
+O9oIuO9vr761e8gK2mvYp4t/UjhdAStMNU4w93lDolj5fDHPXaYQaXhTgdaP49xv
+7zya92TQ85vb9MLIDBfltRBGGdrN1SW60qYnd8+zYvSnHs+vLFNr496jmOYv5I0p
+7hrKGWNdC/HRxniVSw0MKPInk7QwS2V2aW4gQnVsbG9jayA8a2J1bGxvY2srbWVy
+Y3VyaWFsQHJpbmd3b3JsZC5vcmc+iQI+BBMBAgAoBQJR/wqFAhsDBQkJZgGABgsJ
+CAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRBHpn/6o0aqzmCxEACha7nLAgbyt9UN
+gqeX6sUyIU1Ms8uS4H9lng+ynYQ8bW4j8tiejbbwwleWw9GwaFYw1JmspU1Sa+pD
+s/aj6YBZzHt+NW1t3DKEJ18JATs1Pi0ynmMINwCU1tN3bgCq9TQQaJ/OUV67xquD
+ChgtItZ7D4hM/dBgTOsK48XXPOJA7+wzOXRL1DdweRNDOe2N7DqllKDInrPQLlMU
+vRB1o7EUBFZDiDpvn39ioNWiF735nJS+XKzzjIAr5va2MX3VCx17Dm1yVkCGRr4x
+burJJvWVkdyzDfihTdZUp7+suleA88ehGuZxNjhmLgyGyhIuxFNaQM4LWOdEFk5o
+pnMccJ9SXOaET2wwoV0Wv+RMK6785hleTGoibd0xVQPGUZWB6HzPGs9jx4WCPaoc
+pNcKBYqAxxsbi71ctaqIFf8kQdCNgW4W08N+yvLevP6AnLlHJHPkBlo3d6k0KODX
+x4TM0vTFmpDE15hjQlV/APsC9BFdna9o/4tZ3o/mnCZrl9FAn+s24cApLfvn+Fu9
+P9j0qC0wfaoQYk4LBvOkp6r3adLfXmvjJ7d0hC7XjnvBYSqMJZfdM/g0tsZGwEZG
+CIs3bb1Vc7BUwTLabUTrd4paE2R2n9w7QKctKMYhkhxhRtiI0RD4J6USxVpTUI3V
+yn/Ll4nGt66JJXzsTv1ewCYzlpmPL7kCDQRR/woSARAArTfmbtQazuuqHyM4D6Vs
+vLnCHt2MDare1L4hPqT33afJBTKJXtMwCGMhx4vq7snBPKovuMIv81ueDNMsgz3t
+PE/bUKvcJkdJsu1wJkxpqNBG7E877T6kzQlFG3dDm269Ig1q11ujlzLyoJWYDeIG
+nYoy9qmAw+PpG7BVut+RTW2zOFJ/6GQt3CyllF1b75H9UvyxRI+QxGfZtyHyYKhN
+zUxc08dMZgCNHmHfdBTNxH1kpQMs/1GpHbCzjeV65fw1AzSRR1HeHAW0L+kqL5B3
+J8WViwAu0d6loUvQlhr/4w6cwDsuU5ftSe4Yi/mmwx0hXdfscBOOAFrItBoQ+bVQ
+o87YdaJVAFnuXs1ll0s61BXes2mZsHlCUscNkzt0/v8tmuVcWRCKyVZHUuczXFmo
+8ZwMcf/nsRBbpprxlUNrkx5r3O3z1HRcOF37jWDim9OlL675RodXoyU8ShVVTsBw
+6Gp3YaVcIjxuzYXUJ72LTVETw0GYZvXw4pwKaU44nsL06BADbeg2wchoFiva43dh
+aqXXDLjB0WMO7+3byAAZ3rHtJFy104lTNjZDC/GBJ2VuZOzkx1avL3DbSkwVDtTx
+e7kDxZ11LgmDzoEVp079k25r1TcEcQJdmSiO9pHmsQ7k9rjzoHWEue2AZUzt2qoD
+B4r94UgQaG9zztsiF0W3jNkAEQEAAYkCJQQYAQIADwUCUf8KEgIbDAUJCWYBgAAK
+CRBHpn/6o0aqzl2kD/4vLg53w7EwI7AUUTkwvNIV4ju1uNwNYJeYTPqt77QzDWLS
+zugzJboyzaxAC9wWV89d2UluMMa/991CvnfGBz6cldUuuzX+Pz/DMS9DdiN2M39P
+IqkzciXGP5xglILP2hYexBRjiXmTXRWEoQhYzLvGJ4e6bswG0DUPJezSeUpcqeCb
+5zGPYrHt5mGmQhfam0ppWlRYsCLEpBrQugf+rVVHOWBEbgspbSrJc3oY96H1Rw87
+ubKi5THfZKtn8CN7m1w8FDi3Pc592t3llnI2Dk1YUUiZc3N4pw+9EPCmG+ljrzww
+a0UUH3Cp/H1ndGUPJ/2xfzQ3Wo1kvJMWAbMiiZQSVk+9COK69EwqWd4bnSLjwnl4
+bOZ6dV2TvE5j6N2wJKrZBjpHZ+6OaKMnl9Vd1g/DGCXvo5jP+WpLxsWFRncftG/h
+Li4/qINXG3lh2zcx9j51rR+LTDERw4OkoTAtXkJLrW6IA0CLAusLB87eDlzqtbN4
+Nwst6ZWtz7PYqLHgqKNWl4gf/1oiLkmaFN/rxEEmBfCl9yPKKICe4sjBca8bxDXD
+4xBYiaFocuOMo1nhH+xDIqgd5U2vZd33dXb5vcO2jZI/2mtg4bFcZMbSgZkTgVZb
+wCiHshhkgf0lP6G1slV7uvMpUyMpJ4qTDsUxumc/wGh8RvP+87tLeysPNeI+Tg==
+=qCxb
+-----END PGP PUBLIC KEY BLOCK-----
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+b881BjZOkRqzNNU=
+=p7OT
+-----END PGP PUBLIC KEY BLOCK-----
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBGAEaxQBEAC3XFQ3a2mi8siPCNGzzgZBJCcT6PhLqyE5asWsRzJRH9sPg/9O
+45m15Ivf5isRl5a79ycZbTZ16wql3yofrL6pI+kGGJPu3oD5VMDbL/LEP9l1haIw
+q9PAjMVUm8/Ms8f1nDqMu8Mbl1WTpBXqQJfYR0/WnOVP+5JUG2id1BRMPRzu+9FR
+m6rKR6rPjDka7yKAXTdnot7mZVFwLt/yWd4fi/wEkRJbaooK4dW2DSdOFm6B0sDD
+27Z8UYzRqaUBziieVr2wPAZXwT/LDm636uNxttPNwAWDvzs7kQ0DcaZjYo0xOQgi
+Wu3bWUIG03mKAudqm0FR5NhYqAaFh1fHzQhAsx5I/yGUPJ+ta7F1OjjF7d9obPcG
+SNc5pmRrMpBUl3YMnF+RWogprIy+LtUCUVR+YWPNHVxNAV9e9r5FeDEmsbXYt6en
+Q6Od0oe36pPqkx4hOSIKTNf/deu93b9rUi4gu8iK7HSEG1cdPD7SSSYxLSy8DSxp
+bPTuH1V0Yw30WKxyDmF1RRc75TuPE6fY0J2AqdP++zekRFQS/leHKkvD6E8wBPV5
+QbH/8bENcF4kqywdldz0JHkitbG+FmJWENU40Mxt74hOSCgLux3/yDrwU9Tn7DCK
+heDzLxbnKn+pWfHZQlUvjVhlzlV+MmuPZgcl3AIyrJy6MwPuKflRLafJvwARAQAB
+tCNQdWxraXQgR295YWwgPDc4OTVwdWxraXRAZ21haWwuY29tPokCTgQTAQoAOBYh
+BIGNh80awYDDlMhuYzoz3kYNnsOfBQJgBGsUAhsDBQsJCAcCBhUKCQgLAgQWAgMB
+Ah4BAheAAAoJEDoz3kYNnsOfg0cP/RVHrJ0xkMvjEPCG3HDKxMn5woBE4MASa7Nk
+QV2A/nmqiGmbeAUz43demGbMXV3BXpmpQGR9kW5c/G/579wvz37AWvqRFs9tD37V
+LhG4mIQXowCVv+Ch8DpyxWOH/TrHlWoWvKTbHMfdX0CIyPtL++WqM3VQUZJhUxum
+6lPn8+IeraI1015tVTVZfNURZRL4N9DLUAROsrEcri2u2JnXPIr7VUTLF18RMkY+
+M8G5crTuxqtQPmnrWpXlqvE9ZLXOjQPP/EK5aETDSPsfV1tNrXGc2Euy2RUbltcQ
+9/JLauY8cZvvERNt/nbKm3t4r7dd9KOT4vWfbCEbbtBEKqkHVqN0Nbcltbuyrhn0
+PhDIEGar2Gga/rsRTw6ixv2t8l4JsOfDY2bRKakdINGqM/W7Z8NsP7V9NZRkHBeO
+cQqwGUdOq+2GdZbXNzOXNOYIOze/bV9eg387C7yq3W6odHC2iqZMyA20IqFjtHKs
+qWVuW6eR98xtrtlv33nwVZlfPVueHqSMjhsr/BpgmFkcDFuhEq80iEFFcND73iEY
+yN8O6bR3ylR1E73mM3dbkdFXqUQFUuTr1vrhMkLtNxcdH5WVVvyskAR0rVIurNDa
+TNozrJVVj1yycxhP+lP+5CWuI2/Yy4RCmpRyDlLidTEJu4KHVgx9YeAg1x7ao+6Y
+yHKpHdxWuQINBGAEaxQBEAC/8EJYGwx8YiRZY7YmMdRcI53IR0e+vgSBlLMKcaaF
+IS7CUiJXy2wrype7t4897Gvg4/VMNWYu4ZCX6Av51vAl15GLrXymu4oxN4xzEPNM
+PKfgWj3GJVjFpJM+GjNOuIy18yv4DXlRyguFal9XVR+UlH5x8irWMTp3nwtuoHtc
+e+AKhARiOUx0uYFe4xSbnEJKz9IjNGla1uKv70DBjdhskXqEVLDAycJkM4IsrnkA
+mdjc/fZLfD3LlvbCEhJHMFd/PJth+Iq5pgWj8ykHOP4o8lLkX9Q8fxOlyNozCJAy
+DfF6o2xz3+xucBAG1MjtTv4dzyOOU5zppeiT/3Ccgtt/tOfTTKaYs0257zLcebn9
+7Mf2p3jbA3dD3IQjjHAEGXFup6YW5D7QyFsCqaPtjq2MUtqPhnwuQSbVw8qsmQws
+AGug/musfXhnMV/EqEEpETBEcoEIGFJrvLEHmRiIMPnzkbrF30r1mj1fcSs8OOeh
+SBQmUgQdM/md2dy4DZuY1goq4EgN4UGfrtDNjodPmMcl9rX05RKi1kYNE+JYK/7C
+yPoLMjPdFiN6r/KahqCUw669efmAtkxCpDI3xDVlcsS0L9tN9IY1aZEpdyu0HNh2
+f8QuFnKiK1BEtq/3uZtY2Yp7he5bCZ2pAPZEMyU8nOtL/2Su8jKKkt5da/ZZt9IY
+1wARAQABiQI2BBgBCgAgFiEEgY2HzRrBgMOUyG5jOjPeRg2ew58FAmAEaxQCGwwA
+CgkQOjPeRg2ew5++Iw/+OHe/ReoehTCzrX3fR9Jmsr4ccJQeUHVOG7kZ01nO6Rn6
+Zs6PpwF/6dwmzumNYJ3q0517sbt5pqWQ7SPojgg/YzZESwQAspILnyEz53C5Jnyv
+kKikaAdcmfYl9LNCAnJiLPfxDvzQAENthdbjo/izxhDI1YICEPeEwPZdBJ241xc/
+dR/3VnLBzfXrodE0sQTF+TxD5sYlaPaFVo5LJ9s/Ct/WpABJXLMTqza9/n87OCNh
+1N+7CA/UoekbN6bGBhykNN3Lknqprtc39dTlNKeQmXIDlEPWOP3t0SS5RSwnKkAg
+PfaEYURat5pUMUYAz4yJtuFaCxcN3n0uw7WuxoWkNKy1V8eSukGUC46FMwGf5nIr
+XLqLnqDlY2LV64t5C3o9iCzFxA2g46XfYg+o+sj5jdngClD01NSN9yHs1eLLsmi3
+DE53dp0nwJpF5tc8rx32mT0gOUzpq+lZ39Ikvq3p4z/2yHFCFkHeVN4cuouRNkMy
+hU9WjmlSh6SPhpjLmdzjxyWT5W3V/Q6XncW16nFZxoCtQySJ6tUWdP+40j544SIK
+jxLuY54/1kkP4KAmRNpimr5nQzQSTVDIbfB0UiQ7Pq/+zUFBY4mnNwpK1YACyWBW
+tlefkcGuzZ9jFNZGaVD9fNq4Wsy2gjz561/otlGuFuzOaO7fJl6fEUkP0ODNTmQ=
+=rvjR
+-----END PGP PUBLIC KEY BLOCK-----
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+=RKDP
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/watch b/watch
new file mode 100644 (file)
index 0000000..aa016e8
--- /dev/null
+++ b/watch
@@ -0,0 +1,5 @@
+# format version number, currently 3; this line is compulsory!
+version=3
+
+opts="uversionmangle=s/-?rc/~rc/,pgpsigurlmangle=s/$/.asc/" \
+  https://www.mercurial-scm.org/release/mercurial-(.*)\.tar\.gz