Differences between revisions 5 and 177 (spanning 172 versions)
Revision 5 as of 2005-09-16 19:20:20
Size: 2180
Editor: mpm
Comment:
Revision 177 as of 2013-02-01 22:10:08
Size: 50228
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
}}}

Upgrade notes:

{{{
Deal with directory escaping
Warn about Windows symlinking and mixing versions
}}}


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 [[WhatsNew/Archive|archive]] for older versions.)

== Mercurial 2.5 (2013-02-01) ==

This is a regularly-scheduled feature release.

=== Core features ===

 * branchmap: improved performances
 * bundle: add revset expression to show bundle contents (Bts:issue3487)
 * dirstate: implement unix statfiles in C
 * hgweb: add (Atom) subscribe links to the repository index
 * hgweb: add "URL breadcrumbs"
 * hgweb: add branches RSS and Atom feeds
 * hgweb: secret changeset are excluded from html view (Bts:3614 )
 * serve: use chunked encoding in hgweb responses
 * pathencode: implement both basic and hashed encoding in C
 * subrepo: append subrepo path to subrepo error messages
 * validate: check for spurious incoming filelog entries
 * hgweb: allow hgweb's archive to recurse into subrepos

=== Changeset Evolution ===

Major progress toward ChangesetEvolution were done.
 
 * hidden changesets are now properly ignored by all commands
 * a global --hidden flag is added to give access to hidden changesets
 * rewriting a changeset but not its descendants is now allowed; this leaves unstable changeset behind
 * we now detect *divergent* changesets. The third and last kind of obsolescence related troubles. `divergent()` revset is added
 * a `troubled()` revset have been added
 * branchmap for of *visible* and *served* changeset are now cached on disk. This is a major performance improvements
 * performance improvements of most evolution related algorithm

=== Extension features ===
 * color: add template label function
 * convert: add config option to use the local time zone
 * convert: add support for converting git submodule (Bts:issue3528)
 * hgk: use Ttk instead of plain Tk
 * inotify: don't fall over just because of a dangling symlink
 * largefiles: fix revert removing a largefile from a merge
 * largefiles: fix update from a merge with removed files
 * largefiles: make log match largefiles in the non-standin location too
 * largefiles: make update with backup files in .hglf slightly less broken
 * largefiles: rename 'admin' to more descriptive 'lfstoredir
 * rebase: performance improvements
 * rebase: rebase set with multiple roots are now handled by the --rev option
 * record: use patch.diffopts to account for user diffopts
 * share: always set default path to work with subrepos (Bts:issue3518)
 * zsh_completion: add completion of branch names

=== Fixes ===
 * commands: 'hg bookmark NAME' should work even with ui.strict=True
 * copies: do not track backward copies, only renames (Bts:issue3739)
 * destroyed: keep the filecache in sync with `__dict__` (Bts:issue3335, Bts:issue3693, Bts:issue3743)
 * grep: don't search past the end of the searched string
 * hgweb: properly returns 404 for unknown revision (instead of 500)
 * histedit: proper phase conservation (Bts:issue3724)
 * histedit: prevents obsolescence cycle (Bts:issue3681)
 * hook: disable demandimport before importing hooks
 * mq: don't fail when removing a patch without patch file from series file
 * mq: fix qpop of working directory parent patch when not at qtip
 * zeroconf: use port from server instead of picking port from config (Bts:issue3746)
 * update: update to current bookmark if it moved out from under us (issue3682)
 * bookmarks: show active bookmark even if not at working dir
 * largefiles: let wirestore._stat return stats as expected by remotestore verify
 * largefiles: adapt verify to batched remote statlfile (issue3780)
 * largefiles: don't allow corruption to propagate after detection
 * largefiles: don't verify largefile hashes on servers when processing statlfile
 * largefiles: allow use of urls with #revision
 * largefiles: fix commit when using relative paths from subdirectory
 * largefiles: fix cat when using relative paths from subdirectory
 * histedit: prevent parent guessed via --outgoing from being a revset (issue3770)
 * rebase: delete divergent bookmarks on destination (issue3685)
 * hgwebdir: use web.prefix when creating url breadcrumbs (issue3790)
 * subrepo: allow skipping courtesy phase sync (issue3781)
 * merge: .hgsubstate is special as merge destination, not as merge source
 * merge: improved handling of symlinks

== Mercurial 2.4.2 (2013-01-01) ==

This is a regularly-scheduled bugfix release.

 * amend: invalidate dirstate in case of failure (Bts:issue3670)
 * amend: prevent loss of bookmark on failed amend
 * bookmarks: fix head selection for merge with two bookmarked heads
 * bundlerepo: don't return the peer without bundlerepo from getremotechanges
 * dirstate: don't rename branch file if writing it failed
 * dirstate: remove obsolete comment from setbranch
 * hgweb: avoid generator exhaustion with branches
 * hgweb: fix iterator reuse in atom feed generation
 * hgwebdir: honor web.templates and web.static for static files (Bts:issue3734)
 * largefiles revert: update lfdirstate with result from first cleanliness check
 * largefiles status: update lfdirstate with result from cleanliness check
 * largefiles: commit directories that only contain largefiles (Bts:issue3548)
 * largefiles: don't walk through all ignored files
 * paper: sanity-check page feed links
 * scmutil: don't try to match modes on filesystems without modes (Bts:issue3740)
 * zeroconf: use port from server instead of picking port from config (Bts:issue3746)

== Mercurial 2.4.1 (2012-12-03) ==

This is a regularly-schedule bugfix release.

 * amend: force editor only if old message is reused (Bts:issue3698)
 * grep: don't search past the end of the searched string
 * hooks: be even more forgiven of non-fd descriptors (Bts:issue3711)
 * hooks: delay I/O redirection until we actually run a hook (Bts:issue3711)
 * phases: fix missing "error" module import (Bts:issue3707)
 * rebase: fix pull --rev options clashing with --rebase (Bts:issue3619)
 * subrepo: add argument to "diff()" to pass "ui" of caller side (Bts:issue3712) (API)
 * update: allow update to existing branches with invalid names (Bts:issue3710)
 * util: make chunkbuffer non-quadratic on Windows


== Mercurial 2.4 (2012-11-1) ==

This is a regularly-scheduled feature release.

=== Core features ===

 * amend: support for ChangesetEvolution if enabled
 * bookmarks: deactivate current bookmark if no name is given
 * bookmarks: teach the -r option to use revsets
 * bookmarks: disallow bookmarks named 'tip', '.', or 'null'
 * clone: substantial speedup to clone on repo with a lots of heads (Bts:issue3378)
 * clone: activate bookmark specified with --updaterev
 * clone: update to @ bookmark if it exists
 * log: substantial speedup for untracked files (Bts:issue1340)
 * revsets: add branchpoint() function
 * resolve: commit the changes after each item resolve (Bts:issue3638)
 * subrepo, hghave: use "svn --version --quiet" to determine version number
 * subrepo: setting LC_MESSAGES only works if LC_ALL is empty or unset
 * templatefilters: add parameterized date method
 * templatefilters: add parameterized fill function
 * templatefilters: avoid traceback caused by bogus date input (Bts:issue3344)
 * templatekw: add p1rev, p1node, p2rev, p2node keywords
 * templatekw: add parent1, parent1node, parent2, parent2node keywords
 * templater: abort when a template filter raises an exception (Bts:issue2987)
 * templater: add if/ifeq conditionals
 * templater: add sub() function
 * templating: make new-style templating features work with command line lists
 * bookmarks: take ChangesetEvolution into account when updating (Bts:issue3561)
 * speedup various operation related to ChangesetEvolution
 * add detection of changeset ''bumped'' by ChangesetEvolution

=== Extension features ===

 * color: add additional changeset.phase label to log.changeset and log.parent
 * color: enabled color support for export command (Bts:issue1507)
 * color: support for all grep fields
 * contrib: add a commit synthesizer for reproducing scaling problems
 * histedit: refuse to edit public changeset
 * histedit: replaces patching logic by merges
 * histedit: support for ChangesetEvolution if enabled
 * largefiles: always create the cache and standin directories when cloning
 * largefiles: distinguish "no remote repo" from "no files to upload" (Bts:issue3651)
 * largefiles: fix a traceback in lfconvert if a largefile is missing (Bts:issue3519)
 * mq: improve qqueue message with patches applied (Bts:issue3036)
 * mq: update bookmarks during qrefresh
 * notify: support revset selection for subscriptions
 * rebase: support for ChangesetEvolution if enabled
 * record: checks for valid username before starting recording process (Bts:issue3456)
 * record: fix display of non-ASCII names in chunk selection

=== Fixes ===

 * amend: fix incompatibity between logfile and message option (Bts:issue3675)
 * amend: wrap all commit operations in a single transaction
 * bookmarks: abort when incompatible options are used (Bts:issue3663)
 * bookmarks: avoid redundant creation/assignment of "validdests" in "validdest()"
 * bookmarks: check bookmark format during rename (Bts:issue3662)
 * bookmarks: when @ bookmark diverges, don't double the @ sign (BC)
 * bookmark: prevent crashing when a successor is unknown locally (Bts:issue3680)
 * clone: activate @ bookmark if updating to it
 * clone: don't %-escape the default destination (Bts:issue3145)
 * clone: make sure to use "@" as bookmark and "default" as branch (Bts:issue3677) (BC)
 * clone: print bookmark name when clone activates a bookmark
 * commands: don't infer repo for commands like update (Bts:issue2748)
 * convert: normalize paths in filemaps (Bts:issue3612)
 * dirstate: handle large dates and times with masking (Bts:issue2608)
 * dirstate: handle dangling junctions on windows (Bts:issue2579)
 * filemerge: use util.shellquote when calling merge (Bts:issue3581)
 * hgweb: make the escape filter remove null characters (Bts:issue2567)
 * http2: make it possible to connect w/o ssl on port 443
 * icasefs: make case-folding collision detection as deletion aware (Bts:issue3648)
 * largefiles: don't copy largefiles from working dir to the store while converting
 * largefiles: respect the rev when reading standins in copytostore() (Bts:issue3630)
 * largefiles: use 'default' instead of 'default-push' when pulling (Bts:issue3584)
 * mq: fix qrefresh case sensitivity (Bts:issue3271)
 * patchbomb: respect --in-reply-to for all mails if no intro message is sent
 * remove: don't return error on directories with tracked files
 * revset: accept @ in unquoted symbols (Bts:issue3686)
 * scmutil: add mustaudit delegation to filtervfs (Bts:issue3673)
 * subrepo: only do clean update when overwrite is set (Bts:issue3276)
 * subrepo: subrepo isolation, pass baseui when cloning a new subrepo (Bts:issue2904)
 * update: check for missing files with --check (Bts:issue3595) (BC)
 * url: use open and not url.open for local files (Bts:issue3624)
 * verify: fix all doubled-slash sites (Bts:issue3665)
 * wireproto: fix pushkey hook failure and output on remote http repo

== Mercurial 2.3.2 (2012-10-01) ==
 * amend: preserve phase of amended revision (Bts:issue3602)
 * archival: add "extended-timestamp" extra block for zip archives (Bts:issue3600)
 * hgweb: avoid bad $$ processing in graph (Bts:issue3601)
 * hgweb: fix incorrect graph padding calculation (Bts:issue3626)
 * largefiles: fix return codes for multiple commands
 * largefiles: don't convert dest=None to dest=hg.defaultdest() in clone command
 * largefiles: download missing subrepo revs when archiving
 * largefiles: enable islfilesrepo() prior to a commit (Bts:issue3541)
 * largefiles: handle commit -A properly, after a --large commit (Bts:issue3542)
 * largefiles: preserve exit code from outgoing command (Bts:issue3611)
 * largefiles: restore caching of largefiles with 'clone -U --all-largefiles'
 * largefiles: restore normal 'clone -u' and 'clone -U' functionality
 * lock: fixed race condition in trylock/testlock (Bts:issue3506)
 * mergetools.hgrc: set vimdiff to check=changed
 * strip: fix revset usage (Bts:issue3604)
 * subrepo: encode unicode path names (Bts:issue3610)

== Mercurial 2.3.1 (2012-09-01) ==

 * clone: don't fail with --update for non-local clones (Bts:issue3578)
 * commit: normalize filenames when checking explicit files (Bts:issue3576)
 * fileset: actually implement 'minusset'
 * fileset: do not traceback on invalid grep pattern
 * fileset: exclude deleted files from matchctx.existing()
 * fileset: fix generator vs list bug in fast path
 * fileset: matchctx.existing() must consider ignored files
 * fileset: matchctx.existing() must consider unknown files
 * largefiles: adjust localstore to handle batch statlfile requests (Bts:issue3583)
 * merge: handle case when heads are all bookmarks
 * obsolete: import modules within mercurial/ without "from mercurial"
 * revlog: don't try to partialmatch strings with length > 40
 * rollback: write dirstate branch with correct encoding
 * store: only one kind of OSError means "nonexistent entry"
 * store: sort the results of fncachestore.datafiles()
 * strip: fix revset usage (Bts:issue3604)
 * templater: handle a missing value correctly
 * verify: do not choke on valid changelog without manifest
 * wix: bump MSI based installers to use Python 2.7


== Mercurial 2.3 (2012-08-01) ==

This is a regularly-scheduled feature release with numerous improvements and
bugfixes.

=== Core features ===

 * help: add --keyword (-k) for searching help
 * hgweb: side-by-side comparison functionality
 * log: support --graph without graphlog extension
 * push: accept revset argument for --rev
 * merge: bookmarks will no longer automatically merge with unnamed heads or other bookmarks. Instead it picks heads with diverging bookmarks.
 * introduce ChangesetsObsolescence concept ''(experimental)''

 * bookmarks: allow existing remote bookmarks to become heads when pushing
 * bookmarks: pull new bookmarks from remote by default '''(backward incompatible change)'''
 * bookmarks: delete divergent bookmarks on merge
 * bisect: set HG_NODE when runing a command
 * graft: allow -r to specify revisions
 * graft: implement --log (Bts:issue3438)
 * graft: remark on empty graft
 * hooks: print out more information when loading a python hook fails
 * identity: show trailing '+' for dirty subrepos (Bts:issue2839)
 * incoming/outgoing: handle --graph in core
 * merge: warn about file deleted in one branch and renamed in other (Bts:issue3074)
 * Mercurial can now identify third-party extensions as sources of tracebacks
 * outgoing: accept revset argument for --rev
 * performance improvement on branchy repo: incrementaly update branchcache
 * performance improvement on huge file tree: add a C function to pack the dirstate
 * performance improvement for huge .hgignore: process regex with re2 bindings if available
 * revset: add "diff" field to "matching" predicate
 * revset: add "converted" predicate to find converted changesets
 * revset: add "origin" and "destination" predicates, to get graft, transplant or rebase origins or destinations.
 * revset: add "extra" predicate to match changesets extra fields (Bts:issue2767)
 * revset: add pattern matching to "bookmarks/branch/extra/tag/user" predicated

=== Extension features ===

 * acl: use of "!" prefix in user or group names
 * children: mark extension as deprecated
 * convert/svn: handle non-local svn destination paths (Bts:issue3142)
 * convert: accept Subversion 'file:///c%3A/svnrepo' syntax on Windows
 * fetch: mark extension as deprecated
 * graphlog: feature is now into core
 * histedit: new extension for interactive history editing
 * hg-ssh: add read-only flag
 * largefiles: add --all-largefiles flag to pull and clone (Bts:issue3188)
 * largefiles: improve performance by batching statlfile requests when pushing a largefiles repo (Bts:issue3386)
 * largefiles: no longer attempt to clone all largefiles to non-local destinations
 * largefiles: optimize performance when updating (Bts:issue3440)
 * largefiles: support revsets for cat, outgoing --large and revert
 * mq: introduce qpush/qpop/qgoto --keep-changes
 * strip: introduce -B option to remove a bookmark
 * rebase: allow collapsing branches in place (Bts:issue3111)
 * rebase: make --dest understand revsets
 * rebase: drop the infamous --detach option: rebase now behave with --source and --rev as expectable. It may no longer add second parent to rebased changeset '''(backward incompatible change)'''
 * transplant: handle non-empty patches doing nothing (Bts:issue2806)
 * transplant: manually transplant pullable changesets with --log

=== Fixes ===

 * bisect: fix O(n**2) behaviour (Bts:issue3382)
 * bookmarks: fix push of moved bookmark when creating new branch heads
 * case insensitive file system can no longer be confused by `-R` on (Bts:issue2167)
 * copies: one fix related to directory rename detection (Bts:issue3511)
 * convert: check for failed svn import in debugsvnlog and abort cleanly
 * convert: ignore svn:executable for subversion targets without exec bit support
 * convert: keep branch switching merges with ancestors (Bts:issue3340)
 * convert: make filemap renames consistently override revision renames
 * debugrevlog: fix a bug with empty repository (Bts:issue3537)
 * graphlog: don't truncate template value at last \n
 * httprepo: ensure Content-Type header exists when pushing data
 * largefiles: fix a traceback when addremove follows a remove (Bts:issue3507)
 * largefiles: fix a traceback when archiving a subrepo in a subrepo
 * largefiles: fix addremove when largefile is missing (Bts:issue3227)
 * largefiles: fix addremove with -R option
 * largefiles: fix exception hack for i18n (Bts:issue3197)
 * largefiles: fix path handling for cp/mv (Bts:issue3516)
 * largefiles: archive -S now store largefiles instead of standins
 * largefiles: fix hg addremove when already removed largefile exists (Bts:issue3364)
 * merge: do not warn about copy and rename in the same transaction (Bts:issue2113)
 * mq: add ".hgsubstate" to patch target list only if it is not listed up yet
 * mq: create patch file after commit to import diff of ".hgsubstate" at qrefresh
 * pager: work around bug in python 2.4's subprocess module (Bts:issue3533):
 * revlog: zlib.error are no longer sent to the user (Bts:issue3424)
 * tag: don't allow tagging the null revision (Bts:issue1915)


== Mercurial 2.2.3 (2012-07-01) ==

This is a regularly-scheduled bugfix release.

 * amend: disable hooks when creating intermediate commit (Bts:issue3501)
 * archive: make progress only show files that are actually archived
 * bookmarks: correctly update current bookmarks on rebase (Bts:issue2277)
 * bugzilla: stop bugs always being marked as fixed in xmlrpc (Bts:issue3484)
 * graft: don't drop the second parent on unsuccessful merge (Bts:issue3498)
 * hgweb: fixes linebreak location in gitweb filediff.tmpl view
 * rebase: improve error message on improper phases
 * record: fix display of non-ASCII names
 * statichttprepo: don't send Range header when requesting entire file
 * strip: update help to state that you can strip public changeset
 * subrepo/svn: make rev number retrieval compatible with svn 1.5 (Bts:issue2968)
 * subrepo: support Git being named "git.cmd" on Windows (Bts:issue3173)
 * subrepo: warn user if Git is not version 1.6.0 or higher
 * update: fix help regarding update to ancestor

== Mercurial 2.2.2 (2012-06-01) ==

This is a regularly-scheduled bugfix release.

 * addremove: document default similarity behavior (Bts:issue3429)
 * alias: inherit command optionalrepo flag (Bts:issue3298)
 * amend: preserve extra dict (Bts:issue3430)
 * bisect: save current state before running a command
 * bugzilla: fix transport initialization on python 2.4
 * build: fix hgrc manpage building with docutils 0.9
 * bundle: make bundles more portable (Bts:issue3441)
 * changelog: ensure that nodecache is valid (Bts:issue3428)
 * hg-ssh: exit with 255 instead of -1 on error
 * hgweb: fix filediff base calculation
 * largefiles: fix "hg status dir" missing regular files (Bts:issue3421)
 * largefiles: fix deletion of multiple missing largefiles (Bts:issue3329)
 * largefiles: follow normal codepath for addremove if non-largefiles repo (Bts:issue3249)
 * largefiles: in putlfile, ensure tempfile's directory exists prior to creation
 * largefiles: use wlock for lfconvert (Bts:issue3444)
 * localrepo: clear _filecache earlier to really force reloading (Bts:issue3462)
 * match: make 'match.files()' return list object always
 * mq: add --no-backup for qpush/qpop/qgoto
 * mq: backup local changes in qpop --force (Bts:issue3433)
 * mq: backup local changes in qpush --force
 * mq: qimport need wlock for --push - do that after releasing lock
 * osutil: handle deletion race with readdir/stat (Bts:issue3463)
 * pager: check if signal.SIGPIPE exists
 * pager: preserve Hg's exit code (and fix Windows support) (Bts:issue3225)
 * pager: remove quiet flag
 * paper, monoblue: link correctly to lines in annotate view
 * parsers: fix refcount bug on corrupt index
 * patch: fix segfault against unified diffs which start line is zero
 * patch: keep patching after missing copy source (Bts:issue3480)
 * posix: workaround lack of TIOCGWINSZ on Irix (Bts:issue3449)
 * revpair: handle odd ranges (Bts:issue3474)
 * revset: explicitely tag alias arguments for expansion
 * revset: fix infinite alias expansion detection
 * revset: fix traceback for bogus revisions in id(rev)
 * revset: make matching() preserve input revision order
 * scmutil: seen.union should be seen.update (Bts:issue3476)
 * subrepo: do not traceback on .hgsubstate parsing errors
 * subrepo: ignore blank lines in .hgsubstate (Bts:issue3424)
 * tag: run commit hook when lock is released (Bts:issue3344)
 * templater: handle !SyntaxError when parsing ui.logtemplate
 * util: fix bad variable use in bytecount introduced by f0f7f3fab315
 * win32: fix encoding handling for registry strings (Bts:issue3467)

== Mercurial 2.2.1 (2012-05-03) ==

This is an unscheduled bugfix release to fix a signficant memory leak in hgweb.

 * bookmarks: catch the proper exception for missing revisions
 * help: add reference to template help (Bts:issue3413)
 * help: added description for the web.collapse setting
 * largefiles: fix commit of both largefiles and non-largefiles (Bts:issue3354)
 * parsers: fix refcount leak, simplify init of index (Bts:issue3417)

== Mercurial 2.2 (2012-05-01) ==

This is a regularly-scheduled feature release. The most notable feature is a new safe '--amend' option for commit using our new [[Phases|phases]] infrastructure. There are also a number of signficant performance improvements for large repositories and improvements for case-folding filesystems. See UpgradeNotes for minor compatibility notes.

=== Core features ===
 * commit: add --amend option
 * fileset: add "subrepo" fileset symbol
 * graft: add --dry-run support (Bts:issue3362)
 * hgweb: add support for branch width and color settings
 * hgweb: add block numbers to diff regions and related links
 * hgweb: support multi-level repository indexes by enabling descend and collapse
 * merge: improve performance with lots of unknown files
 * parsers: incrementally parse the revlog index in C
 * plan9: add support for [[https://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs|plan9]]
 * push/pull: improve performance for partial transfers
 * push: decompress in larger chunks for better performance on the server
 * clone: add server config option to prefer uncompressed clone
 * revert: add support for reverting subrepos
 * revset: add "matching" keyword
 * store: speed up read and write of large fncache files
 * ui: optionally quiesce ssl verification warnings on python 2.5

=== Extension features ===

 * bugzilla: add xmlrpcemail submission for Bugzilla 3.6 email interface
 * bugzilla: allow change comment to mark bugs fixed
 * bugzilla: extract optional hours from commit message and update bug time
 * bugzilla: modify access interface to include new bug states
 * graphlog: add all log options to glog command
 * patchbomb: add --body flag to send patches as inline message body text
 * record: allow splitting of hunks by manually editing patches
 * transplant: permit merge changesets via --parent
 
=== Fixes ===
 * alias: fix shell alias documentation (Bts:issue3374)
 * archive: make it work with svn subrepos (Bts:issue3308)
 * branchmap: server should not advertise secret changeset in branchmap (Bts:issue3303)
 * clone: always close source repository (Bts:issue2491)
 * commit: abort on merge with missing files (BC)
 * config: discard UTF-8 BOM if found
 * convert/bzr: convert all branches (Bts:issue3229) (BC)
 * convert/bzr: expect unicode metadata, encode in UTF-8 (Bts:issue3232)
 * convert/bzr: handle empty bzr repositories (Bts:issue3233)
 * convert/bzr: ignore nested repos when listing branches (Bts:issue3254)
 * convert/svn: do not try converting empty head revisions (Bts:issue3347)
 * convert/svn: make svn sink work with svn 1.7
 * convert: support non-annotated tags in git backend
 * dirstate: preserve path components case on renames (Bts:issue3402)
 * export: catch exporting empty revsets (Bts:issue3353)
 * icasefs: make case-folding collision detection rename aware (Bts:issue3370)
 * inotify: catch !SignalInterrupt during shutdown (Bts:issue3351)
 * journal: use tryread helper to backup files (Bts:issue3375)
 * largefiles: fix cat for largefiles (Bts:issue3352)
 * largefiles: fix status -S reporting of subrepos (Bts:issue3231)
 * largefiles: hide .hglf/ prefix for largefiles in hgweb
 * largefiles: notice dirty large files in a subrepo
 * largefiles: only update changed largefiles when transplanting
 * largefiles: optimize update speed by only updating changed largefiles
 * localrepo: add setparents() to adjust dirstate copies (Bts:issue3407)
 * mdiff: fix diff header generation for files with spaces (Bts:issue3357)
 * merge: check for untracked files more precisely (Bts:issue3400)
 * merge: fix unknown file merge detection for case-folding systems
 * patch: be more tolerant with "Parent" header (Bts:issue3356)
 * patch: be more tolerant with EOLs in binary diffs (Bts:issue2870)
 * patch: fix patch hunk/metdata synchronization (Bts:issue3384)
 * phase: when phase cannot be reduced, hint at --force and return 1 (BC)
 * posix: disable cygwin's symlink emulation (BC)
 * posix: ignore execution bit in cygwin (Bts:issue3301)
 * pure/osutil: use Python's msvcrt module (Bts:issue3380)
 * rebase: preserve mq series order, guarded patches (Bts:issue2849)
 * rebase: skip resolved but emptied revisions
 * revset: fix O(n**2) behaviour of bisect() (Bts:issue3381)
 * revset: fix adds/modifies/removes and patterns (Bts:issue3403)
 * revset: fix alias substitution recursion (Bts:issue3240)
 * subrepo/svn: abort on commit with missing file (Bts:issue3029)
 * subrepo/svn: fix checked out rev number retrieval (Bts:issue2968)
 * subrepo: fix default implementation of forget() (Bts:issue3404)
 * subrepo: rewrite handling of subrepo state at commit (Bts:issue2403)
 * templates/filters: extracting the user portion of an email address (BC)
 * transplant: do not rollback on patching error (Bts:issue3379)
 * update: fix case-collision with a clean wd and no --clean
 * update: make --check abort with dirty subrepos
 * update: use normal update path with --check (Bts:issue2450)
 * wireprotocol: use visibleheads as reference while unbundling (Bts:issue 3303)


== Mercurial 2.1.2 (2012-04-01) ==

This is a regularly-scheduled bugfix release.

 * alias: abort on missing positional args (Bts:issue3331)
 * aliases: use empty string for missing position parameters (Bts:issue3331)
 * bookmarks: clone non-divergent bookmarks with @ in them
 * convert/git: abort if git submodules are detected (Bts:issue2150)
 * convert: deal with empty splicemap path (Bts:issue3311)
 * dirstate: avoid normalizing letter case on icasefs for exact match (Bts:issue3340)
 * dirstate: fix some problems for recursive case normalization (Bts:issue3342)
 * dirstate: normalize case of directory components
 * extdiff: escape filenames with vim/DirDiff and make quoting work with Windows
 * filemerge: remove temporary files when using internal:dump as merge-tool
 * filemerge: restore default prompt for binary/symlink lost in 83925d3a4559
 * icasefs: use case preserved root for 'util.fspath()' invocation (Bts:issue3302)
 * largefiles: suppress unexpected warning of 'hg status' for removed files
 * localrepo: fix unpushable repos when using bookmarks (Bts:issue3317)
 * merge: accept missing revisions in symlink flag merge (Bts:issue3316)
 * merge: handle linear update to symlink correctly (Bts:issue3316)
 * mq: fix qpush --move with comments in series file between applied patches
 * qfinish: comply with the phases.new-commit option in secret mode (Bts:issue3335)
 * rebase: move bookmarks as needed with pull --rebase (Bts:issue3285)
 * rebase: properly calculate descendant set when aborting (Bts:issue3332)
 * rename: handle case-changing (Bts:issue1717)
 * setup.py: don't call splitlines twice on the output of xcodebuild (Bts:issue3277)
 * strip: enhance repair.strip to receive a list of nodes (Bts:issue3299)
 * strip: ignore -n (Bts:issue3326) (BC)
 * wix: add phases help text and two more translations (Bts:issue3288)

== Mercurial 2.1.1 (2012-03-01) ==

This is a regularly-scheduled bugfix release.

 * bdiff: fix malloc(0) issue in fixws()
 * bugzilla: stop XMLRPC requests from requesting gzipped responses
 * bundlerepo: bundle repos should be non-publishing (Bts:issue3266)
 * cmdserver: invalidate the dirstate when running commands (Bts:issue3271)
 * context: make workingctx.forget() really warn about untracked files
 * convert: ignore blank lines in mapfiles (Bts:issue3286)
 * convert: tolerate spaces between splicemap parent ids (Bts:issue3203)
 * convert: use splicemap entries when sorting revisions (Bts:issue1748)
 * dirstate: filecacheify _ignore (Bts:issue3278)
 * fetch: use update rather than clean when updating (Bts:issue3246)
 * forget: show warning messages for forgetting in subrepo correctly
 * graft: use proper revisions for copy detection (Bts:issue3265)
 * import: handle git renames and --similarity (Bts:issue3187)
 * largefiles: check whether specified patterns are related to largefiles strictly
 * largefiles: don't break filesets
 * largefiles: only cache largefiles in new heads
 * largefiles: use repo.store.createmode for new files in .hg/largefiles
 * localrepo: clear _filecache on rollback (Bts:issue3261)
 * localrepo: reset _phasesdirty flag after writing
 * localrepo: use 'changectx.dirs()' in 'status()' for directory patterns
 * log: fix --follow FILE ancestry calculation
 * log: remove caching of all visited revisions (Bts:issue3253)
 * log: restore cache used by --copies
 * mdiff: adjust hunk offsets with --ignore-blank-lines (Bts:issue3234)
 * mq: fix qapplied --last and qprev documentation (Bts:issue3282)
 * mq: fix qnext when all remaining patches are guarded
 * mq: make qimport --push push all imported patches (Bts:issue3130)
 * mq: make qprev return the previous applied patch (Bts:issue3245)
 * mq: restore _branchtags() fast path (Bts:issue3223)
 * patch: fix fuzzing of hunks without previous lines (Bts:issue3264)
 * patch: fuzz more aggressively to match patch(1) behaviour
 * pull: backout change to return code
 * scmutil: update cached copy when filecached attribute is assigned (Bts:issue3263)
 * setup: handle output from Apple's Xcode 4.3 better (Bts:issue3277)
 * subrepo: fix for merge inconsistencies
 * update: delete bookmarks.current when explicitly updating to a rev (Bts:issue3276)
 * update: don't move the active bookmark if a rev is specified with -r

== Mercurial 2.1 (2012-02-01) ==

This is a regularly-scheduled feature release. See UpgradeNotes for some minor compatibility notes.

=== Major features ===
 * Changesets now have a phase attribute, which tracks what changesets are safe to modify (see [[Phases]])
=== Core changes ===
 * annotate: support diff whitespace filtering flags (Bts:issue3030)
 * bookmarks: automatically advance bookmark on bare update (BC) (Bts:issue2894)
 * bookmarks: shadow divergent bookmarks of foo with foo@n
 * copies: improved copy detection for diff and status
 * hooks: new priority specifier to control ordering
 * id: add command line options for handling ssh and https urls
 * push: propagate --new-branch and --ssh options when pushing subrepos
 * revset: add remote() predicate to lookup remote revisions
 * subrepo: support explicit add and forget of files in subrepos
=== Extension changes ===
 * bugzilla: make XMLRPC interface support http and https access
 * largefiles: add --normal option to hg add (Bts:issue3061)
 * notify: add option for writing to mbox
 * rebase: add a "D" short option for detach
 * rebase: allow --detach when --rev is used
 * win32mbcs: allow win32mbcs extension to be enabled on cygwin platform
 * mq: add secret phase setting
=== Bug fixes ===
 * hgcia: fix diffstat support
 * largefiles: add error checking to tags conversion (Bts:issue3092)
 * largefiles: add tests for uncovered codepaths (Bts:issue3092)
 * largefiles: check if largefile could be found when archiving (Bts:issue3193)
 * largefiles: correctly download new largefiles when merging
 * largefiles: correctly handle dirstate status when rebasing
 * largefiles: correctly handle newly added largefile on other side of merge
 * largefiles: display remote errors from putlfile (Bts:issue3123) (Bts:issue3149)
 * largefiles: don't reference uninitialized variable (Bts:issue3092)
 * largefiles: fix caching largefiles from an aliased repo (Bts:issue3212)
 * largefiles: fix confusion upon removal of added largefile (Bts:issue3176)
 * largefiles: fix inappropriate locking (Bts:issue3182)
 * largefiles: fix output of hg summary (Bts:issue3060)
 * largefiles: cache new largefiles for new heads when pulling
 * largefiles: implement addremove (Bts:issue3064)
 * largefiles: optimize performance of status on largefiles repos (Bts:issue3136)
 * largefiles: optimize status when files are specified (Bts:issue3144)
 * largefiles: remove empty directories upon update (Bts:issue3202)
 * largefiles: fix addremove when no largefiles are specified
 * largefiles: fix revert on missing largefile (Bts:issue3217)
 * largefiles: fix transplant for all cases (Bts:issue3192)
 * mail: use quoted-printable for mime encoding to avoid too long lines (Bts:issue3075)
 * merge: give a special message for internal:merge failure (Bts:issue3105)
 * rebase: reinstate old-style rev spec support for the source and base (Bts:issue3181)
 * ssh: quote remote paths (Bts:issue2983)
 * sslutil: abort properly if no certificate received for https connection
 * sslutil: show fingerprint when cacerts validation fails
 * status: support revsets with --change
 * subrepo: avoid syncing bookmarks twice on clone (Bts:issue3191)
 * tag: invalidate tag cache immediately after adding new tag (Bts:issue3210)
 * util: don't encode ':' in url paths
 * bundlerepo: try to find containing repo on creation (Bts:issue1812)
 * convert: subversion convert abort on revision not found (Bts:issue3205)
 * discovery: fix regression when checking heads for pre 1.4 client (Bts:issue3218)
 * merge: defer symlink flag merging to filemerge (Bts:issue3200)
 * patch: a little bit more robust line counting on diff --stat (Bts:issue3183)
 * push: return 1 if no changes found (Bts:issue3228)
 * qpush: avoid trying to manage existing history (Bts:issue2218)
 * revsets: include the correct first ancestor change for follow(file)
 * revsets: filesets now work correctly inside of revsets


== Mercurial 2.0.2 (2012-01-01) ==
This is a regularly-scheduled bug-fix release.

 * alias: shortcut command matching so shadowing works properly (Bts:issue3104)
 * branch: warn on branching
 * changelog: handle decoding of NULs in extra more carefully (Bts:issue3156)
 * convert: improve exception reporting for SVN logstream
 * diff: don't crash when diffing a revision with a deleted subrepo (Bts:issue3153)
 * fetch: fix unneeded commit when no merge attempted (Bts:issue2847)
 * fetch: patch cornercase in children calculation (Bts:issue2773)
 * largefiles: copy files in binary mode (Bts:issue3164)
 * largefiles: don't require a user cache (Bts:issue3088) (Bts:issue3155)
 * largefiles: fix 'hg status' abort after merge
 * largefiles: handle merges between normal files and largefiles (Bts:issue3084)
 * merge: check filename case collision between changesets for branch merging
 * pathauditor: switch normcase logic according to case sensitivity of filesystem
 * progress: check for ui.quiet and ui.debugflag before we write
 * rollback: always call destroyed() (regression from 1.9)
 * util: fix url.__str__() for windows file URLs
 * windows: use upper() instead of lower() or os.path.normcase()

== Mercurial 2.0.1 (2011-12-01) ==
This is a regularly-scheduled bug-fix release.

 * alias: shortcut command matching show shadowing works properly (Bts:issue3104)
 * bundlerepo: don't write branch cache to disk
 * clone: don't save user's password in .hg/hgrc (Bts:issue3122)
 * convert/bzr: correctly handle divergent nested renames (Bts:issue3089)
 * convert/bzr: fix test of divergent nested renames for bzr 1.x
 * convert/svn: fix URL quoting issue with svn 1.7
 * convert: handle trailing slashes in filemap better (Bts:issue3124)
 * diff: '\ No newline at end of file' is also not part of the header
 * diff: --ignore-blank-lines was too enthusiastic
 * dirstate: fix case-folding identity for traditional Unix
 * graft: disallow grafting grafted csets in specific situations (Bts:issue3091)
 * graft: preserve original source in subsequent grafts
 * hook: flush stdout before redirecting to stderr
 * import: fix parent selection when importing merges
 * largefiles: ensure destination directory exists before findfile links to there
 * largefiles: file storage should be relative to repo, not relative to cwd
 * largefiles: fix 'hg clone . ../foo' OSError abort
 * largefiles: fix rename (Bts:issue3093)
 * largefiles: treat status of cache missed largefiles as "missing" correctly
 * largefiles: use "ui.configlist()" to get largefiles.patterns configuration
 * largefiles: write .hg/largefiles/ files atomically
 * makedate: wrong timezone offset if DST rules changed this year (Bts:issue2511)
 * mdiff/patch: fix bad hunk handling for unified diffs with zero context
 * posix: add extended support for OS X path folding
 * posix: fix findexe() to check for file type and access
 * rebase: ensure target is not taken as external (Bts:issue3085)
 * rebase: treat nullmerge as a special case in rebasestate (Bts:issue3046)
 * revset: balance %l or-expressions (Bts:issue3129)
 * revset: follow(nosuchfile) should give an empty set (Bts:issue3114)
 * subrepo: fix git status false positive (Bts:issue3109)
 * subrepo: use correct paths for subrepos with ..-relative paths on windows
 * update: don't clobber untracked files with wrong casing
 * url: handle `file://localhost/c:/foo` "correctly"

== Mercurial 2.0 (2011-11-01) ==
This is a regularly-scheduled feature release. See UpgradeNotes for some minor compatibility notes.

=== Major features ===
 * New core Cmd:graft command (similar to transplant extension)
 * New [[LargefilesExtension|largefiles]] extension

=== Core changes ===
 * commit: abort when there are uncommitted subrepos, use the -S option to recurse
 * help: most commands now have usage examples with help -v
 * import: add --edit switch
 * revset: add more keywords for bisection
 * revert: introduce short option -C for --no-backup
 * log: add new 'bisect' style that prints the bisection status
 * hgweb: add a "web/logoimg" setting to customize the web logo image
 * subrepo: pull revisions on demand when archiving hg subrepos

=== Extension changes ===
 * color: add styles for tags
 * convert: added bookmarks support in filemap
 * eol: add new eol.fix-trailing-newline setting
 * eol: eol.only-consistent can now be specified in .hgeol
 * export: add %m to file format string (first line of the commit message)
 * mq: make qqueue print current queue name
 * rebase: add --edit switch
 * rebase: add --rev option to rebase
 * rebase: allow rebase on ancestor
 * share: introduce unshare command
 * transplant: add --edit option

=== Bug fixes ===
 * alias: don't shadow commands that we only partially matched (Bts:issue2993) (BC)
 * commit: suppress spurious new head message for duplicate commit (Bts:issue2893)
 * contrib: some support for named branches in zsh_completion (Bts:issue2988)
 * progress: add a changedelay to prevent parallel topics from flapping (Bts:issue2698)
 * rebase: allow rebase to ancestor (Bts:issue3010)
 * rollback: avoid unsafe rollback when not at tip (Bts:issue2998)
 * subrepo: fix git branch tracking logic (Bts:issue2920)
 * subrepo: fix repo relative path calculation for root directories (Bts:issue3033)
 * summary: show bookmarks separate from tags and note active mark (Bts:issue2892)
 * util: wrap lines with multi-byte characters correctly (Bts:issue2943)
 * verify: filter messages about missing null manifests (Bts:issue2900)
 * wireproto: do not call pushkey module directly (Bts:issue3041)
 * auth: fix realm handling with Python < 2.4.3 (Bts:issue2739)
 * diffstat: be more picky when marking file as 'binary' (Bts:issue2816)
 * dirstate: don't fail when dropping a not-tracked file (Bts:issue3080)
 * grep: correct handling of matching lines without line ending (Bts:issue3050)
 * hgweb: fix dynamic date calculation not working under Safari
 * mq: avoid data loss upon qfold + qmv (Bts:issue3058)
 * setup: set whole env for running hg even if .hg doesn't exist (Bts:issue3073)
 * windows: recompute flags when committing a merge (Bts:issue1802)
 * windows: sanity-check symlink placeholders

== Mercurial 1.9.3 (2011-10-01) ==
This is a regular bugfix release.

 * setup: build inotify for sys.platform='linux*'
 * bundlerepo: add argument check before unlink
 * hgweb: properly check for bookmarks when drawing graph
 * http: handle push of bundles > 2 GB again (Bts:issue3017)
 * keyword: preserve file mode when overwriting
 * osutil: avoid accidentally destroying the True object in isgui (Bts:issue2937)
 * patch: correctly handle non-tabular Subject: line
 * patch: handle 'gitpatches' being empty, but not none
 * record: use command wrapper properly for qnew/qrefresh (Bts:issue3001)
 * setdiscovery: fix hang when #heads>200 (Bts:issue2971)
 * ui: also swap sys.stdout with self.fout in _readline
 * ui: write traceback to self.ferr
 * url: Remove the proxy env variables only when needed (Bts:issue2451)
 * url: parse fragments first (Bts:issue2997)
 * util: fix crash converting an invalid future date to string
 * util: wrap lines with multi-byte characters correctly (Bts:issue2943)
 * win32: quietly ignore missing CreateHardLinkA for Wine

== Mercurial 1.9.2 (2011-08-26) ==
This is a regular bugfix release (slightly early due to travel plans).

 * commands: clarify that 'hg heads foo' shows heads on branch foo
 * dispatch: don't rewrap aliases that have the same definition
 * graphlog: attempt to fix index overrun (Bts:issue2912)
 * http: pass user to readauthforuri() (fix 4a43e23b8c55)
 * http: strip credentials from urllib2 manager URIs (Bts:issue2885)
 * parsers: avoid pointer aliasing
 * subrepo: fix cloning of repos from urls without slash after host (Bts:issue2970)
 * ui: pass ' ' to raw_input when prompting
 * url: really handle urls of the form file:///c:/foo/bar/ correctly
 * win32: msvcr71.dll should be used for python 2.4 and 2.5

== Mercurial 1.9.1 (2011-08-01) ==
This is a regular bugfix release. It fixes several regressions introduced in 1.9. The hgweb server now disables MIME type guessing by default to avoid a potential cross-site scripting issue when hosting untrusted repositories (Bts:issue2923). See UpgradeNotes for more info.

 * dispatch: make sure global options on the command line take precedence
 * eol: ignore IOError from deleted files in commitctx
 * hgcia: set default value of strip to -1 (Bts:issue2891)
 * hgweb: do not ignore [auth] if url has a username (Bts:issue2822)
 * hgweb: handle 'baseurl' configurations with leading slash (Bts:issue2934)
 * hgweb: raw file mimetype guessing configurable, off by default (BC) (Bts:issue2923)
 * httpclient: import ca33b88d143c from py-nonblocking-http (Bts:issue2932)
 * patch: fix parsing patch files containing CRs not followed by LFs
 * rebase: block collapse with keepbranches on multiple named branches (Bts:issue2112)
 * rebase: reset bookmarks (Bts:issue2265 and Bts:issue2873)
 * revert: restore check for uncommitted merge (Bts:issue2915) (BC)
 * revsets: catch type error on tip^p1(tip) (Bts:issue2884)
 * revsets: do the right thing with x^:y (Bts:issue2884)
 * subrepo: handle adding svn subrepo with a svn:external file in it (Bts:issue2931)
 * subrepo: use working copy of .hgsub to filter status (Bts:issue2901)
 * url: store and assume the query part of an url is in escaped form (Bts:issue2921)
 * util: rename the util.localpath that uses url to urllocalpath (Bts:issue2875)
 * verify: filter messages about missing null manifests (Bts:issue2900)
 * web: output a correct date in short format (Bts:issue2902)
 * win32: assign winstdout to sys.__stdout__ as well (Bts:issue2888)

== Mercurial 1.9 (2011-07-01) ==
This is a regular feature release. See UpgradeNotes for some minor compatibility notes.

=== Major features ===
 * New [[Topic:filesets|fileset]] file matching support
 * Improved remote changeset discovery
 * New [[CommandServer|command server]] mode to improve application integration
 * Experimental generaldelta storage scheme
 * Experimental new http client library

=== Command changes ===
 * HGPLAIN: allow exceptions to plain mode, like i18n, via HGPLAINEXCEPT
 * manifest: add new option --all
 * aliases: add positional arguments to non-shell aliases
 * add: introduce a warning message for non-portable filenames (Bts:issue2756)
 * add: notify when adding a file that would cause a case-folding collision
 * bisect: new command to extend the bisect range (Bts:issue2690)
 * bookmarks: allow deactivating current bookmark with -i
 * bundle: update current bookmark to most recent revision on current branch
 * diff: make diff -c aware of revision sets
 * help: add -c/--command flag to only show command help (Bts:issue2799)
 * help: add -e/--extension switch to display extension help text
 * help: move hgignore man page into built-in help (Bts:issue2769)
 * http: correctly handle redirects from http to https
 * identify: list bookmarks for remote repositories
 * import: add --bypass option
 * paths: Add support for -q/--quiet
 * pushkey: add hooks for pushkey/listkeys
 * revset: add aliases
 * revset: add ^ and ~ operators from parentrevspec extension
 * revset: add a revset command to get bisect state
 * revset: add desc(string) to search in commit messages
 * revset: add follow(filename) to follow a filename's history across copies
 * revset: introduce filelog() to emulate log's fast path
 * revset: add a last() function

=== Web changes ===
 * add bookmarks listing to raw style and summary pages
 * support alternate logo url
 * add base link to file log for paper and coal styles (Bts:issue2452)
 * paper, coal: display diffstat on the changeset page
 * elapsed time calculation dynamic (javascript)
 * provide diffstat and summary on the changeset page

=== Extension changes ===
 * hgcia: handle URL like in notify (Bts:issue2406)
 * rebase: add -m/--message to rebase --collapse (Bts:issue2389)
 * Updating hgext.extdiff to use revsets
 * bash_completion: enable alias auto-complete
 * bugzilla: add XMLRPC interface
 * color: add support for terminfo-based attributes and color
 * convert/mtn: add support for using monotone's "automate stdio" when available
 * convert/svn: stop using svn bindings when pushing to svn
 * convert: add bookmark support for hg and git backends
 * convert: add svnrev, svnpath and svnuuid template keywords
 * extdiff: add repository root as a variable
 * graphlog: support more log command features with revsets
 * keyword: convert a verbatim block to a field list
 * keyword: offer additional datefilters when the extension is enabled
 * mq: add a 'mq()' revset predicate that returns applied mq csets
 * notify: send changesets on 'outgoing' hook, updated doc
 * progress: add speed format
 * rebase: add --tool argument for specifying merge tool
 * rebase: allow for rebasing descendants onto ancestors on different named branches
 * record: add an option to backup all wc modifications
 * record: add qrefresh -i/--interactive
 * record: add white space diff options
 * record: alias qrecord to qnew -i/--interactive

=== Bug fixes ===
 * bookmarks: allow create/move bookmark without

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 archive for older versions.)

1. Mercurial 2.5 (2013-02-01)

This is a regularly-scheduled feature release.

1.1. Core features

  • branchmap: improved performances
  • bundle: add revset expression to show bundle contents (issue3487)

  • dirstate: implement unix statfiles in C
  • hgweb: add (Atom) subscribe links to the repository index
  • hgweb: add "URL breadcrumbs"
  • hgweb: add branches RSS and Atom feeds
  • hgweb: secret changeset are excluded from html view (3614 )

  • serve: use chunked encoding in hgweb responses
  • pathencode: implement both basic and hashed encoding in C
  • subrepo: append subrepo path to subrepo error messages
  • validate: check for spurious incoming filelog entries
  • hgweb: allow hgweb's archive to recurse into subrepos

1.2. Changeset Evolution

Major progress toward ChangesetEvolution were done.

  • hidden changesets are now properly ignored by all commands
  • a global --hidden flag is added to give access to hidden changesets
  • rewriting a changeset but not its descendants is now allowed; this leaves unstable changeset behind
  • we now detect *divergent* changesets. The third and last kind of obsolescence related troubles. divergent() revset is added

  • a troubled() revset have been added

  • branchmap for of *visible* and *served* changeset are now cached on disk. This is a major performance improvements
  • performance improvements of most evolution related algorithm

1.3. Extension features

  • color: add template label function
  • convert: add config option to use the local time zone
  • convert: add support for converting git submodule (issue3528)

  • hgk: use Ttk instead of plain Tk
  • inotify: don't fall over just because of a dangling symlink
  • largefiles: fix revert removing a largefile from a merge
  • largefiles: fix update from a merge with removed files
  • largefiles: make log match largefiles in the non-standin location too
  • largefiles: make update with backup files in .hglf slightly less broken
  • largefiles: rename 'admin' to more descriptive 'lfstoredir
  • rebase: performance improvements
  • rebase: rebase set with multiple roots are now handled by the --rev option
  • record: use patch.diffopts to account for user diffopts
  • share: always set default path to work with subrepos (issue3518)

  • zsh_completion: add completion of branch names

1.4. Fixes

  • commands: 'hg bookmark NAME' should work even with ui.strict=True
  • copies: do not track backward copies, only renames (issue3739)

  • destroyed: keep the filecache in sync with __dict__ (issue3335, issue3693, issue3743)

  • grep: don't search past the end of the searched string
  • hgweb: properly returns 404 for unknown revision (instead of 500)
  • histedit: proper phase conservation (issue3724)

  • histedit: prevents obsolescence cycle (issue3681)

  • hook: disable demandimport before importing hooks
  • mq: don't fail when removing a patch without patch file from series file
  • mq: fix qpop of working directory parent patch when not at qtip
  • zeroconf: use port from server instead of picking port from config (issue3746)

  • update: update to current bookmark if it moved out from under us (issue3682)
  • bookmarks: show active bookmark even if not at working dir
  • largefiles: let wirestore._stat return stats as expected by remotestore verify
  • largefiles: adapt verify to batched remote statlfile (issue3780)
  • largefiles: don't allow corruption to propagate after detection
  • largefiles: don't verify largefile hashes on servers when processing statlfile
  • largefiles: allow use of urls with #revision
  • largefiles: fix commit when using relative paths from subdirectory
  • largefiles: fix cat when using relative paths from subdirectory
  • histedit: prevent parent guessed via --outgoing from being a revset (issue3770)
  • rebase: delete divergent bookmarks on destination (issue3685)
  • hgwebdir: use web.prefix when creating url breadcrumbs (issue3790)
  • subrepo: allow skipping courtesy phase sync (issue3781)
  • merge: .hgsubstate is special as merge destination, not as merge source
  • merge: improved handling of symlinks

2. Mercurial 2.4.2 (2013-01-01)

This is a regularly-scheduled bugfix release.

  • amend: invalidate dirstate in case of failure (issue3670)

  • amend: prevent loss of bookmark on failed amend
  • bookmarks: fix head selection for merge with two bookmarked heads
  • bundlerepo: don't return the peer without bundlerepo from getremotechanges
  • dirstate: don't rename branch file if writing it failed
  • dirstate: remove obsolete comment from setbranch
  • hgweb: avoid generator exhaustion with branches
  • hgweb: fix iterator reuse in atom feed generation
  • hgwebdir: honor web.templates and web.static for static files (issue3734)

  • largefiles revert: update lfdirstate with result from first cleanliness check
  • largefiles status: update lfdirstate with result from cleanliness check
  • largefiles: commit directories that only contain largefiles (issue3548)

  • largefiles: don't walk through all ignored files
  • paper: sanity-check page feed links
  • scmutil: don't try to match modes on filesystems without modes (issue3740)

  • zeroconf: use port from server instead of picking port from config (issue3746)

3. Mercurial 2.4.1 (2012-12-03)

This is a regularly-schedule bugfix release.

  • amend: force editor only if old message is reused (issue3698)

  • grep: don't search past the end of the searched string
  • hooks: be even more forgiven of non-fd descriptors (issue3711)

  • hooks: delay I/O redirection until we actually run a hook (issue3711)

  • phases: fix missing "error" module import (issue3707)

  • rebase: fix pull --rev options clashing with --rebase (issue3619)

  • subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)

  • update: allow update to existing branches with invalid names (issue3710)

  • util: make chunkbuffer non-quadratic on Windows

4. Mercurial 2.4 (2012-11-1)

This is a regularly-scheduled feature release.

4.1. Core features

  • amend: support for ChangesetEvolution if enabled

  • bookmarks: deactivate current bookmark if no name is given
  • bookmarks: teach the -r option to use revsets
  • bookmarks: disallow bookmarks named 'tip', '.', or 'null'
  • clone: substantial speedup to clone on repo with a lots of heads (issue3378)

  • clone: activate bookmark specified with --updaterev
  • clone: update to @ bookmark if it exists
  • log: substantial speedup for untracked files (issue1340)

  • revsets: add branchpoint() function
  • resolve: commit the changes after each item resolve (issue3638)

  • subrepo, hghave: use "svn --version --quiet" to determine version number
  • subrepo: setting LC_MESSAGES only works if LC_ALL is empty or unset
  • templatefilters: add parameterized date method
  • templatefilters: add parameterized fill function
  • templatefilters: avoid traceback caused by bogus date input (issue3344)

  • templatekw: add p1rev, p1node, p2rev, p2node keywords
  • templatekw: add parent1, parent1node, parent2, parent2node keywords
  • templater: abort when a template filter raises an exception (issue2987)

  • templater: add if/ifeq conditionals
  • templater: add sub() function
  • templating: make new-style templating features work with command line lists
  • bookmarks: take ChangesetEvolution into account when updating (issue3561)

  • speedup various operation related to ChangesetEvolution

  • add detection of changeset bumped by ChangesetEvolution

4.2. Extension features

  • color: add additional changeset.phase label to log.changeset and log.parent
  • color: enabled color support for export command (issue1507)

  • color: support for all grep fields
  • contrib: add a commit synthesizer for reproducing scaling problems
  • histedit: refuse to edit public changeset
  • histedit: replaces patching logic by merges
  • histedit: support for ChangesetEvolution if enabled

  • largefiles: always create the cache and standin directories when cloning
  • largefiles: distinguish "no remote repo" from "no files to upload" (issue3651)

  • largefiles: fix a traceback in lfconvert if a largefile is missing (issue3519)

  • mq: improve qqueue message with patches applied (issue3036)

  • mq: update bookmarks during qrefresh
  • notify: support revset selection for subscriptions
  • rebase: support for ChangesetEvolution if enabled

  • record: checks for valid username before starting recording process (issue3456)

  • record: fix display of non-ASCII names in chunk selection

4.3. Fixes

  • amend: fix incompatibity between logfile and message option (issue3675)

  • amend: wrap all commit operations in a single transaction
  • bookmarks: abort when incompatible options are used (issue3663)

  • bookmarks: avoid redundant creation/assignment of "validdests" in "validdest()"
  • bookmarks: check bookmark format during rename (issue3662)

  • bookmarks: when @ bookmark diverges, don't double the @ sign (BC)
  • bookmark: prevent crashing when a successor is unknown locally (issue3680)

  • clone: activate @ bookmark if updating to it
  • clone: don't %-escape the default destination (issue3145)

  • clone: make sure to use "@" as bookmark and "default" as branch (issue3677) (BC)

  • clone: print bookmark name when clone activates a bookmark
  • commands: don't infer repo for commands like update (issue2748)

  • convert: normalize paths in filemaps (issue3612)

  • dirstate: handle large dates and times with masking (issue2608)

  • dirstate: handle dangling junctions on windows (issue2579)

  • filemerge: use util.shellquote when calling merge (issue3581)

  • hgweb: make the escape filter remove null characters (issue2567)

  • http2: make it possible to connect w/o ssl on port 443
  • icasefs: make case-folding collision detection as deletion aware (issue3648)

  • largefiles: don't copy largefiles from working dir to the store while converting
  • largefiles: respect the rev when reading standins in copytostore() (issue3630)

  • largefiles: use 'default' instead of 'default-push' when pulling (issue3584)

  • mq: fix qrefresh case sensitivity (issue3271)

  • patchbomb: respect --in-reply-to for all mails if no intro message is sent
  • remove: don't return error on directories with tracked files
  • revset: accept @ in unquoted symbols (issue3686)

  • scmutil: add mustaudit delegation to filtervfs (issue3673)

  • subrepo: only do clean update when overwrite is set (issue3276)

  • subrepo: subrepo isolation, pass baseui when cloning a new subrepo (issue2904)

  • update: check for missing files with --check (issue3595) (BC)

  • url: use open and not url.open for local files (issue3624)

  • verify: fix all doubled-slash sites (issue3665)

  • wireproto: fix pushkey hook failure and output on remote http repo

5. Mercurial 2.3.2 (2012-10-01)

  • amend: preserve phase of amended revision (issue3602)

  • archival: add "extended-timestamp" extra block for zip archives (issue3600)

  • hgweb: avoid bad $$ processing in graph (issue3601)

  • hgweb: fix incorrect graph padding calculation (issue3626)

  • largefiles: fix return codes for multiple commands
  • largefiles: don't convert dest=None to dest=hg.defaultdest() in clone command
  • largefiles: download missing subrepo revs when archiving
  • largefiles: enable islfilesrepo() prior to a commit (issue3541)

  • largefiles: handle commit -A properly, after a --large commit (issue3542)

  • largefiles: preserve exit code from outgoing command (issue3611)

  • largefiles: restore caching of largefiles with 'clone -U --all-largefiles'
  • largefiles: restore normal 'clone -u' and 'clone -U' functionality
  • lock: fixed race condition in trylock/testlock (issue3506)

  • mergetools.hgrc: set vimdiff to check=changed
  • strip: fix revset usage (issue3604)

  • subrepo: encode unicode path names (issue3610)

6. Mercurial 2.3.1 (2012-09-01)

  • clone: don't fail with --update for non-local clones (issue3578)

  • commit: normalize filenames when checking explicit files (issue3576)

  • fileset: actually implement 'minusset'
  • fileset: do not traceback on invalid grep pattern
  • fileset: exclude deleted files from matchctx.existing()
  • fileset: fix generator vs list bug in fast path
  • fileset: matchctx.existing() must consider ignored files
  • fileset: matchctx.existing() must consider unknown files
  • largefiles: adjust localstore to handle batch statlfile requests (issue3583)

  • merge: handle case when heads are all bookmarks
  • obsolete: import modules within mercurial/ without "from mercurial"
  • revlog: don't try to partialmatch strings with length > 40

  • rollback: write dirstate branch with correct encoding
  • store: only one kind of OSError means "nonexistent entry"
  • store: sort the results of fncachestore.datafiles()
  • strip: fix revset usage (issue3604)

  • templater: handle a missing value correctly
  • verify: do not choke on valid changelog without manifest
  • wix: bump MSI based installers to use Python 2.7

7. Mercurial 2.3 (2012-08-01)

This is a regularly-scheduled feature release with numerous improvements and bugfixes.

7.1. Core features

  • help: add --keyword (-k) for searching help
  • hgweb: side-by-side comparison functionality
  • log: support --graph without graphlog extension
  • push: accept revset argument for --rev
  • merge: bookmarks will no longer automatically merge with unnamed heads or other bookmarks. Instead it picks heads with diverging bookmarks.
  • introduce ChangesetsObsolescence concept (experimental)

  • bookmarks: allow existing remote bookmarks to become heads when pushing
  • bookmarks: pull new bookmarks from remote by default (backward incompatible change)

  • bookmarks: delete divergent bookmarks on merge
  • bisect: set HG_NODE when runing a command
  • graft: allow -r to specify revisions
  • graft: implement --log (issue3438)

  • graft: remark on empty graft
  • hooks: print out more information when loading a python hook fails
  • identity: show trailing '+' for dirty subrepos (issue2839)

  • incoming/outgoing: handle --graph in core
  • merge: warn about file deleted in one branch and renamed in other (issue3074)

  • Mercurial can now identify third-party extensions as sources of tracebacks
  • outgoing: accept revset argument for --rev
  • performance improvement on branchy repo: incrementaly update branchcache
  • performance improvement on huge file tree: add a C function to pack the dirstate
  • performance improvement for huge .hgignore: process regex with re2 bindings if available
  • revset: add "diff" field to "matching" predicate
  • revset: add "converted" predicate to find converted changesets
  • revset: add "origin" and "destination" predicates, to get graft, transplant or rebase origins or destinations.
  • revset: add "extra" predicate to match changesets extra fields (issue2767)

  • revset: add pattern matching to "bookmarks/branch/extra/tag/user" predicated

7.2. Extension features

  • acl: use of "!" prefix in user or group names
  • children: mark extension as deprecated
  • convert/svn: handle non-local svn destination paths (issue3142)

  • convert: accept Subversion 'file:///c%3A/svnrepo' syntax on Windows

  • fetch: mark extension as deprecated
  • graphlog: feature is now into core
  • histedit: new extension for interactive history editing
  • hg-ssh: add read-only flag
  • largefiles: add --all-largefiles flag to pull and clone (issue3188)

  • largefiles: improve performance by batching statlfile requests when pushing a largefiles repo (issue3386)

  • largefiles: no longer attempt to clone all largefiles to non-local destinations
  • largefiles: optimize performance when updating (issue3440)

  • largefiles: support revsets for cat, outgoing --large and revert
  • mq: introduce qpush/qpop/qgoto --keep-changes
  • strip: introduce -B option to remove a bookmark
  • rebase: allow collapsing branches in place (issue3111)

  • rebase: make --dest understand revsets
  • rebase: drop the infamous --detach option: rebase now behave with --source and --rev as expectable. It may no longer add second parent to rebased changeset (backward incompatible change)

  • transplant: handle non-empty patches doing nothing (issue2806)

  • transplant: manually transplant pullable changesets with --log

7.3. Fixes

  • bisect: fix O(n**2) behaviour (issue3382)

  • bookmarks: fix push of moved bookmark when creating new branch heads
  • case insensitive file system can no longer be confused by -R on (issue2167)

  • copies: one fix related to directory rename detection (issue3511)

  • convert: check for failed svn import in debugsvnlog and abort cleanly
  • convert: ignore svn:executable for subversion targets without exec bit support
  • convert: keep branch switching merges with ancestors (issue3340)

  • convert: make filemap renames consistently override revision renames
  • debugrevlog: fix a bug with empty repository (issue3537)

  • graphlog: don't truncate template value at last \n
  • httprepo: ensure Content-Type header exists when pushing data
  • largefiles: fix a traceback when addremove follows a remove (issue3507)

  • largefiles: fix a traceback when archiving a subrepo in a subrepo
  • largefiles: fix addremove when largefile is missing (issue3227)

  • largefiles: fix addremove with -R option
  • largefiles: fix exception hack for i18n (issue3197)

  • largefiles: fix path handling for cp/mv (issue3516)

  • largefiles: archive -S now store largefiles instead of standins
  • largefiles: fix hg addremove when already removed largefile exists (issue3364)

  • merge: do not warn about copy and rename in the same transaction (issue2113)

  • mq: add ".hgsubstate" to patch target list only if it is not listed up yet
  • mq: create patch file after commit to import diff of ".hgsubstate" at qrefresh
  • pager: work around bug in python 2.4's subprocess module (issue3533):

  • revlog: zlib.error are no longer sent to the user (issue3424)

  • tag: don't allow tagging the null revision (issue1915)

8. Mercurial 2.2.3 (2012-07-01)

This is a regularly-scheduled bugfix release.

  • amend: disable hooks when creating intermediate commit (issue3501)

  • archive: make progress only show files that are actually archived
  • bookmarks: correctly update current bookmarks on rebase (issue2277)

  • bugzilla: stop bugs always being marked as fixed in xmlrpc (issue3484)

  • graft: don't drop the second parent on unsuccessful merge (issue3498)

  • hgweb: fixes linebreak location in gitweb filediff.tmpl view
  • rebase: improve error message on improper phases
  • record: fix display of non-ASCII names
  • statichttprepo: don't send Range header when requesting entire file
  • strip: update help to state that you can strip public changeset
  • subrepo/svn: make rev number retrieval compatible with svn 1.5 (issue2968)

  • subrepo: support Git being named "git.cmd" on Windows (issue3173)

  • subrepo: warn user if Git is not version 1.6.0 or higher
  • update: fix help regarding update to ancestor

9. Mercurial 2.2.2 (2012-06-01)

This is a regularly-scheduled bugfix release.

  • addremove: document default similarity behavior (issue3429)

  • alias: inherit command optionalrepo flag (issue3298)

  • amend: preserve extra dict (issue3430)

  • bisect: save current state before running a command
  • bugzilla: fix transport initialization on python 2.4
  • build: fix hgrc manpage building with docutils 0.9
  • bundle: make bundles more portable (issue3441)

  • changelog: ensure that nodecache is valid (issue3428)

  • hg-ssh: exit with 255 instead of -1 on error
  • hgweb: fix filediff base calculation
  • largefiles: fix "hg status dir" missing regular files (issue3421)

  • largefiles: fix deletion of multiple missing largefiles (issue3329)

  • largefiles: follow normal codepath for addremove if non-largefiles repo (issue3249)

  • largefiles: in putlfile, ensure tempfile's directory exists prior to creation
  • largefiles: use wlock for lfconvert (issue3444)

  • localrepo: clear _filecache earlier to really force reloading (issue3462)

  • match: make 'match.files()' return list object always
  • mq: add --no-backup for qpush/qpop/qgoto
  • mq: backup local changes in qpop --force (issue3433)

  • mq: backup local changes in qpush --force
  • mq: qimport need wlock for --push - do that after releasing lock
  • osutil: handle deletion race with readdir/stat (issue3463)

  • pager: check if signal.SIGPIPE exists
  • pager: preserve Hg's exit code (and fix Windows support) (issue3225)

  • pager: remove quiet flag
  • paper, monoblue: link correctly to lines in annotate view
  • parsers: fix refcount bug on corrupt index
  • patch: fix segfault against unified diffs which start line is zero
  • patch: keep patching after missing copy source (issue3480)

  • posix: workaround lack of TIOCGWINSZ on Irix (issue3449)

  • revpair: handle odd ranges (issue3474)

  • revset: explicitely tag alias arguments for expansion
  • revset: fix infinite alias expansion detection
  • revset: fix traceback for bogus revisions in id(rev)
  • revset: make matching() preserve input revision order
  • scmutil: seen.union should be seen.update (issue3476)

  • subrepo: do not traceback on .hgsubstate parsing errors
  • subrepo: ignore blank lines in .hgsubstate (issue3424)

  • tag: run commit hook when lock is released (issue3344)

  • templater: handle SyntaxError when parsing ui.logtemplate

  • util: fix bad variable use in bytecount introduced by f0f7f3fab315
  • win32: fix encoding handling for registry strings (issue3467)

10. Mercurial 2.2.1 (2012-05-03)

This is an unscheduled bugfix release to fix a signficant memory leak in hgweb.

  • bookmarks: catch the proper exception for missing revisions
  • help: add reference to template help (issue3413)

  • help: added description for the web.collapse setting
  • largefiles: fix commit of both largefiles and non-largefiles (issue3354)

  • parsers: fix refcount leak, simplify init of index (issue3417)

11. Mercurial 2.2 (2012-05-01)

This is a regularly-scheduled feature release. The most notable feature is a new safe '--amend' option for commit using our new phases infrastructure. There are also a number of signficant performance improvements for large repositories and improvements for case-folding filesystems. See UpgradeNotes for minor compatibility notes.

11.1. Core features

  • commit: add --amend option
  • fileset: add "subrepo" fileset symbol
  • graft: add --dry-run support (issue3362)

  • hgweb: add support for branch width and color settings
  • hgweb: add block numbers to diff regions and related links
  • hgweb: support multi-level repository indexes by enabling descend and collapse
  • merge: improve performance with lots of unknown files
  • parsers: incrementally parse the revlog index in C
  • plan9: add support for plan9

  • push/pull: improve performance for partial transfers
  • push: decompress in larger chunks for better performance on the server
  • clone: add server config option to prefer uncompressed clone
  • revert: add support for reverting subrepos
  • revset: add "matching" keyword
  • store: speed up read and write of large fncache files
  • ui: optionally quiesce ssl verification warnings on python 2.5

11.2. Extension features

  • bugzilla: add xmlrpcemail submission for Bugzilla 3.6 email interface
  • bugzilla: allow change comment to mark bugs fixed
  • bugzilla: extract optional hours from commit message and update bug time
  • bugzilla: modify access interface to include new bug states
  • graphlog: add all log options to glog command
  • patchbomb: add --body flag to send patches as inline message body text
  • record: allow splitting of hunks by manually editing patches
  • transplant: permit merge changesets via --parent

11.3. Fixes

  • alias: fix shell alias documentation (issue3374)

  • archive: make it work with svn subrepos (issue3308)

  • branchmap: server should not advertise secret changeset in branchmap (issue3303)

  • clone: always close source repository (issue2491)

  • commit: abort on merge with missing files (BC)
  • config: discard UTF-8 BOM if found
  • convert/bzr: convert all branches (issue3229) (BC)

  • convert/bzr: expect unicode metadata, encode in UTF-8 (issue3232)

  • convert/bzr: handle empty bzr repositories (issue3233)

  • convert/bzr: ignore nested repos when listing branches (issue3254)

  • convert/svn: do not try converting empty head revisions (issue3347)

  • convert/svn: make svn sink work with svn 1.7
  • convert: support non-annotated tags in git backend
  • dirstate: preserve path components case on renames (issue3402)

  • export: catch exporting empty revsets (issue3353)

  • icasefs: make case-folding collision detection rename aware (issue3370)

  • inotify: catch SignalInterrupt during shutdown (issue3351)

  • journal: use tryread helper to backup files (issue3375)

  • largefiles: fix cat for largefiles (issue3352)

  • largefiles: fix status -S reporting of subrepos (issue3231)

  • largefiles: hide .hglf/ prefix for largefiles in hgweb
  • largefiles: notice dirty large files in a subrepo
  • largefiles: only update changed largefiles when transplanting
  • largefiles: optimize update speed by only updating changed largefiles
  • localrepo: add setparents() to adjust dirstate copies (issue3407)

  • mdiff: fix diff header generation for files with spaces (issue3357)

  • merge: check for untracked files more precisely (issue3400)

  • merge: fix unknown file merge detection for case-folding systems
  • patch: be more tolerant with "Parent" header (issue3356)

  • patch: be more tolerant with EOLs in binary diffs (issue2870)

  • patch: fix patch hunk/metdata synchronization (issue3384)

  • phase: when phase cannot be reduced, hint at --force and return 1 (BC)
  • posix: disable cygwin's symlink emulation (BC)
  • posix: ignore execution bit in cygwin (issue3301)

  • pure/osutil: use Python's msvcrt module (issue3380)

  • rebase: preserve mq series order, guarded patches (issue2849)

  • rebase: skip resolved but emptied revisions
  • revset: fix O(n**2) behaviour of bisect() (issue3381)

  • revset: fix adds/modifies/removes and patterns (issue3403)

  • revset: fix alias substitution recursion (issue3240)

  • subrepo/svn: abort on commit with missing file (issue3029)

  • subrepo/svn: fix checked out rev number retrieval (issue2968)

  • subrepo: fix default implementation of forget() (issue3404)

  • subrepo: rewrite handling of subrepo state at commit (issue2403)

  • templates/filters: extracting the user portion of an email address (BC)
  • transplant: do not rollback on patching error (issue3379)

  • update: fix case-collision with a clean wd and no --clean
  • update: make --check abort with dirty subrepos
  • update: use normal update path with --check (issue2450)

  • wireprotocol: use visibleheads as reference while unbundling (issue 3303)

12. Mercurial 2.1.2 (2012-04-01)

This is a regularly-scheduled bugfix release.

  • alias: abort on missing positional args (issue3331)

  • aliases: use empty string for missing position parameters (issue3331)

  • bookmarks: clone non-divergent bookmarks with @ in them
  • convert/git: abort if git submodules are detected (issue2150)

  • convert: deal with empty splicemap path (issue3311)

  • dirstate: avoid normalizing letter case on icasefs for exact match (issue3340)

  • dirstate: fix some problems for recursive case normalization (issue3342)

  • dirstate: normalize case of directory components
  • extdiff: escape filenames with vim/DirDiff and make quoting work with Windows
  • filemerge: remove temporary files when using internal:dump as merge-tool
  • filemerge: restore default prompt for binary/symlink lost in 83925d3a4559
  • icasefs: use case preserved root for 'util.fspath()' invocation (issue3302)

  • largefiles: suppress unexpected warning of 'hg status' for removed files
  • localrepo: fix unpushable repos when using bookmarks (issue3317)

  • merge: accept missing revisions in symlink flag merge (issue3316)

  • merge: handle linear update to symlink correctly (issue3316)

  • mq: fix qpush --move with comments in series file between applied patches
  • qfinish: comply with the phases.new-commit option in secret mode (issue3335)

  • rebase: move bookmarks as needed with pull --rebase (issue3285)

  • rebase: properly calculate descendant set when aborting (issue3332)

  • rename: handle case-changing (issue1717)

  • setup.py: don't call splitlines twice on the output of xcodebuild (issue3277)

  • strip: enhance repair.strip to receive a list of nodes (issue3299)

  • strip: ignore -n (issue3326) (BC)

  • wix: add phases help text and two more translations (issue3288)

13. Mercurial 2.1.1 (2012-03-01)

This is a regularly-scheduled bugfix release.

  • bdiff: fix malloc(0) issue in fixws()
  • bugzilla: stop XMLRPC requests from requesting gzipped responses
  • bundlerepo: bundle repos should be non-publishing (issue3266)

  • cmdserver: invalidate the dirstate when running commands (issue3271)

  • context: make workingctx.forget() really warn about untracked files
  • convert: ignore blank lines in mapfiles (issue3286)

  • convert: tolerate spaces between splicemap parent ids (issue3203)

  • convert: use splicemap entries when sorting revisions (issue1748)

  • dirstate: filecacheify _ignore (issue3278)

  • fetch: use update rather than clean when updating (issue3246)

  • forget: show warning messages for forgetting in subrepo correctly
  • graft: use proper revisions for copy detection (issue3265)

  • import: handle git renames and --similarity (issue3187)

  • largefiles: check whether specified patterns are related to largefiles strictly
  • largefiles: don't break filesets
  • largefiles: only cache largefiles in new heads
  • largefiles: use repo.store.createmode for new files in .hg/largefiles
  • localrepo: clear _filecache on rollback (issue3261)

  • localrepo: reset _phasesdirty flag after writing
  • localrepo: use 'changectx.dirs()' in 'status()' for directory patterns
  • log: fix --follow FILE ancestry calculation
  • log: remove caching of all visited revisions (issue3253)

  • log: restore cache used by --copies
  • mdiff: adjust hunk offsets with --ignore-blank-lines (issue3234)

  • mq: fix qapplied --last and qprev documentation (issue3282)

  • mq: fix qnext when all remaining patches are guarded
  • mq: make qimport --push push all imported patches (issue3130)

  • mq: make qprev return the previous applied patch (issue3245)

  • mq: restore _branchtags() fast path (issue3223)

  • patch: fix fuzzing of hunks without previous lines (issue3264)

  • patch: fuzz more aggressively to match patch(1) behaviour
  • pull: backout change to return code
  • scmutil: update cached copy when filecached attribute is assigned (issue3263)

  • setup: handle output from Apple's Xcode 4.3 better (issue3277)

  • subrepo: fix for merge inconsistencies
  • update: delete bookmarks.current when explicitly updating to a rev (issue3276)

  • update: don't move the active bookmark if a rev is specified with -r

14. Mercurial 2.1 (2012-02-01)

This is a regularly-scheduled feature release. See UpgradeNotes for some minor compatibility notes.

14.1. Major features

  • Changesets now have a phase attribute, which tracks what changesets are safe to modify (see Phases)

14.2. Core changes

  • annotate: support diff whitespace filtering flags (issue3030)

  • bookmarks: automatically advance bookmark on bare update (BC) (issue2894)

  • bookmarks: shadow divergent bookmarks of foo with foo@n
  • copies: improved copy detection for diff and status
  • hooks: new priority specifier to control ordering
  • id: add command line options for handling ssh and https urls
  • push: propagate --new-branch and --ssh options when pushing subrepos
  • revset: add remote() predicate to lookup remote revisions
  • subrepo: support explicit add and forget of files in subrepos

14.3. Extension changes

  • bugzilla: make XMLRPC interface support http and https access
  • largefiles: add --normal option to hg add (issue3061)

  • notify: add option for writing to mbox
  • rebase: add a "D" short option for detach
  • rebase: allow --detach when --rev is used
  • win32mbcs: allow win32mbcs extension to be enabled on cygwin platform
  • mq: add secret phase setting

14.4. Bug fixes

  • hgcia: fix diffstat support
  • largefiles: add error checking to tags conversion (issue3092)

  • largefiles: add tests for uncovered codepaths (issue3092)

  • largefiles: check if largefile could be found when archiving (issue3193)

  • largefiles: correctly download new largefiles when merging
  • largefiles: correctly handle dirstate status when rebasing
  • largefiles: correctly handle newly added largefile on other side of merge
  • largefiles: display remote errors from putlfile (issue3123) (issue3149)

  • largefiles: don't reference uninitialized variable (issue3092)

  • largefiles: fix caching largefiles from an aliased repo (issue3212)

  • largefiles: fix confusion upon removal of added largefile (issue3176)

  • largefiles: fix inappropriate locking (issue3182)

  • largefiles: fix output of hg summary (issue3060)

  • largefiles: cache new largefiles for new heads when pulling
  • largefiles: implement addremove (issue3064)

  • largefiles: optimize performance of status on largefiles repos (issue3136)

  • largefiles: optimize status when files are specified (issue3144)

  • largefiles: remove empty directories upon update (issue3202)

  • largefiles: fix addremove when no largefiles are specified
  • largefiles: fix revert on missing largefile (issue3217)

  • largefiles: fix transplant for all cases (issue3192)

  • mail: use quoted-printable for mime encoding to avoid too long lines (issue3075)

  • merge: give a special message for internal:merge failure (issue3105)

  • rebase: reinstate old-style rev spec support for the source and base (issue3181)

  • ssh: quote remote paths (issue2983)

  • sslutil: abort properly if no certificate received for https connection
  • sslutil: show fingerprint when cacerts validation fails
  • status: support revsets with --change
  • subrepo: avoid syncing bookmarks twice on clone (issue3191)

  • tag: invalidate tag cache immediately after adding new tag (issue3210)

  • util: don't encode ':' in url paths
  • bundlerepo: try to find containing repo on creation (issue1812)

  • convert: subversion convert abort on revision not found (issue3205)

  • discovery: fix regression when checking heads for pre 1.4 client (issue3218)

  • merge: defer symlink flag merging to filemerge (issue3200)

  • patch: a little bit more robust line counting on diff --stat (issue3183)

  • push: return 1 if no changes found (issue3228)

  • qpush: avoid trying to manage existing history (issue2218)

  • revsets: include the correct first ancestor change for follow(file)
  • revsets: filesets now work correctly inside of revsets

15. Mercurial 2.0.2 (2012-01-01)

This is a regularly-scheduled bug-fix release.

  • alias: shortcut command matching so shadowing works properly (issue3104)

  • branch: warn on branching
  • changelog: handle decoding of NULs in extra more carefully (issue3156)

  • convert: improve exception reporting for SVN logstream
  • diff: don't crash when diffing a revision with a deleted subrepo (issue3153)

  • fetch: fix unneeded commit when no merge attempted (issue2847)

  • fetch: patch cornercase in children calculation (issue2773)

  • largefiles: copy files in binary mode (issue3164)

  • largefiles: don't require a user cache (issue3088) (issue3155)

  • largefiles: fix 'hg status' abort after merge
  • largefiles: handle merges between normal files and largefiles (issue3084)

  • merge: check filename case collision between changesets for branch merging
  • pathauditor: switch normcase logic according to case sensitivity of filesystem
  • progress: check for ui.quiet and ui.debugflag before we write
  • rollback: always call destroyed() (regression from 1.9)
  • util: fix url.str() for windows file URLs

  • windows: use upper() instead of lower() or os.path.normcase()

16. Mercurial 2.0.1 (2011-12-01)

This is a regularly-scheduled bug-fix release.

  • alias: shortcut command matching show shadowing works properly (issue3104)

  • bundlerepo: don't write branch cache to disk
  • clone: don't save user's password in .hg/hgrc (issue3122)

  • convert/bzr: correctly handle divergent nested renames (issue3089)

  • convert/bzr: fix test of divergent nested renames for bzr 1.x
  • convert/svn: fix URL quoting issue with svn 1.7
  • convert: handle trailing slashes in filemap better (issue3124)

  • diff: '\ No newline at end of file' is also not part of the header
  • diff: --ignore-blank-lines was too enthusiastic
  • dirstate: fix case-folding identity for traditional Unix
  • graft: disallow grafting grafted csets in specific situations (issue3091)

  • graft: preserve original source in subsequent grafts
  • hook: flush stdout before redirecting to stderr
  • import: fix parent selection when importing merges
  • largefiles: ensure destination directory exists before findfile links to there
  • largefiles: file storage should be relative to repo, not relative to cwd
  • largefiles: fix 'hg clone . ../foo' OSError abort
  • largefiles: fix rename (issue3093)

  • largefiles: treat status of cache missed largefiles as "missing" correctly
  • largefiles: use "ui.configlist()" to get largefiles.patterns configuration
  • largefiles: write .hg/largefiles/ files atomically
  • makedate: wrong timezone offset if DST rules changed this year (issue2511)

  • mdiff/patch: fix bad hunk handling for unified diffs with zero context
  • posix: add extended support for OS X path folding
  • posix: fix findexe() to check for file type and access
  • rebase: ensure target is not taken as external (issue3085)

  • rebase: treat nullmerge as a special case in rebasestate (issue3046)

  • revset: balance %l or-expressions (issue3129)

  • revset: follow(nosuchfile) should give an empty set (issue3114)

  • subrepo: fix git status false positive (issue3109)

  • subrepo: use correct paths for subrepos with ..-relative paths on windows
  • update: don't clobber untracked files with wrong casing
  • url: handle file://localhost/c:/foo "correctly"

17. Mercurial 2.0 (2011-11-01)

This is a regularly-scheduled feature release. See UpgradeNotes for some minor compatibility notes.

17.1. Major features

  • New core graft command (similar to transplant extension)

  • New largefiles extension

17.2. Core changes

  • commit: abort when there are uncommitted subrepos, use the -S option to recurse
  • help: most commands now have usage examples with help -v
  • import: add --edit switch
  • revset: add more keywords for bisection
  • revert: introduce short option -C for --no-backup
  • log: add new 'bisect' style that prints the bisection status
  • hgweb: add a "web/logoimg" setting to customize the web logo image
  • subrepo: pull revisions on demand when archiving hg subrepos

17.3. Extension changes

  • color: add styles for tags
  • convert: added bookmarks support in filemap
  • eol: add new eol.fix-trailing-newline setting
  • eol: eol.only-consistent can now be specified in .hgeol
  • export: add %m to file format string (first line of the commit message)
  • mq: make qqueue print current queue name
  • rebase: add --edit switch
  • rebase: add --rev option to rebase
  • rebase: allow rebase on ancestor
  • share: introduce unshare command
  • transplant: add --edit option

17.4. Bug fixes

  • alias: don't shadow commands that we only partially matched (issue2993) (BC)

  • commit: suppress spurious new head message for duplicate commit (issue2893)

  • contrib: some support for named branches in zsh_completion (issue2988)

  • progress: add a changedelay to prevent parallel topics from flapping (issue2698)

  • rebase: allow rebase to ancestor (issue3010)

  • rollback: avoid unsafe rollback when not at tip (issue2998)

  • subrepo: fix git branch tracking logic (issue2920)

  • subrepo: fix repo relative path calculation for root directories (issue3033)

  • summary: show bookmarks separate from tags and note active mark (issue2892)

  • util: wrap lines with multi-byte characters correctly (issue2943)

  • verify: filter messages about missing null manifests (issue2900)

  • wireproto: do not call pushkey module directly (issue3041)

  • auth: fix realm handling with Python < 2.4.3 (issue2739)

  • diffstat: be more picky when marking file as 'binary' (issue2816)

  • dirstate: don't fail when dropping a not-tracked file (issue3080)

  • grep: correct handling of matching lines without line ending (issue3050)

  • hgweb: fix dynamic date calculation not working under Safari
  • mq: avoid data loss upon qfold + qmv (issue3058)

  • setup: set whole env for running hg even if .hg doesn't exist (issue3073)

  • windows: recompute flags when committing a merge (issue1802)

  • windows: sanity-check symlink placeholders

18. Mercurial 1.9.3 (2011-10-01)

This is a regular bugfix release.

  • setup: build inotify for sys.platform='linux*'
  • bundlerepo: add argument check before unlink
  • hgweb: properly check for bookmarks when drawing graph
  • http: handle push of bundles > 2 GB again (issue3017)

  • keyword: preserve file mode when overwriting
  • osutil: avoid accidentally destroying the True object in isgui (issue2937)

  • patch: correctly handle non-tabular Subject: line
  • patch: handle 'gitpatches' being empty, but not none
  • record: use command wrapper properly for qnew/qrefresh (issue3001)

  • setdiscovery: fix hang when #heads>200 (issue2971)

  • ui: also swap sys.stdout with self.fout in _readline
  • ui: write traceback to self.ferr
  • url: Remove the proxy env variables only when needed (issue2451)

  • url: parse fragments first (issue2997)

  • util: fix crash converting an invalid future date to string
  • util: wrap lines with multi-byte characters correctly (issue2943)

  • win32: quietly ignore missing CreateHardLinkA for Wine

19. Mercurial 1.9.2 (2011-08-26)

This is a regular bugfix release (slightly early due to travel plans).

  • commands: clarify that 'hg heads foo' shows heads on branch foo
  • dispatch: don't rewrap aliases that have the same definition
  • graphlog: attempt to fix index overrun (issue2912)

  • http: pass user to readauthforuri() (fix 4a43e23b8c55)
  • http: strip credentials from urllib2 manager URIs (issue2885)

  • parsers: avoid pointer aliasing
  • subrepo: fix cloning of repos from urls without slash after host (issue2970)

  • ui: pass ' ' to raw_input when prompting
  • url: really handle urls of the form file:///c:/foo/bar/ correctly

  • win32: msvcr71.dll should be used for python 2.4 and 2.5

20. Mercurial 1.9.1 (2011-08-01)

This is a regular bugfix release. It fixes several regressions introduced in 1.9. The hgweb server now disables MIME type guessing by default to avoid a potential cross-site scripting issue when hosting untrusted repositories (issue2923). See UpgradeNotes for more info.

  • dispatch: make sure global options on the command line take precedence
  • eol: ignore IOError from deleted files in commitctx
  • hgcia: set default value of strip to -1 (issue2891)

  • hgweb: do not ignore [auth] if url has a username (issue2822)

  • hgweb: handle 'baseurl' configurations with leading slash (issue2934)

  • hgweb: raw file mimetype guessing configurable, off by default (BC) (issue2923)

  • httpclient: import ca33b88d143c from py-nonblocking-http (issue2932)

  • patch: fix parsing patch files containing CRs not followed by LFs
  • rebase: block collapse with keepbranches on multiple named branches (issue2112)

  • rebase: reset bookmarks (issue2265 and issue2873)

  • revert: restore check for uncommitted merge (issue2915) (BC)

  • revsets: catch type error on tip^p1(tip) (issue2884)

  • revsets: do the right thing with x^:y (issue2884)

  • subrepo: handle adding svn subrepo with a svn:external file in it (issue2931)

  • subrepo: use working copy of .hgsub to filter status (issue2901)

  • url: store and assume the query part of an url is in escaped form (issue2921)

  • util: rename the util.localpath that uses url to urllocalpath (issue2875)

  • verify: filter messages about missing null manifests (issue2900)

  • web: output a correct date in short format (issue2902)

  • win32: assign winstdout to sys.stdout as well (issue2888)

21. Mercurial 1.9 (2011-07-01)

This is a regular feature release. See UpgradeNotes for some minor compatibility notes.

21.1. Major features

  • New fileset file matching support

  • Improved remote changeset discovery
  • New command server mode to improve application integration

  • Experimental generaldelta storage scheme
  • Experimental new http client library

21.2. Command changes

  • HGPLAIN: allow exceptions to plain mode, like i18n, via HGPLAINEXCEPT
  • manifest: add new option --all
  • aliases: add positional arguments to non-shell aliases
  • add: introduce a warning message for non-portable filenames (issue2756)

  • add: notify when adding a file that would cause a case-folding collision
  • bisect: new command to extend the bisect range (issue2690)

  • bookmarks: allow deactivating current bookmark with -i
  • bundle: update current bookmark to most recent revision on current branch
  • diff: make diff -c aware of revision sets
  • help: add -c/--command flag to only show command help (issue2799)

  • help: add -e/--extension switch to display extension help text
  • help: move hgignore man page into built-in help (issue2769)

  • http: correctly handle redirects from http to https
  • identify: list bookmarks for remote repositories
  • import: add --bypass option
  • paths: Add support for -q/--quiet
  • pushkey: add hooks for pushkey/listkeys
  • revset: add aliases
  • revset: add ^ and ~ operators from parentrevspec extension
  • revset: add a revset command to get bisect state
  • revset: add desc(string) to search in commit messages
  • revset: add follow(filename) to follow a filename's history across copies
  • revset: introduce filelog() to emulate log's fast path
  • revset: add a last() function

21.3. Web changes

  • add bookmarks listing to raw style and summary pages
  • support alternate logo url
  • add base link to file log for paper and coal styles (issue2452)

  • paper, coal: display diffstat on the changeset page
  • elapsed time calculation dynamic (javascript)
  • provide diffstat and summary on the changeset page

21.4. Extension changes

  • hgcia: handle URL like in notify (issue2406)

  • rebase: add -m/--message to rebase --collapse (issue2389)

  • Updating hgext.extdiff to use revsets
  • bash_completion: enable alias auto-complete
  • bugzilla: add XMLRPC interface
  • color: add support for terminfo-based attributes and color
  • convert/mtn: add support for using monotone's "automate stdio" when available
  • convert/svn: stop using svn bindings when pushing to svn
  • convert: add bookmark support for hg and git backends
  • convert: add svnrev, svnpath and svnuuid template keywords
  • extdiff: add repository root as a variable
  • graphlog: support more log command features with revsets
  • keyword: convert a verbatim block to a field list
  • keyword: offer additional datefilters when the extension is enabled
  • mq: add a 'mq()' revset predicate that returns applied mq csets
  • notify: send changesets on 'outgoing' hook, updated doc
  • progress: add speed format
  • rebase: add --tool argument for specifying merge tool
  • rebase: allow for rebasing descendants onto ancestors on different named branches
  • record: add an option to backup all wc modifications
  • record: add qrefresh -i/--interactive
  • record: add white space diff options
  • record: alias qrecord to qnew -i/--interactive

21.5. Bug fixes

  • bookmarks: allow create/move bookmark without

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