mercurial-4.0
New major version
1. Mercurial 4.0 (2016-11-1)
An overview of new features available. This is a regularly-scheduled quarterly feature release. Unlike other 4.0 software releases, this is simply 3.9 + .1, so it should be the usual pain-free upgrade.
1.1. commands
annotate: calculate line count correctly
branchmap: acquires lock before writting the rev branch cache
clone: set default path correctly when doing a clone+share (issue5378)
copy: distinguish "file exists" cases and add a hint (BC)
commit: return 1 for interactive commit with no changes (issue5397)
config: add template support
debugobsolete: add formatter support (issue5134)
files: change documentation to match its behaviour (issue5276)
grep: add formatter support
help: show content for explicitly disabled extension (issue5228)
import: abort instead of crashing when copy source does not exist (issue5375)
import: report directory-relative paths in error messages (issue5224)
log: copy the way of ancestor traversal to --follow matcher (issue5376)
log: preserve topo sort in graph even if additional filter options specified
merge: add conflict labels to merge command
merge: avoid superfluous filemerges when grafting through renames (issue5407)
strip: report both bundle files in case of exception (issue5368)
tag: clarify warning about making a tag on a branch head
version: add formatter support
flags: allow specifying --no-boolean-flag on the command line (BC)
1.2. core
changelog: disable delta chains
copies: make _checkcopies handle copy sequences spanning the TCA (issue4028)
formatter: add function to convert list to appropriate format (issue5217)
lock: show more detail for new-style locks in lock waiting message (issue4752)
revset: do not rewrite ':y' to '0:y' (issue5385)
revset: fix order of nested '_(|int|hex)list' expression (BC)
revset: fix order of nested 'or' expression (BC)
revset: fix order of nested 'range' expression (BC)
revset: make reverse() and sort() no-ops when ordering requirement allows (BC)
revset: support "follow(renamed.py, e22f4f3f06c3)" (issue5334)
templater: provide a termwidth keyword (issue5395)
templater: add inheritance support to style maps
templater: add relpath() to convert repo path to relative path (issue5394)
templater: make pad() evaluate boolean argument (BC)
wireproto: unescape argument names in batch command (BC)
1.3. extensions
journal: properly check for held lock (issue5349)
journal: use fm.formatdate() to pass date tuple in appropriate type (BC)
journal: use fm.formatlist() to pass hashes in appropriate type (BC)
journal: use fm.hexfunc() to get full hash in JSON/template output (BC)
largefiles: fix 'deleted' files sometimes persistently appearing with R status
largefiles: handle that a found standin file doesn't exist when removing it
largefiles: more safe handling of interruptions while updating modifications
largefiles: when setting/clearing x bit on largefiles, don't change other bits
mq: release lock after transaction in qrefresh
mq: take wlock when 'qqueue' is doing write operations
rebase: properly calculate total commits to rebase (issue5347)
rebase: rebase changesets in topo order (issue5370) (BC)
1.4. hgweb
hgweb: avoid line wrap between revision and annotate-info (issue5398)
hgweb: config option to control zlib compression level
Several utilities are not installed by default, most notably hgweb.cgi and hg-ssh, which allow setting up repository access. I wonder whether we should mention them for completeness. Furthermore, if you install the documentation, there is a man page entry for hg-web, while the executable is not installed...