Differences between revisions 4 and 387 (spanning 383 versions)
Revision 4 as of 2005-09-16 19:19:04
Size: 2069
Editor: mpm
Comment:
Revision 387 as of 2019-05-13 22:21:35
Size: 29059
Editor: AugieFackler
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
Changes from 0.6 to 0.7:

{{{
core
 greatly improved merge logic
 improved copy/rename support (still experimental)
 automatic binary file handling
 generic file filtering support
 support for user-defined hooks (aka triggers)
 support for local tags and finding branches with tags
 numerous performance improvements
command line
 fewer long, confusing hashes to deal with
 new commands: clone, revert, incoming/outgoing, bundle/unbundle, grep, rename
 more powerful path handling with most commands
 improved push and pull support
 support for plug-in extensions
 much improved exception handling and debugging support
 many new command options and settings
web interface
 more conformant and compatible HTML output
 built-in RSS feeds
 fast multiple keyword search
 easy to set up multiple repository interface
 configurable support for downloading tarballs and zip files
 improved configurability
 IPv6 support
documentation
 improved built-in help and man pages
 a greatly expanded wiki
 tutorials in multiple languages
portability
 full support for Windows, including hardlinking and file filtering
 should easily compile and install on any modern UNIX
 binary packages available for many systems
extras
 powerful bash completion support
 Emacs integration
 updated hgk
and more
 expanded test suite
 numerous bug fixes and cleanups
}}}


Changes from 0.6c to 0.7:
{{{
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
}}}
#pragma section-numbers 2
## notes that are older than 3 major releases should be moved to WhatsNew/Archive
= Release Notes =
Features and bugfixes in our latest releases. Please see the [[Download]] page for links to source and binaries.

Note that Mercurial follows a time-based release plan with major releases every three months and minor (bugfix) releases on the first of every month (see TimeBasedReleasePlan).

{i} Be sure to read the [[UpgradeNotes|upgrade notes]] when [[UpgradingMercurial|upgrading]].

<<TableOfContents(2)>>

(See the [[WhatsNew/Archive|archive]] for older versions)

== Mercurial 5.0 (2019-05-01) ==

An [[Release5.0|overview of new features]] available. This is a regularly-scheduled quarterly feature release.

== Mercurial 4.9.1 (2019-03-19) ==

A regularly scheduled bugfix release, late due to vacations and similar disruptions at the regular time.

=== commands ===
 * record: prevent commits that don't pick up dirty subrepo changes (Bts:issue6102)

=== extensions ===
 * rebase: add missing dashes in help text

=== unsorted ===
 * subrepo: avoid false unsafe path detection on Windows
 * test-https: add some more known failure messages of client certs (Bts:issue6030)


== Mercurial 4.9 (2019-02-01) ==

An [[Release4.9|overview of new features]] available. This is a regularly-scheduled quarterly feature release that also contains security fixes.

=== security ===

It was possible to use symlinks and subrepositories to defeat Mercurial's path-checking logic and write files outside a repository. This has been fixed. Users on older versions can either disable subrepositories with {{{[subrepos] allowed=false}}} in their configuration or by ensuring any cloned repositories don't contain malicious symlinks.

=== commands ===
 * archive: use manifest.matches() to simplify and speed up matching
 * branch: allow changing branch of merge commits with --rev
 * branches: add -r option to show branch name(s) of a given rev (Bts:issue5948)
 * graft: abort if --date/user specified with --currentdate/currentuser (BC)
 * graft: introduce --base option for using custom base revision while merging
 * help: add internals.extensions topic
 * help: show advanced, experimental and deprecated extensions with --verbose
 * log: fix line wrap on diffstat with -G/--graph (Bts:issue5800)
 * merge: make local file storage in the .hg/merge directory extensible
 * pull: fix inconsistent view of bookmarks during pull (Bts:issue4700)
 * push: add --publish flag to change phase of pushed changesets
 * push: config option to control behavior when pushing to a publishing server
 * resolve: fix mark-check when a file was deleted on one side (Bts:issue6020)
 * tags: cache 'repo.changelog' access when checking tags nodes
 * update: fix edge-case with update.atomic-file and read-only files

=== core ===
 * revlog: always enable generaldelta on version 2 revlogs
 * revlog: make sure we never use sparserevlog without general delta (Bts:issue6056)
 * revset: enforce "%d" to be interpreted as literal revision number (API) (BC)
 * revset: introduce an API that avoids 'formatspec' input serialization
 * revsets: make bookmark/named('re:nonexistent') not abort (Bts:issue6018) (BC)
 * templatekw: deprecate p1rev/p2rev/p1node/p2node in favor of p1/p2
 * templatekw: fix crash on multiple latesttags resolution at wdir (Bts:issue6055)
 * templater: check invalid use of list expression properly (Bts:issue5920)
 * transaction: display data about why the transaction failed to rollback
 * ui: add config knob to redirect status messages to stderr (API)
 * ui: remove unreachable branches and function calls from write() (Bts:issue6059)
 * vfs: also audit rename
 * wireproto: in batch queries, support queries with immediate responses

=== extensions ===
 * absorb: don't prompt to apply changes when there are none to apply
 * amend: add -D/--currentdate option
 * amend: add config option to update time to current in hg amend (Bts:issue5828)
 * blackbox: add configitem for format of log timestamps
 * bookflow: new extension for bookmark-based branching
 * convert: don't drop commits that are empty in the source when using --filemap
 * extensions: deprecate extsetup without a 'ui' argument (API)
 * extensions: import the exthelper class from evolve 980565468003 (API)
 * fix: add a config to abort when a fixer tool fails
 * fix: add extra field to fixed revisions to avoid creating obsolescence cycles
 * fix: add suboption for configuring execution order of tools
 * histedit: add rewrite.update-timestamp support to fold and mess
 * histedit: add warning message on editing tagged commits (Bts:issue4017)
 * histedit: drop unused constructor arguments (API)
 * histedit: fix --continue and --abort when curses is enabled
 * histedit: import chistedit curses UI from hg-experimental
 * lfs: improve the hints for common errors in the Batch API
 * logtoprocess: drop support for ui.log() call with invalid msg arguments (BC)
 * logtoprocess: leverage procutil.shellenviron() to stringify variables (BC)
 * narrow: don't resurrect old commits when narrowing (don't strip obsmarkers)
 * narrow: drop the bundle2 capability since we have server capabilities (BC)
 * phabricator: teach {phabreview} to work without --amend
 * phabricator: warn if unable to amend, instead of aborting after posting
 * remotefilelog: fix {file_copies} template keyword
 * remotefilelog: import pruned-down remotefilelog extension from hg-experimental
 * sparse: don't enable on clone if it was a narrow clone
 * strip: compute bookmark target only if we have bookmark to move

=== unsorted ===
 * changegroup: add a option to create bundle with full snapshot only
 * changegroup: allow to force delta to be against p1
 * commandserver: add IPC channel to teach repository path on command finished
 * commandserver: add config knob for various logging options
 * commandserver: add experimental option to use separate message channel
 * commandserver: send raw progress information to message channel
 * filecache: unimplement `__set__`() and `__delete__`() (API)
 * http: allow 'auth.prefix' to have a username consistent with the URI
 * match: support rooted globs in hgignore
 * merge-tools: when calling external merge tool, describe the resolve inputs
 * mergetools: adjust Beyond Compare config on Mac/Linux
 * obsutil: fix the Bts:issue5686
 * progress: deprecate ui.progress()
 * rust-cpython: binding for !AncestorsIterator
 * rust-cpython: binding for !LazyAncestors
 * rust-cpython: bindings for !MissingAncestors
 * sparse-revlog: disable sparse-revlog if config disable general-delta
 * sparse-revlog: enabled by default
 * storage: update sqlitestore to use the new 'deltamode' parameter
 * store: raise !ProgrammingError if unable to decode a storage path
 * subrepo: extend path auditing test to include more weird patterns (SEC)
 * subrepo: prohibit variable expansion on creation of hg subrepo (SEC)
 * subrepo: reject potentially unsafe subrepo paths (BC) (SEC)

=== Behavior Changes ===

 * graft: abort if --date/user specified with --currentdate/currentuser (BC)
 * logtoprocess: drop support for ui.log() call with invalid msg arguments (BC)
 * logtoprocess: leverage procutil.shellenviron() to stringify variables (BC)
 * narrow: drop the bundle2 capability since we have server capabilities (BC)
 * revset: enforce "%d" to be interpreted as literal revision number (API) (BC)
 * revsets: make bookmark/named('re:nonexistent') not abort (Bts:issue6018) (BC)
 * subrepo: reject potentially unsafe subrepo paths (BC) (SEC)

=== Internal API Changes ===

 * extensions: deprecate extsetup without a 'ui' argument (API)
 * extensions: import the exthelper class from evolve 980565468003 (API)
 * filecache: unimplement `__set__`() and `__delete__`() (API)
 * histedit: drop unused constructor arguments (API)
 * revset: enforce "%d" to be interpreted as literal revision number (API) (BC)
 * ui: add config knob to redirect status messages to stderr (API)


== Mercurial 4.8.2 (2019-01-07) ==

This is a regularly-scheduled bugfix release containing following fixes:

=== commands ===
 * update: do not pass in user revspec as default destination (Bts:issue6044)

=== core ===
 * match: fix assertion for fileset with no context (Bts:issue6046)
 * revlog: catch delta base value under -1
 * revlog: catch revlog corruption in index_baserev
 * server: always close http socket if responding with an error (Bts:issue6033)
 * vfs: ensure closewrapbase fh doesn't escape by entering context manager

=== extensions ===
 * phabricator: properly encode boolean types in the request body

=== unsorted ===
 * windows: ensure mixedfilemodewrapper fd doesn't escape by entering context mgr
 * worker: do not swallow exception occurred in main process


== Mercurial 4.8.1 (2018-12-04) ==

A regularly scheduled bugfix release. Some security fixes are included, but all are expected to be low-risk.

=== commands ===
 * commandserver: get around ETIMEDOUT raised by selectors2
 * graft: do not try to skip rev derived from ancestor more than once (Bts:issue6024)
 * verify: provide unit to ui.makeprogress()

=== core ===
 * revlog: fix out-of-bounds access by negative parents read from revlog (SEC)

=== extensions ===
 * rebase: abort in-mem rebase if there's a dirty merge state
 * rebase: fix dir/file conflict detection when using in-mem merge
 * rebase: fix path auditing to audit path relative to repo root (Bts:issue5818)
 * rebase: preserve working copy when redoing in-mem rebase on disk

=== unsorted ===
 * tests: stabilize test-inherit-mode.t on FreeBSD and macOS (Bts:issue6026)


== Mercurial 4.8 (2018-11-02) ==

An [[Release4.8|overview of new features]] available. This is a regularly-scheduled quarterly feature release.

=== commands ===
 * add: add a label for messages about added files
 * addremove: add labels for messages about added and removed files
 * annotate: pass in wdir rev and node to formatter (BC)
 * annotate: rename {line_number} to {lineno} (BC)
 * bookmarks: add explicit option to list bookmarks of the given names
 * bookmarks: pass in formatter to printbookmarks() instead of opts (API)
 * clone: allow local cloning to create more than one level of directories
 * debugcommands: introduce debugrevlogindex (BC)
 * debugcommands: use openstorage() in debugdata (BC)
 * grep: add MULTIREV support to --allfiles flag
 * grep: rename {line_number} to {lineno} as well (BC)
 * grep: search all commits in allfiles mode
 * help: adding a proper declaration for shortlist/basic commands (API)
 * help: adding support for command categories
 * identify: change {parents} to a list of nodes (BC)
 * identify: show remote bookmarks in 'hg id url -Tjson -B'
 * log: have changesetformatter fill in wdir() rev and node (BC)
 * log: respect graphshorten on terminal nodes (collapsing o-~ to just o~)
 * merge: improve interactive one-changed one-deleted message (Bts:issue5550)
 * phase: explicitly exclude secret phase and above
 * phase: expose a '_phase(idx)' revset
 * phase: handle phase with no command flag
 * phase: report number of non-public changeset alongside the new range
 * push: add "remote" to 'repository changed while pushing' messages (Bts:issue5971)
 * remove: add a label for messages about removed files
 * rename: return error status if any rename/copy failed
 * resolve: add a flag for the default behavior of re-merging
 * resolve: add config to make hg resolve not re-merge by default
 * resolve: add confirm config option
 * resolve: add option to warn/abort on -m with unresolved conflict markers
 * resolve: graduate resolve.mark-check from experimental, add docs
 * resolve: rename {status} to {mergestatus} to not shadow change status (BC)
 * status: advertise --abort instead of 'update -C .' to abort a merge
 * status: advertise --abort instead of 'update -C .' to abort graft
 * status: remove "morestatus" message from formatter data (BC)
 * status: rename {copy} to {source} for compatibility with {file_copies} (BC)
 * verify: make output less confusing (Bts:issue5924)

=== core ===
 * context: drop compatibility for 'context.descendant' (API)
 * context: move logic from `changectx.__init__` to `localrepo.__getitem__` (API)
 * context: remove unused overlayfilectx (API)
 * dispatch: don't show list of commands on bogus command
 * dispatch: making all hg abortions be output with a specific label
 * dispatch: show a short error message when invalid global option given
 * exchange: support declaring pull depth
 * exchange: support defining narrow file patterns for pull
 * filelog: add a hasnode() method (API)
 * filelog: drop _generaldelta attribute (API)
 * filelog: drop index attribute (API)
 * filelog: remove checkhash() (API)
 * filelog: remove revdiff() (API)
 * filelog: remove version attribute (API)
 * filelog: stop proxying "opener" (API)
 * filelog: stop proxying _addrevision() (API)
 * filelog: stop proxying checksize() (API)
 * filelog: stop proxying compress() (API)
 * filelog: stop proxying datafile (API)
 * filelog: stop proxying deltaparent() (API)
 * filelog: stop proxying flags() (API)
 * filelog: stop proxying headrevs() (API)
 * filelog: stop proxying rawsize() (API)
 * filelog: stop proxying start(), end(), and length() (API)
 * localrepo: add repository feature when repo can be stream cloned
 * localrepo: add requirement when narrow files creation option present
 * localrepo: automatically load lfs extension when required (BC)
 * localrepo: define "features" on repository instances (API)
 * localrepo: define storage backend in creation options (API)
 * localrepo: move repo creation logic out of `localrepository.__init__` (API)
 * localrepo: pass ui to newreporequirements() (API)
 * localrepo: support marking repos as having shallow file storage
 * localrepo: support writing shared file (API)
 * pager: do not enable when TERM=dumb
 * repository: establish API for emitting revision deltas
 * revlog: add method for obtaining storage info (API)
 * revlog: drop !LookupError alias (API)
 * revlog: drop !RevlogError alias (API)
 * revlog: drop compatibility for 'revlog.descendant' (API)
 * revlog: drop emitrevisiondeltas() and associated functionality (API)
 * revlog: drop some more error aliases (API)
 * revlog: new API to emit revision data
 * revlog: reuse cached delta for identical base revision (Bts:issue5975)
 * revset: expand bookmark(.) to the active bookmark
 * revsetlang: fix position of '-' in spaceless 'a-b' expressions
 * streamclone: don't support stream clone unless repo feature present
 * streamclone: include obsstore file into stream bundle if client can read it
 * templatefuncs: add truncate parameter to pad
 * templatekw: add experimental {status} keyword
 * templatekw: deprecate old-style template keyword function (API)
 * templates: rename "user" to "luser" defined in default map file (API)
 * tracing: new module to make tracing events in hg easier
 * tracing: trace command function execution
 * transaction: make entries a private attribute (API)
 * transaction: remember original len(repo) instead of tracking added revs (API)
 * util: make timedcm require the label (API)
 * wireprotov2: add bookmarks to "changesetdata" command
 * wireprotov2: add phases to "changesetdata" command
 * wireprotov2: client support for advertising redirect targets
 * wireprotov2: client support for following content redirects
 * wireprotov2: define and implement "changesetdata" command
 * wireprotov2: define and implement "filedata" command
 * wireprotov2: define and implement "filesdata" command
 * wireprotov2: define and implement "manifestdata" command
 * wireprotov2: server support for sending content redirects
 * wireprotov2: support response caching

=== extensions ===
 * absorb: import extension from Facebook's hg-experimental
 * absorb: print '{rev}:' as a prefix to the hash
 * absorb: print summary of changesets affected
 * absorb: prompt user to accept absorb changes by default
 * amend: support "history-editing-backup" config option
 * closehead: fix close-head -r listification
 * commitextras: work nicely with other extensions
 * convert: fix a file descriptor leak
 * extension: add a summary of total loading time per extension
 * extensions: add detailed loading information
 * extensions: new closehead module for closing arbitrary heads
 * fastannotate: initial import from Facebook's hg-experimental
 * fastannotate: make the default value for 'fastannotate.useflock' dynamic
 * fix: add a monkey-patchable point after all new revisions have been committed
 * fix: compute changed lines lazily to make whole-file fixer tools faster
 * fix: determine fixer tool failure by exit code instead of stderr
 * fix: pull out flag definitions to make them re-usable from extensions
 * fsmonitor: use vfs instead of opener (Bts:issue5938)
 * journal: do not pass in repolookuperror string to template (BC)
 * journal: unify template name for "nodes" (BC)
 * largefiles: automatically load largefiles extension when required (BC)
 * lfs: add repository feature denoting the use of LFS
 * lfs: autoload the extension when cloning from repo with lfs enabled
 * lfs: consult the narrow matcher when extracting pointers from ctx (Bts:issue5794)
 * lfs: don't add extension to hgrc after clone or share (BC)
 * lfs: don't add extension to hgrc after conversion (BC)
 * logtoprocess: connect all fds to /dev/null to avoid bad interaction with pager
 * logtoprocess: define $HG for children processes
 * narrow: add '--import-rules' flag to tracked command
 * narrow: add a --narrowspec flag to clone command
 * narrow: add narrow and ellipses as server capabilities
 * narrow: add server logic to send cg while widening without ellipsis
 * narrow: check for servers' narrow support before doing anything (BC)
 * narrow: drop support for remote expansion (BC)
 * narrow: introduce a config option to check if narrow is enabled or not
 * narrow: move .hg/narrowspec to .hg/store/narrowspec (BC)
 * narrow: move support for 'hg verify' into core
 * narrow: the first version of narrow_widen wireprotocol command
 * narrow: validate spec files are well-formed during clone (BC)
 * patchbomb: allow using HGHOSTNAME to force a hostname
 * phabricator: drop support for the legacy phabricator.auth.token config (BC)
 * phabricator: mark extension as experimental for now
 * rebase: add --stop option to stop rebase at any point (Bts:issue5206)
 * rebase: don't try to prune obsolete changeset already in the destination
 * rebase: explicitly track collapses as fold
 * rebase: skip extinct revisions even if it has no successor in rebase set
 * rebase: support "history-editing-backup" config option
 * remotenames: add names argument to remotenames revset
 * share: allow more than one level of directories to be created
 * shelve: add an "internal" extra
 * shelve: fix crash on unshelve without .shelve metadata file
 * shelve: use the internal phase when possible
 * sqlitestore: file storage backend using SQLite
 * strip: ignore orphaned internal changesets while computing safe strip roots

=== hgweb ===
 * hgweb: add error template to json so it won't crash
 * hgweb: map Abort to 403 error to report inaccessible path for example
 * hgweb: show shortlog by default in json output (Bts:issue5978)
 * hgweb: use scmutil.binnode() to translate None to wdir hash (Bts:issue5988)

=== chg ===
 * chgserver: add "setumask2" command which uses correct message frame
 * chgserver: restore pager fds attached within runcommand session
 * rust-chg: add Client extensions to run cHg-specific requests
 * rust-chg: add callback to handle pager and shell command requests

=== unsorted ===
 * ancestors: actually iterate over ancestors in topological order (Bts:issue5979)
 * bundle2: graduate bundle2.stream option from experimental to server section
 * changegroup: pass sorted revisions into group() (API)
 * changegroup: port to emitrevisions() (Bts:issue5976)
 * changegroup: remove reordering control (BC)
 * changegroup: restore default node ordering (Bts:issue6001)
 * cleanupnodes: drop special casing around prune markers (API)
 * commands: restore compatibility for "^cmd" registration (Bts:issue6005)
 * copies: improve logic of deciding copytracing on based of config options
 * crecord: make nextsametype() check that parent item exists (Bts:issue6009)
 * crecord: make enter move cursor down to the next item of the same type
 * delta: skip "empty delta" optimisation for non-general case (Bts:issue6006)
 * error: introduce !StorageError
 * filemerge: add config knob to check capabilities of internal merge tools
 * filemerge: show warning if chosen tool has no binary files capability
 * fileset: extract language processing part to new module (API)
 * fileset: optimize 'x and not y' to 'x - y'
 * fileset: roughly adjust weights of functions
 * formatter: remove experimental marker from -T option
 * formatter: rename {abspath}/{file} to {path}, and drop relative {path} (BC)
 * global: replace most uses of !RevlogError with !StorageError (API)
 * hg: allow extra arguments to be passed to repo creation (API)
 * httppeer: expose capabilities for each command
 * index: drop support for negative indexes into the index
 * index: handle index[-1] as nullid more explicitly
 * linelog: fix infinite loop vulnerability
 * lookup: add option to disambiguate prefix within revset
 * mail: always fall back to iso-8859-1 if us-ascii won't work (BC)
 * mail: modernize check for Python-with-TLS
 * manifest: add rawsize() proxy (API)
 * meld: enable auto-merge
 * mergetool: warn if ui.merge points to nonexistent tool
 * narrowspec: limit patterns to path: and rootfilesin: (BC)
 * narrowspec: use sparse.parseconfig() to parse narrowspec file (BC)
 * obsolete: fix !ValueError when stored note contains ':' char (Bts:issue5783)
 * overlayworkingctx: fix exception in metadata-only inmemory merges (Bts:issue5960)
 * phase: add an archived phase
 * phases: add an internal phases
 * pullreport: issue a message about "extinct" pulled changesets
 * py3: rename pycompat.getcwd() to encoding.getcwd() (API)
 * revisions: allow "x123" to refer to nodeid prefix "123"
 * scmutil: accept multiple predecessors in 'replacements' (API)
 * shortest: never emit 0-length prefix even if unique
 * shortest: use 'x' prefix to disambiguate from revnum if configured
 * sparse-revlog: only refine delta candidates in the sparse case (Bts:issue6006)
 * statprof: fix indent level of fp.write() (Bts:issue6004)
 * statprof: update the name as the i increases (Bts:issue6003)
 * storageutil: consistently raise !LookupError (API)
 * storageutil: implement file identifier resolution method (BC)
 * storageutil: move metadata parsing and packing from revlog (API)
 * storageutil: new module for storage primitives (API)
 * url: allow to configure timeout on http connection

=== Behavior Changes ===

 * annotate: pass in wdir rev and node to formatter (BC)
 * annotate: rename {line_number} to {lineno} (BC)
 * changegroup: remove reordering control (BC)
 * debugcommands: introduce debugrevlogindex (BC)
 * debugcommands: use openstorage() in debugdata (BC)
 * formatter: rename {abspath}/{file} to {path}, and drop relative {path} (BC)
 * grep: rename {line_number} to {lineno} as well (BC)
 * identify: change {parents} to a list of nodes (BC)
 * journal: do not pass in repolookuperror string to template (BC)
 * journal: unify template name for "nodes" (BC)
 * largefiles: automatically load largefiles extension when required (BC)
 * lfs: don't add extension to hgrc after clone or share (BC)
 * lfs: don't add extension to hgrc after conversion (BC)
 * localrepo: automatically load lfs extension when required (BC)
 * log: have changesetformatter fill in wdir() rev and node (BC)
 * mail: always fall back to iso-8859-1 if us-ascii won't work (BC)
 * narrow: check for servers' narrow support before doing anything (BC)
 * narrow: drop support for remote expansion (BC)
 * narrow: move .hg/narrowspec to .hg/store/narrowspec (BC)
 * narrow: validate spec files are well-formed during clone (BC)
 * narrowspec: limit patterns to path: and rootfilesin: (BC)
 * narrowspec: use sparse.parseconfig() to parse narrowspec file (BC)
 * phabricator: drop support for the legacy phabricator.auth.token config (BC)
 * resolve: rename {status} to {mergestatus} to not shadow change status (BC)
 * status: remove "morestatus" message from formatter data (BC)
 * status: rename {copy} to {source} for compatibility with {file_copies} (BC)
 * storageutil: implement file identifier resolution method (BC)

=== Internal API Changes ===

 * bookmarks: pass in formatter to printbookmarks() instead of opts (API)
 * changegroup: pass sorted revisions into group() (API)
 * cleanupnodes: drop special casing around prune markers (API)
 * context: drop compatibility for 'context.descendant' (API)
 * context: move logic from `changectx.__init__` to `localrepo.__getitem__` (API)
 * context: remove unused overlayfilectx (API)
 * filelog: add a hasnode() method (API)
 * filelog: drop _generaldelta attribute (API)
 * filelog: drop index attribute (API)
 * filelog: remove checkhash() (API)
 * filelog: remove revdiff() (API)
 * filelog: remove version attribute (API)
 * filelog: stop proxying "opener" (API)
 * filelog: stop proxying _addrevision() (API)
 * filelog: stop proxying checksize() (API)
 * filelog: stop proxying compress() (API)
 * filelog: stop proxying datafile (API)
 * filelog: stop proxying deltaparent() (API)
 * filelog: stop proxying flags() (API)
 * filelog: stop proxying headrevs() (API)
 * filelog: stop proxying rawsize() (API)
 * filelog: stop proxying start(), end(), and length() (API)
 * fileset: extract language processing part to new module (API)
 * global: replace most uses of !RevlogError with !StorageError (API)
 * help: adding a proper declaration for shortlist/basic commands (API)
 * hg: allow extra arguments to be passed to repo creation (API)
 * localrepo: define "features" on repository instances (API)
 * localrepo: define storage backend in creation options (API)
 * localrepo: move repo creation logic out of `localrepository.__init__` (API)
 * localrepo: pass ui to newreporequirements() (API)
 * localrepo: support writing shared file (API)
 * manifest: add rawsize() proxy (API)
 * py3: rename pycompat.getcwd() to encoding.getcwd() (API)
 * revlog: add method for obtaining storage info (API)
 * revlog: drop !LookupError alias (API)
 * revlog: drop !RevlogError alias (API)
 * revlog: drop compatibility for 'revlog.descendant' (API)
 * revlog: drop emitrevisiondeltas() and associated functionality (API)
 * revlog: drop some more error aliases (API)
 * scmutil: accept multiple predecessors in 'replacements' (API)
 * storageutil: consistently raise !LookupError (API)
 * storageutil: move metadata parsing and packing from revlog (API)
 * storageutil: new module for storage primitives (API)
 * templatekw: deprecate old-style template keyword function (API)
 * templates: rename "user" to "luser" defined in default map file (API)
 * transaction: make entries a private attribute (API)
 * transaction: remember original len(repo) instead of tracking added revs (API)
 * util: make timedcm require the label (API)

== Mercurial 4.7.2 (2018-10-01) ==
This is a regularly-scheduled bugfix release containing following fixes:

=== security ===

Fix a potential out-of-bounds read in manifest parsing C code.

=== core ===
 * various minor correctness fixes in revsets for commonancestors() and similar

=== unsorted ===
 * chgserver: do not send system() back to client if stdio redirected (Bts:issue5992)
 * procutil: compare fd number to see if stdio protection is needed (Bts:issue5992)

== Mercurial 4.7.1 (2018-09-04) ==

This is a regularly-scheduled bugfix release containing following fixes:

=== commands ===
 * merge: do not delete untracked files silently (Bts:issue5962)

=== core ===
 * revlog: fix descendant deprecated method

=== hgweb ===
 * hgweb: load revcount + 1 entries to fill nextentry in log page (Bts:issue5972)

=== performance ===
 * remotephase: avoid full changelog iteration (Bts:issue5964)
 * remotephase: fast path newheads computation in simple case (Bts:issue5964)
 * scmutil: avoid quadratic membership testing (Bts:issue5969)
 * sparse-revlog: fix delta validity computation

== Mercurial 4.7 (2018-08-01) ==

This is a regularly-scheduled quarterly feature release and has its own release notes page which can be found here [[Release4.7|Full release notes]].

Release Notes

Features and bugfixes in our latest releases. Please see the Download page for links to source and binaries.

Note that Mercurial follows a time-based release plan with major releases every three months and minor (bugfix) releases on the first of every month (see TimeBasedReleasePlan).

{i} Be sure to read the upgrade notes when upgrading.

(See the archive for older versions)

1. Mercurial 5.0 (2019-05-01)

An overview of new features available. This is a regularly-scheduled quarterly feature release.

2. Mercurial 4.9.1 (2019-03-19)

A regularly scheduled bugfix release, late due to vacations and similar disruptions at the regular time.

2.1. commands

  • record: prevent commits that don't pick up dirty subrepo changes (issue6102)

2.2. extensions

  • rebase: add missing dashes in help text

2.3. unsorted

  • subrepo: avoid false unsafe path detection on Windows
  • test-https: add some more known failure messages of client certs (issue6030)

3. Mercurial 4.9 (2019-02-01)

An overview of new features available. This is a regularly-scheduled quarterly feature release that also contains security fixes.

3.1. security

It was possible to use symlinks and subrepositories to defeat Mercurial's path-checking logic and write files outside a repository. This has been fixed. Users on older versions can either disable subrepositories with [subrepos] allowed=false in their configuration or by ensuring any cloned repositories don't contain malicious symlinks.

3.2. commands

  • archive: use manifest.matches() to simplify and speed up matching
  • branch: allow changing branch of merge commits with --rev
  • branches: add -r option to show branch name(s) of a given rev (issue5948)

  • graft: abort if --date/user specified with --currentdate/currentuser (BC)
  • graft: introduce --base option for using custom base revision while merging
  • help: add internals.extensions topic
  • help: show advanced, experimental and deprecated extensions with --verbose
  • log: fix line wrap on diffstat with -G/--graph (issue5800)

  • merge: make local file storage in the .hg/merge directory extensible
  • pull: fix inconsistent view of bookmarks during pull (issue4700)

  • push: add --publish flag to change phase of pushed changesets
  • push: config option to control behavior when pushing to a publishing server
  • resolve: fix mark-check when a file was deleted on one side (issue6020)

  • tags: cache 'repo.changelog' access when checking tags nodes
  • update: fix edge-case with update.atomic-file and read-only files

3.3. core

  • revlog: always enable generaldelta on version 2 revlogs
  • revlog: make sure we never use sparserevlog without general delta (issue6056)

  • revset: enforce "%d" to be interpreted as literal revision number (API) (BC)
  • revset: introduce an API that avoids 'formatspec' input serialization
  • revsets: make bookmark/named('re:nonexistent') not abort (issue6018) (BC)

  • templatekw: deprecate p1rev/p2rev/p1node/p2node in favor of p1/p2
  • templatekw: fix crash on multiple latesttags resolution at wdir (issue6055)

  • templater: check invalid use of list expression properly (issue5920)

  • transaction: display data about why the transaction failed to rollback
  • ui: add config knob to redirect status messages to stderr (API)
  • ui: remove unreachable branches and function calls from write() (issue6059)

  • vfs: also audit rename
  • wireproto: in batch queries, support queries with immediate responses

3.4. extensions

  • absorb: don't prompt to apply changes when there are none to apply
  • amend: add -D/--currentdate option
  • amend: add config option to update time to current in hg amend (issue5828)

  • blackbox: add configitem for format of log timestamps
  • bookflow: new extension for bookmark-based branching
  • convert: don't drop commits that are empty in the source when using --filemap
  • extensions: deprecate extsetup without a 'ui' argument (API)
  • extensions: import the exthelper class from evolve 980565468003 (API)
  • fix: add a config to abort when a fixer tool fails
  • fix: add extra field to fixed revisions to avoid creating obsolescence cycles
  • fix: add suboption for configuring execution order of tools
  • histedit: add rewrite.update-timestamp support to fold and mess
  • histedit: add warning message on editing tagged commits (issue4017)

  • histedit: drop unused constructor arguments (API)
  • histedit: fix --continue and --abort when curses is enabled
  • histedit: import chistedit curses UI from hg-experimental
  • lfs: improve the hints for common errors in the Batch API
  • logtoprocess: drop support for ui.log() call with invalid msg arguments (BC)
  • logtoprocess: leverage procutil.shellenviron() to stringify variables (BC)
  • narrow: don't resurrect old commits when narrowing (don't strip obsmarkers)
  • narrow: drop the bundle2 capability since we have server capabilities (BC)
  • phabricator: teach {phabreview} to work without --amend
  • phabricator: warn if unable to amend, instead of aborting after posting
  • remotefilelog: fix {file_copies} template keyword
  • remotefilelog: import pruned-down remotefilelog extension from hg-experimental
  • sparse: don't enable on clone if it was a narrow clone
  • strip: compute bookmark target only if we have bookmark to move

3.5. unsorted

  • changegroup: add a option to create bundle with full snapshot only
  • changegroup: allow to force delta to be against p1
  • commandserver: add IPC channel to teach repository path on command finished
  • commandserver: add config knob for various logging options
  • commandserver: add experimental option to use separate message channel
  • commandserver: send raw progress information to message channel
  • filecache: unimplement __set__() and __delete__() (API)

  • http: allow 'auth.prefix' to have a username consistent with the URI
  • match: support rooted globs in hgignore
  • merge-tools: when calling external merge tool, describe the resolve inputs
  • mergetools: adjust Beyond Compare config on Mac/Linux
  • obsutil: fix the issue5686

  • progress: deprecate ui.progress()
  • rust-cpython: binding for AncestorsIterator

  • rust-cpython: binding for LazyAncestors

  • rust-cpython: bindings for MissingAncestors

  • sparse-revlog: disable sparse-revlog if config disable general-delta
  • sparse-revlog: enabled by default
  • storage: update sqlitestore to use the new 'deltamode' parameter
  • store: raise ProgrammingError if unable to decode a storage path

  • subrepo: extend path auditing test to include more weird patterns (SEC)
  • subrepo: prohibit variable expansion on creation of hg subrepo (SEC)
  • subrepo: reject potentially unsafe subrepo paths (BC) (SEC)

3.6. Behavior Changes

  • graft: abort if --date/user specified with --currentdate/currentuser (BC)
  • logtoprocess: drop support for ui.log() call with invalid msg arguments (BC)
  • logtoprocess: leverage procutil.shellenviron() to stringify variables (BC)
  • narrow: drop the bundle2 capability since we have server capabilities (BC)
  • revset: enforce "%d" to be interpreted as literal revision number (API) (BC)
  • revsets: make bookmark/named('re:nonexistent') not abort (issue6018) (BC)

  • subrepo: reject potentially unsafe subrepo paths (BC) (SEC)

3.7. Internal API Changes

  • extensions: deprecate extsetup without a 'ui' argument (API)
  • extensions: import the exthelper class from evolve 980565468003 (API)
  • filecache: unimplement __set__() and __delete__() (API)

  • histedit: drop unused constructor arguments (API)
  • revset: enforce "%d" to be interpreted as literal revision number (API) (BC)
  • ui: add config knob to redirect status messages to stderr (API)

4. Mercurial 4.8.2 (2019-01-07)

This is a regularly-scheduled bugfix release containing following fixes:

4.1. commands

  • update: do not pass in user revspec as default destination (issue6044)

4.2. core

  • match: fix assertion for fileset with no context (issue6046)

  • revlog: catch delta base value under -1
  • revlog: catch revlog corruption in index_baserev
  • server: always close http socket if responding with an error (issue6033)

  • vfs: ensure closewrapbase fh doesn't escape by entering context manager

4.3. extensions

  • phabricator: properly encode boolean types in the request body

4.4. unsorted

  • windows: ensure mixedfilemodewrapper fd doesn't escape by entering context mgr
  • worker: do not swallow exception occurred in main process

5. Mercurial 4.8.1 (2018-12-04)

A regularly scheduled bugfix release. Some security fixes are included, but all are expected to be low-risk.

5.1. commands

  • commandserver: get around ETIMEDOUT raised by selectors2
  • graft: do not try to skip rev derived from ancestor more than once (issue6024)

  • verify: provide unit to ui.makeprogress()

5.2. core

  • revlog: fix out-of-bounds access by negative parents read from revlog (SEC)

5.3. extensions

  • rebase: abort in-mem rebase if there's a dirty merge state
  • rebase: fix dir/file conflict detection when using in-mem merge
  • rebase: fix path auditing to audit path relative to repo root (issue5818)

  • rebase: preserve working copy when redoing in-mem rebase on disk

5.4. unsorted

  • tests: stabilize test-inherit-mode.t on FreeBSD and macOS (issue6026)

6. Mercurial 4.8 (2018-11-02)

An overview of new features available. This is a regularly-scheduled quarterly feature release.

6.1. commands

  • add: add a label for messages about added files
  • addremove: add labels for messages about added and removed files
  • annotate: pass in wdir rev and node to formatter (BC)
  • annotate: rename {line_number} to {lineno} (BC)
  • bookmarks: add explicit option to list bookmarks of the given names
  • bookmarks: pass in formatter to printbookmarks() instead of opts (API)
  • clone: allow local cloning to create more than one level of directories
  • debugcommands: introduce debugrevlogindex (BC)
  • debugcommands: use openstorage() in debugdata (BC)
  • grep: add MULTIREV support to --allfiles flag
  • grep: rename {line_number} to {lineno} as well (BC)
  • grep: search all commits in allfiles mode
  • help: adding a proper declaration for shortlist/basic commands (API)
  • help: adding support for command categories
  • identify: change {parents} to a list of nodes (BC)
  • identify: show remote bookmarks in 'hg id url -Tjson -B'
  • log: have changesetformatter fill in wdir() rev and node (BC)
  • log: respect graphshorten on terminal nodes (collapsing o-~ to just o~)

  • merge: improve interactive one-changed one-deleted message (issue5550)

  • phase: explicitly exclude secret phase and above
  • phase: expose a '_phase(idx)' revset
  • phase: handle phase with no command flag
  • phase: report number of non-public changeset alongside the new range
  • push: add "remote" to 'repository changed while pushing' messages (issue5971)

  • remove: add a label for messages about removed files
  • rename: return error status if any rename/copy failed
  • resolve: add a flag for the default behavior of re-merging
  • resolve: add config to make hg resolve not re-merge by default
  • resolve: add confirm config option
  • resolve: add option to warn/abort on -m with unresolved conflict markers
  • resolve: graduate resolve.mark-check from experimental, add docs
  • resolve: rename {status} to {mergestatus} to not shadow change status (BC)
  • status: advertise --abort instead of 'update -C .' to abort a merge
  • status: advertise --abort instead of 'update -C .' to abort graft
  • status: remove "morestatus" message from formatter data (BC)
  • status: rename {copy} to {source} for compatibility with {file_copies} (BC)
  • verify: make output less confusing (issue5924)

6.2. core

  • context: drop compatibility for 'context.descendant' (API)
  • context: move logic from changectx.__init__ to localrepo.__getitem__ (API)

  • context: remove unused overlayfilectx (API)
  • dispatch: don't show list of commands on bogus command
  • dispatch: making all hg abortions be output with a specific label
  • dispatch: show a short error message when invalid global option given
  • exchange: support declaring pull depth
  • exchange: support defining narrow file patterns for pull
  • filelog: add a hasnode() method (API)
  • filelog: drop _generaldelta attribute (API)
  • filelog: drop index attribute (API)
  • filelog: remove checkhash() (API)
  • filelog: remove revdiff() (API)
  • filelog: remove version attribute (API)
  • filelog: stop proxying "opener" (API)
  • filelog: stop proxying _addrevision() (API)
  • filelog: stop proxying checksize() (API)
  • filelog: stop proxying compress() (API)
  • filelog: stop proxying datafile (API)
  • filelog: stop proxying deltaparent() (API)
  • filelog: stop proxying flags() (API)
  • filelog: stop proxying headrevs() (API)
  • filelog: stop proxying rawsize() (API)
  • filelog: stop proxying start(), end(), and length() (API)
  • localrepo: add repository feature when repo can be stream cloned
  • localrepo: add requirement when narrow files creation option present
  • localrepo: automatically load lfs extension when required (BC)
  • localrepo: define "features" on repository instances (API)
  • localrepo: define storage backend in creation options (API)
  • localrepo: move repo creation logic out of localrepository.__init__ (API)

  • localrepo: pass ui to newreporequirements() (API)
  • localrepo: support marking repos as having shallow file storage
  • localrepo: support writing shared file (API)
  • pager: do not enable when TERM=dumb
  • repository: establish API for emitting revision deltas
  • revlog: add method for obtaining storage info (API)
  • revlog: drop LookupError alias (API)

  • revlog: drop RevlogError alias (API)

  • revlog: drop compatibility for 'revlog.descendant' (API)
  • revlog: drop emitrevisiondeltas() and associated functionality (API)
  • revlog: drop some more error aliases (API)
  • revlog: new API to emit revision data
  • revlog: reuse cached delta for identical base revision (issue5975)

  • revset: expand bookmark(.) to the active bookmark
  • revsetlang: fix position of '-' in spaceless 'a-b' expressions
  • streamclone: don't support stream clone unless repo feature present
  • streamclone: include obsstore file into stream bundle if client can read it
  • templatefuncs: add truncate parameter to pad
  • templatekw: add experimental {status} keyword
  • templatekw: deprecate old-style template keyword function (API)
  • templates: rename "user" to "luser" defined in default map file (API)
  • tracing: new module to make tracing events in hg easier
  • tracing: trace command function execution
  • transaction: make entries a private attribute (API)
  • transaction: remember original len(repo) instead of tracking added revs (API)
  • util: make timedcm require the label (API)
  • wireprotov2: add bookmarks to "changesetdata" command
  • wireprotov2: add phases to "changesetdata" command
  • wireprotov2: client support for advertising redirect targets
  • wireprotov2: client support for following content redirects
  • wireprotov2: define and implement "changesetdata" command
  • wireprotov2: define and implement "filedata" command
  • wireprotov2: define and implement "filesdata" command
  • wireprotov2: define and implement "manifestdata" command
  • wireprotov2: server support for sending content redirects
  • wireprotov2: support response caching

6.3. extensions

  • absorb: import extension from Facebook's hg-experimental
  • absorb: print '{rev}:' as a prefix to the hash
  • absorb: print summary of changesets affected
  • absorb: prompt user to accept absorb changes by default
  • amend: support "history-editing-backup" config option
  • closehead: fix close-head -r listification
  • commitextras: work nicely with other extensions
  • convert: fix a file descriptor leak
  • extension: add a summary of total loading time per extension
  • extensions: add detailed loading information
  • extensions: new closehead module for closing arbitrary heads
  • fastannotate: initial import from Facebook's hg-experimental
  • fastannotate: make the default value for 'fastannotate.useflock' dynamic
  • fix: add a monkey-patchable point after all new revisions have been committed
  • fix: compute changed lines lazily to make whole-file fixer tools faster
  • fix: determine fixer tool failure by exit code instead of stderr
  • fix: pull out flag definitions to make them re-usable from extensions
  • fsmonitor: use vfs instead of opener (issue5938)

  • journal: do not pass in repolookuperror string to template (BC)
  • journal: unify template name for "nodes" (BC)
  • largefiles: automatically load largefiles extension when required (BC)
  • lfs: add repository feature denoting the use of LFS
  • lfs: autoload the extension when cloning from repo with lfs enabled
  • lfs: consult the narrow matcher when extracting pointers from ctx (issue5794)

  • lfs: don't add extension to hgrc after clone or share (BC)
  • lfs: don't add extension to hgrc after conversion (BC)
  • logtoprocess: connect all fds to /dev/null to avoid bad interaction with pager
  • logtoprocess: define $HG for children processes
  • narrow: add '--import-rules' flag to tracked command
  • narrow: add a --narrowspec flag to clone command
  • narrow: add narrow and ellipses as server capabilities
  • narrow: add server logic to send cg while widening without ellipsis
  • narrow: check for servers' narrow support before doing anything (BC)
  • narrow: drop support for remote expansion (BC)
  • narrow: introduce a config option to check if narrow is enabled or not
  • narrow: move .hg/narrowspec to .hg/store/narrowspec (BC)
  • narrow: move support for 'hg verify' into core
  • narrow: the first version of narrow_widen wireprotocol command
  • narrow: validate spec files are well-formed during clone (BC)
  • patchbomb: allow using HGHOSTNAME to force a hostname
  • phabricator: drop support for the legacy phabricator.auth.token config (BC)
  • phabricator: mark extension as experimental for now
  • rebase: add --stop option to stop rebase at any point (issue5206)

  • rebase: don't try to prune obsolete changeset already in the destination
  • rebase: explicitly track collapses as fold
  • rebase: skip extinct revisions even if it has no successor in rebase set
  • rebase: support "history-editing-backup" config option
  • remotenames: add names argument to remotenames revset
  • share: allow more than one level of directories to be created
  • shelve: add an "internal" extra
  • shelve: fix crash on unshelve without .shelve metadata file
  • shelve: use the internal phase when possible
  • sqlitestore: file storage backend using SQLite
  • strip: ignore orphaned internal changesets while computing safe strip roots

6.4. hgweb

  • hgweb: add error template to json so it won't crash
  • hgweb: map Abort to 403 error to report inaccessible path for example
  • hgweb: show shortlog by default in json output (issue5978)

  • hgweb: use scmutil.binnode() to translate None to wdir hash (issue5988)

6.5. chg

  • chgserver: add "setumask2" command which uses correct message frame
  • chgserver: restore pager fds attached within runcommand session
  • rust-chg: add Client extensions to run cHg-specific requests
  • rust-chg: add callback to handle pager and shell command requests

6.6. unsorted

  • ancestors: actually iterate over ancestors in topological order (issue5979)

  • bundle2: graduate bundle2.stream option from experimental to server section
  • changegroup: pass sorted revisions into group() (API)
  • changegroup: port to emitrevisions() (issue5976)

  • changegroup: remove reordering control (BC)
  • changegroup: restore default node ordering (issue6001)

  • cleanupnodes: drop special casing around prune markers (API)
  • commands: restore compatibility for "^cmd" registration (issue6005)

  • copies: improve logic of deciding copytracing on based of config options
  • crecord: make nextsametype() check that parent item exists (issue6009)

  • crecord: make enter move cursor down to the next item of the same type
  • delta: skip "empty delta" optimisation for non-general case (issue6006)

  • error: introduce StorageError

  • filemerge: add config knob to check capabilities of internal merge tools
  • filemerge: show warning if chosen tool has no binary files capability
  • fileset: extract language processing part to new module (API)
  • fileset: optimize 'x and not y' to 'x - y'
  • fileset: roughly adjust weights of functions
  • formatter: remove experimental marker from -T option
  • formatter: rename {abspath}/{file} to {path}, and drop relative {path} (BC)
  • global: replace most uses of RevlogError with StorageError (API)

  • hg: allow extra arguments to be passed to repo creation (API)
  • httppeer: expose capabilities for each command
  • index: drop support for negative indexes into the index
  • index: handle index[-1] as nullid more explicitly
  • linelog: fix infinite loop vulnerability
  • lookup: add option to disambiguate prefix within revset
  • mail: always fall back to iso-8859-1 if us-ascii won't work (BC)
  • mail: modernize check for Python-with-TLS
  • manifest: add rawsize() proxy (API)
  • meld: enable auto-merge
  • mergetool: warn if ui.merge points to nonexistent tool
  • narrowspec: limit patterns to path: and rootfilesin: (BC)
  • narrowspec: use sparse.parseconfig() to parse narrowspec file (BC)
  • obsolete: fix ValueError when stored note contains ':' char (issue5783)

  • overlayworkingctx: fix exception in metadata-only inmemory merges (issue5960)

  • phase: add an archived phase
  • phases: add an internal phases
  • pullreport: issue a message about "extinct" pulled changesets
  • py3: rename pycompat.getcwd() to encoding.getcwd() (API)
  • revisions: allow "x123" to refer to nodeid prefix "123"
  • scmutil: accept multiple predecessors in 'replacements' (API)
  • shortest: never emit 0-length prefix even if unique
  • shortest: use 'x' prefix to disambiguate from revnum if configured
  • sparse-revlog: only refine delta candidates in the sparse case (issue6006)

  • statprof: fix indent level of fp.write() (issue6004)

  • statprof: update the name as the i increases (issue6003)

  • storageutil: consistently raise LookupError (API)

  • storageutil: implement file identifier resolution method (BC)
  • storageutil: move metadata parsing and packing from revlog (API)
  • storageutil: new module for storage primitives (API)
  • url: allow to configure timeout on http connection

6.7. Behavior Changes

  • annotate: pass in wdir rev and node to formatter (BC)
  • annotate: rename {line_number} to {lineno} (BC)
  • changegroup: remove reordering control (BC)
  • debugcommands: introduce debugrevlogindex (BC)
  • debugcommands: use openstorage() in debugdata (BC)
  • formatter: rename {abspath}/{file} to {path}, and drop relative {path} (BC)
  • grep: rename {line_number} to {lineno} as well (BC)
  • identify: change {parents} to a list of nodes (BC)
  • journal: do not pass in repolookuperror string to template (BC)
  • journal: unify template name for "nodes" (BC)
  • largefiles: automatically load largefiles extension when required (BC)
  • lfs: don't add extension to hgrc after clone or share (BC)
  • lfs: don't add extension to hgrc after conversion (BC)
  • localrepo: automatically load lfs extension when required (BC)
  • log: have changesetformatter fill in wdir() rev and node (BC)
  • mail: always fall back to iso-8859-1 if us-ascii won't work (BC)
  • narrow: check for servers' narrow support before doing anything (BC)
  • narrow: drop support for remote expansion (BC)
  • narrow: move .hg/narrowspec to .hg/store/narrowspec (BC)
  • narrow: validate spec files are well-formed during clone (BC)
  • narrowspec: limit patterns to path: and rootfilesin: (BC)
  • narrowspec: use sparse.parseconfig() to parse narrowspec file (BC)
  • phabricator: drop support for the legacy phabricator.auth.token config (BC)
  • resolve: rename {status} to {mergestatus} to not shadow change status (BC)
  • status: remove "morestatus" message from formatter data (BC)
  • status: rename {copy} to {source} for compatibility with {file_copies} (BC)
  • storageutil: implement file identifier resolution method (BC)

6.8. Internal API Changes

  • bookmarks: pass in formatter to printbookmarks() instead of opts (API)
  • changegroup: pass sorted revisions into group() (API)
  • cleanupnodes: drop special casing around prune markers (API)
  • context: drop compatibility for 'context.descendant' (API)
  • context: move logic from changectx.__init__ to localrepo.__getitem__ (API)

  • context: remove unused overlayfilectx (API)
  • filelog: add a hasnode() method (API)
  • filelog: drop _generaldelta attribute (API)
  • filelog: drop index attribute (API)
  • filelog: remove checkhash() (API)
  • filelog: remove revdiff() (API)
  • filelog: remove version attribute (API)
  • filelog: stop proxying "opener" (API)
  • filelog: stop proxying _addrevision() (API)
  • filelog: stop proxying checksize() (API)
  • filelog: stop proxying compress() (API)
  • filelog: stop proxying datafile (API)
  • filelog: stop proxying deltaparent() (API)
  • filelog: stop proxying flags() (API)
  • filelog: stop proxying headrevs() (API)
  • filelog: stop proxying rawsize() (API)
  • filelog: stop proxying start(), end(), and length() (API)
  • fileset: extract language processing part to new module (API)
  • global: replace most uses of RevlogError with StorageError (API)

  • help: adding a proper declaration for shortlist/basic commands (API)
  • hg: allow extra arguments to be passed to repo creation (API)
  • localrepo: define "features" on repository instances (API)
  • localrepo: define storage backend in creation options (API)
  • localrepo: move repo creation logic out of localrepository.__init__ (API)

  • localrepo: pass ui to newreporequirements() (API)
  • localrepo: support writing shared file (API)
  • manifest: add rawsize() proxy (API)
  • py3: rename pycompat.getcwd() to encoding.getcwd() (API)
  • revlog: add method for obtaining storage info (API)
  • revlog: drop LookupError alias (API)

  • revlog: drop RevlogError alias (API)

  • revlog: drop compatibility for 'revlog.descendant' (API)
  • revlog: drop emitrevisiondeltas() and associated functionality (API)
  • revlog: drop some more error aliases (API)
  • scmutil: accept multiple predecessors in 'replacements' (API)
  • storageutil: consistently raise LookupError (API)

  • storageutil: move metadata parsing and packing from revlog (API)
  • storageutil: new module for storage primitives (API)
  • templatekw: deprecate old-style template keyword function (API)
  • templates: rename "user" to "luser" defined in default map file (API)
  • transaction: make entries a private attribute (API)
  • transaction: remember original len(repo) instead of tracking added revs (API)
  • util: make timedcm require the label (API)

7. Mercurial 4.7.2 (2018-10-01)

This is a regularly-scheduled bugfix release containing following fixes:

7.1. security

Fix a potential out-of-bounds read in manifest parsing C code.

7.2. core

  • various minor correctness fixes in revsets for commonancestors() and similar

7.3. unsorted

  • chgserver: do not send system() back to client if stdio redirected (issue5992)

  • procutil: compare fd number to see if stdio protection is needed (issue5992)

8. Mercurial 4.7.1 (2018-09-04)

This is a regularly-scheduled bugfix release containing following fixes:

8.1. commands

  • merge: do not delete untracked files silently (issue5962)

8.2. core

  • revlog: fix descendant deprecated method

8.3. hgweb

  • hgweb: load revcount + 1 entries to fill nextentry in log page (issue5972)

8.4. performance

  • remotephase: avoid full changelog iteration (issue5964)

  • remotephase: fast path newheads computation in simple case (issue5964)

  • scmutil: avoid quadratic membership testing (issue5969)

  • sparse-revlog: fix delta validity computation

9. Mercurial 4.7 (2018-08-01)

This is a regularly-scheduled quarterly feature release and has its own release notes page which can be found here Full release notes.

WhatsNew (last edited 2024-11-14 15:38:56 by RaphaelGomes)