packaging: update dulwich to drop the certifi dependency on Windows
The presence of `certifi` causes the system certificate store to be ignored,
which was reported as a bug against TortoiseHg[1]. It was only pulled in on
Windows because of `dulwich`, which was copied from the old TortoiseHg install
scripts, in order to support `hg-git`.
This version of `dulwich` raises the minimum `urllib3` to a version (1.25) that
does certificate verification by default, without the help of `certifi`[2]. We
already bundle a newer version of `urllib3`. Note that `certifi` can still be
imported from the user site directory, if installed there. But the installer no
longer disables the system certificates by default.
[1] https://foss.heptapod.net/mercurial/tortoisehg/thg/-/issues/5825
[2] https://github.com/jelmer/dulwich/issues/1025
Testing templating for rebase command
Setup
$ cat >> $HGRCPATH <<EOF
> [extensions]
> rebase=
> [experimental]
> evolution=createmarkers
> EOF
$ hg init repo
$ cd repo
$ for ch in a b c d; do echo foo > $ch; hg commit -Aqm "Added "$ch; done
$ hg log -G -T "{rev}:{node|short} {desc}"
@ 3:62615734edd5 Added d
|
o 2:28ad74487de9 Added c
|
o 1:29becc82797a Added b
|
o 0:18d04c59bb5d Added a
Getting the JSON output for nodechanges
$ hg rebase -s 2 -d 0 -q -Tjson
[
{
"nodechanges": {"28ad74487de9599d00d81085be739c61fc340652": ["849767420fd5519cf0026232411a943ed03cc9fb"], "62615734edd52f06b6fb9c2beb429e4fe30d57b8": ["df21b32134ba85d86bca590cbe9b8b7cbc346c53"]}
}
]
$ hg log -G -T "{rev}:{node|short} {desc}"
@ 5:df21b32134ba Added d
|
o 4:849767420fd5 Added c
|
| o 1:29becc82797a Added b
|/
o 0:18d04c59bb5d Added a
$ hg rebase -s 1 -d 5 -q -T "{nodechanges|json}"
{"29becc82797a4bc11ec8880b58eaecd2ab3e7760": ["d9d6773efc831c274eace04bc13e8e6412517139"]} (no-eol)
$ hg log -G -T "{rev}:{node|short} {desc}"
o 6:d9d6773efc83 Added b
|
@ 5:df21b32134ba Added d
|
o 4:849767420fd5 Added c
|
o 0:18d04c59bb5d Added a
$ hg rebase -s 6 -d 4 -q -T "{nodechanges % '{oldnode}:{newnodes % ' {node} '}'}"
d9d6773efc831c274eace04bc13e8e6412517139: f48cd65c6dc3d2acb55da54402a5b029546e546f (no-eol)
$ hg log -G -T "{rev}:{node|short} {desc}"
o 7:f48cd65c6dc3 Added b
|
| @ 5:df21b32134ba Added d
|/
o 4:849767420fd5 Added c
|
o 0:18d04c59bb5d Added a
$ hg rebase -s 7 -d 5 -q --keep -T "{nodechanges % '{oldnode}:{newnodes % ' {node} '}'}"
f48cd65c6dc3d2acb55da54402a5b029546e546f: 6f7dda91e55e728fb798f3e44dbecf0ebaa83267 (no-eol)
$ hg log -G -T "{rev}:{node|short} {desc}"
o 8:6f7dda91e55e Added b
|
| o 7:f48cd65c6dc3 Added b
| |
@ | 5:df21b32134ba Added d
|/
o 4:849767420fd5 Added c
|
o 0:18d04c59bb5d Added a
Respects command-templates.oneline-summary
$ hg rebase -r 7 -d 8 -n --config command-templates.oneline-summary='rev: {rev}'
starting dry-run rebase; repository will not be changed
rebasing rev: 7
note: not rebasing rev: 7, its destination already has all its changes
dry-run rebase completed successfully; run without -n/--dry-run to perform this rebase
command-templates.oneline-summary.rebase overrides
$ hg rebase -r 7 -d 8 -n \
> --config command-templates.oneline-summary='global: {rev}' \
> --config command-templates.oneline-summary.rebase='override: {rev}'
starting dry-run rebase; repository will not be changed
rebasing override: 7
note: not rebasing override: 7, its destination already has all its changes
dry-run rebase completed successfully; run without -n/--dry-run to perform this rebase
check namespaces and coloring (labels)
$ hg tag -l -r 7 my-tag
$ hg rebase -r 7 -d 8 -n
starting dry-run rebase; repository will not be changed
rebasing 7:f48cd65c6dc3 my-tag "Added b"
note: not rebasing 7:f48cd65c6dc3 my-tag "Added b", its destination already has all its changes
dry-run rebase completed successfully; run without -n/--dry-run to perform this rebase
$ hg bookmark -r 7 my-bookmark
$ hg rebase -r 7 -d 8 -n
starting dry-run rebase; repository will not be changed
rebasing 7:f48cd65c6dc3 my-bookmark my-tag "Added b"
note: not rebasing 7:f48cd65c6dc3 my-bookmark my-tag "Added b", its destination already has all its changes
dry-run rebase completed successfully; run without -n/--dry-run to perform this rebase
$ hg rebase -r 7 -d 8 -n --color=debug
[ ui.status|starting dry-run rebase; repository will not be changed]
[ ui.status|rebasing [oneline-summary.changeset|7:f48cd65c6dc3] [oneline-summary.bookmarks|my-bookmark] [oneline-summary.tags|my-tag] "[oneline-summary.desc|Added b]"]
[ ui.warning|note: not rebasing [oneline-summary.changeset|7:f48cd65c6dc3] [oneline-summary.bookmarks|my-bookmark] [oneline-summary.tags|my-tag] "[oneline-summary.desc|Added b]", its destination already has all its changes]
[ ui.status|dry-run rebase completed successfully; run without -n/--dry-run to perform this rebase]