mercurial (6.3.2-1+deb12u1) bookworm-security; urgency=high
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)
  * 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).

[dgit import unpatched mercurial 6.3.2-1+deb12u1]

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

diff --cc debian/NEWS
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8ae4442001cb2ecbfe6c4597255543cf1d84eb13
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..429dc34bae1f026ebb3f82e55612aab356fc856c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..cf42723cec9d9aeadc33e476b145afe0bc202b11
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++See /usr/share/doc/quilt/README.source
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..35faed2c81530a6dbaf28810afebb3a770484217
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1cf659046e5d7abb6312797010b694ba3ebab4f2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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 --cc debian/control
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c1136ea907021a8409d2d456303c567b9b22ec15
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1a05cbd8f7534a9dcbc3398acb1d5114a6fefb31
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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 --cc debian/gbp.conf
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d20ac555fbb72c2ce8cb3197ab2889b258ba2bea
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,5 @@@
++[DEFAULT]
++debian-branch=debian/master
++
++[import-orig]
++pristine-tar = True
diff --cc debian/hgext.rc
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7d4cc897e31461ddccc808c2b4dc64ea8aa50186
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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 =
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..79d0bb32ff30afdcb9604a86c6b21e9dd6a02646
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++4c808ced6b7ddc2e3c1514703bc238b9  0.9.5-3
++80086669df3007b5b17d7d12efe03775  sarge
diff --cc debian/hgrc
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..dfc34009410b3eeaadc0b4f0b80d4ad5408fdf60
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++# system-wide mercurial configuration file
++# See hgrc(5) for more information
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6ba7c638dacfe2cd4386daa5213915273f871ea1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++contrib/bash_completion hg
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5e627365cf6c07f3080c9e0a9d3d7b034e239edf
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++etc/mercurial/hgrc.d
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..121193db76dab1300f47a220db7f3465faa8d2e1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..814b85c0797a92590c2842ce92b0011024d99614
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8c11148e67672959986ca44f615fe02c5b66521e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a084b9d37f7f95657110a16b5dbe0b169a77266a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..dd45de9aafe78a6b6b190df9abb0ecf371af9956
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++usr/share/doc/mercurial
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f1cfe1bf9e7775287c38ba2b83138d9ce3166ab8
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6185003d460970a6480405342139dc427b0dab17
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++usr/share/doc/mercurial-common/examples usr/share/doc/mercurial/examples
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2eab2a9171799dd80cff1fc736ca94f55d7d82b1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
++
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ee5e14cfd86561d54b9b70ed38b4d8ea1fdd9595
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
++
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..13277cdfe2427bacef82678f8be932842941ed4e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3fd3f2c3e7de08ad7cee23cbaceafc628d199609
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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()
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..433393a10d760b572731c0b3b445e0c6d06b9307
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..56e5af0016e2ab868048a292290695995c42f4af
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d39010ef7d36d16fc4beb7b42e1954ee3847e107
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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,
++ }
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a5cb0a7a68b3831d007a4932b21f352b7db2d566
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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',
++ )
++ 
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3aa3f07d3585bf48e8ed7da41afb847ff2b7bf45
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5711ee9e02bf10e99ad2e43712f286f2aa00c221
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1c34cc7c9fb736a516da6038ea17e3d2deb03556
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7dffe2f680535872524e3228a2eb6b473b45a0ef
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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 !)
++   
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..82e6a8999dc4735a92aa60c8a27de4f9de55aa7c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d7ce819f795a13aae3fe94e881cc7e1a900e420b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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,
++ )
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..310dbe89014fab63854f015cac2d37b0cf46a081
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..17dfe15d15028c89ebe05b825d3711e87aebc91a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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 --cc debian/rules
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9cd39bb06c7590e738b96b9635cd8bf6b652e335
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..163aaf8d82b6c54f23c45f32895dbdfdcc27b047
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++3.0 (quilt)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d111a023125dc8bd833be7cd868cf4ac8c1ea6b3
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c520eca0ad0b1c8cbe0b866d6f2f01ffcba85ac6
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2b404c09796f8642144868f7141983c05f69addc
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..48f4c0f091d84f6af5c544787506ab8746802c39
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a0b9a28e4c7133887c7f4eb36bef836918469ef3
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,572 @@@
++-----BEGIN PGP PUBLIC KEY BLOCK-----
++
++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
++yrWppKRpUcx2Zb9PbwZPNLn5sjbYlQ==
++=NmUV
++-----END PGP PUBLIC KEY BLOCK-----
++-----BEGIN PGP PUBLIC KEY BLOCK-----
++
++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
++=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-----
++
++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
++=rvjR
++-----END PGP PUBLIC KEY BLOCK-----
++-----BEGIN PGP PUBLIC KEY BLOCK-----
++
++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
++=RKDP
++-----END PGP PUBLIC KEY BLOCK-----
diff --cc debian/watch
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..aa016e812912367de47f2ebc7cf4c996879114c3
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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