Differences between revisions 3 and 227 (spanning 224 versions)
Revision 3 as of 2005-09-16 18:42:26
Size: 680
Editor: mpm
Comment:
Revision 227 as of 2014-04-24 20:21:12
Size: 55338
Editor: Sean Farley
Comment: add color template change for 3.0
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
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 3.0-rc (2014-04-17) ==

Preliminary release notes for Mercurial 3.0.

=== Core features ===

 * cat: support cat with explicit paths in subrepos
 * cmdserver: allow to start server without repository
 * clone: abort if default destination has no meaningful name (BC)
 * clone: put streaming clones in a transaction
 * color: add debugcolor command (Bts:issue4094)
 * color: allow color keywords to be used directly in template
 * commands: add -T alternative to --template
 * commands: hg debuginstall checks missing templates (Bts:issue4151)
 * commit: --edit/-e to force edit of otherwise-supplied commit message
 * commit-amend: invoke editor forcibly when "--edit" option is specified
 * config: add initial implementation of --edit (with --global and --local flags)
 * debuginstall: add Python information to debuginstall output (Bts:issue4128)
 * demandimport: make it possible to disable by setting HGDEMANDIMPORT=disable
 * hgweb: adding metadata to atom and rss feed entries
 * http: reuse authentication info after the first failed request (Bts:issue3567)
 * log: changed implementation to use graphlog code
 * push: provide a hint when no paths are configured (Bts:issue3692)
 * require: provide a link to a wiki page in addition of suggesting upgrade
 * revset: new implementation with incremental evaluation
 * revset: try to handle hyphenated symbols if lookup callback is available
 * revset: add 'only' revset
 * sshpeer: only print out 'running ssh' messages in debug mode (BC)
 * template: add ifcontains template function
 * template: add pad function for padding output
 * template: add revset() template function
 * template: add shortest(node) template function
 * template: add flexible -T option
 * win32: improve the performance of win32.unlink() over CIFS

=== Extension features ===

 * blackbox: log events related to branch cache
 * convert: avoid updating tags when there is nothing new
 * convert: compare tags from all heads instead of just one
 * convert: replace old sha1s in the description
 * extensions: mark win32text deprecated
 * extensions: remove interhg
 * extensions: remove the inotify extension (BC)
 * histedit: select the lowest rev when looking for a root in a revset (BC)
 * journal: report parsing errors on recover/rollback (Bts:issue4172)
 * qimport: allow importing URLs

=== Fixes ===

 * backout: don't limit heritage check to a single ancestor
 * backout: improve confusing 'cannot backout change on a different branch' abort
 * caches: invalidate store caches when lock is taken
 * cmdserver: reload mq on each runcommand request to avoid corruption
 * diff: use second filename for --stat reporting on git patches (Bts:issue4221)
 * dirstate: report bad subdirectories as match.bad, not just a warning (BC)
 * extensions: use normpath to allow trailing '\' on Windows (Bts:issue4187)
 * fncache: clean up fncache during strips
 * largefiles: changed overridelog to work with graphlog
 * largefiles: don't prompt when one side of merge was changed but didn't change
 * parsers: fail fast if Python has wrong minor version (Bts:issue4110)
 * phases: apply publishing enforcement for "serve" source
 * revlog: deal with chunk ranges over 2G on Windows (Bts:issue4215)
 * setup.py: fix C extension compilation issue with OS X 10.9 and Xcode 5.1
 * subrepo: check return code for git push (Bts:issue4223)

=== Experimetal feature ===

 * bundle2: experimental support for bundle2
 * merge: experimental implementation of bid merge
 * merge: tell when .ancestor picks one of multiple common ancestors heads

== Mercurial 2.9.2 (2014-04-01) ==

This is a regularly-scheduled bugfix release.

 * amend: save commit message into ".hg/last-message.txt"
 * backout: correct commit status of no changes made (BC) (Bts:issue4190)
 * backout: document return code of merge conflict
 * commit: create new amend changeset as secret correctly for "--secret" option
 * commit: propagate --secret option to subrepos (Bts:issue4182)
 * convert: more clear documentation of the 'include' default of a 'include .'
 * dispatch: only do __import__(debugger) when a debugger is requested
 * log: solves bug regarding hg log -r 0:null (Bts:issue4039)
 * hg: introduce "wirepeersetupfuncs" to setup wire peer by extensions (Bts:issue4109)
 * hg: use "os.path.join()" to join path components which may be empty (Bts:issue4203)
 * histedit: save manually edited commit message into ".hg/last-message.txt"
 * localrepo: save manually edited commit message as soon as possible
 * merge: fix lack of "%s" in format string causing !TypeError at runtime
 * paper: overlapping of section title on help pages (Bts:issue4051)
 * phase: say "Returns 0" instead of "Return 0" like other command help
 * qfold: save manually edited commit message into ".hg/last-message.txt"
 * qnew: save manually edited commit message into ".hg/last-message.txt"
 * rebase: use "commitforceeditor" instead of "ui.edit()" for "--collapse"
 * revset: document the regular expression support for tag(name)
 * subrepo: add trailing newlines to warnings
 * subrepo: convert matched string to integer before comparing Git version
 * subrepo: only retrieve the first two components of the Git version
 * tag: save manually edited commit message into ".hg/last-message.txt"
 * templater: apply "stringify()" on sub expression to get string correctly
 * templater: avoid recursive evaluation of string literals completely
 * templater: make strings in template expressions be "string-escape"-ed correctly
 * templater: raise error for unknown function

== Mercurial 2.9.1 (2014-03-01) ==

This is a regularly-scheduled bugfix release.

 * coal: hgweb style adds extra blank line in file view (Bts:issue4136)
 * hg.openpath: use url.islocal to tell if the path is local (Bts:issue3624)
 * hgweb: hack around mimetypes encoding thinko (Bts:issue4160)
 * hooks: only disable/re-enable demandimport when it's already enabled
 * merge: add "other" file node in the merge state file
 * merge: audit the right destination file when merging with dir rename
 * merge: don't overwrite file untracked after remove, abort with 'untracked files'
 * merge: record the "other" node in merge state
 * pathencode: eliminate signed integer warnings
 * pull: close peer repo on completion (Bts:issue2491) (Bts:issue2797)
 * purge: avoid duplicate output for --print (Bts:issue4092)
 * rebase: do not try to reactivate deleted divergent bookmark
 * resolve: use "other" changeset from merge state (Bts:issue4163)
 * verify: do not prevent verify repository containing hidden changesets



== Mercurial 2.9 (2014-02-01) ==

This is a regularly-scheduled feature release.

=== Core features ===

 * backout: add a message after backout that need manual commit
 * bash_completion: add global support for -B|--bookmark
 * bash_completion: add global support for -b|--branch
 * bookmarks: allow push -B to create a new remote head (Bts:issue2372)
 * date: allow %z in format (Bts:issue4040)
 * hgweb: infinite scroll support for coal, gitweb, and monoblue styles
 * patch: add support for git delta hunks
 * url: added authuri when login information is requested (Bts:issue3209)

=== Performance improvement ===

 * backout: avoid update on simple case
 * branchmap: cache open/closed branch head information
 * cat: increase perf when catting single files
 * changectx: increase perf of walk function
 * strip: add faster revlog strip computation

=== Extension features ===

 * bash_completion: add completion for deleting a shelve
 * convert: use branchmap to change default branch in destination (Bts:issue3469)
 * record: --user/-u now works with record when ui.username not set (Bts:issue3857)
 * subrepo: check phase of state in each subrepositories before committing

=== Fixes ===

 * aliases: make "_checkshellalias()" invoke "findcmd()" with "strict=True"
 * bisect: --command without --noupdate should flag the parent rev it tested
 * clone: do not turn hidden changeset public on publishing clone (Bts:issue3935)
 * diff: search beyond ancestor when detecting renames
 * push: properly move phase boundary when no changeset are exchanged (Bts:issue3786)
 * rebase: abort cleanly when we encounter a damaged rebasestate (Bts:issue4155)
 * rebase: do not crash in panic when cwd disapear in the process (Bts:issue4121)
 * record: re-enable whitespace-ignoring options
 * relink: abort earlier when on different devices (Bts:issue3916)
 * subrepo: make it possible to update to hidden subrepo revisions
 * templater: selecting a style with no templates does not crash (Bts:issue4140)
 * update: consider successor changesets for a bare update
 * update: consider successor changesets when moving active bookmark


== Mercurial 2.8.2 (2014-01-01) ==

This is a regularly-scheduled bugfix release.

 * fileset, revset: do not use global parser object for thread safety
 * hgweb: avoid initialization race (Bts:issue3953)
 * mpatch: rewrite pointer overflow checks

== Mercurial 2.8.1 (2013-12-01) ==

This is a regularly-scheduled bugfix release.

 * bookmarks: consider successor changesets when moving bookmark (Bts:issue4015)
 * contrib: don't mention obsolete graphlog extension in mercurial.ini
 * contrib: promote strip extension over MQ in sample.hgrc
 * contrib: stop mentioning obsolete graphlog extension in sample.hgrc
 * convert: fix svn crash when svn.ra.get_log calls back with orig_paths=None
 * help: fix backwards bisect help example
 * help: use progress instead of mq as in 'hg help config' example
 * hgk: fix tag list parser (Bts:issue4101)
 * hgweb: ignore non numeric "revcount" parameter values (Bts:issue4091)
 * histedit: hold wlock and lock while in progress
 * largefiles: cache largefiles for update, also without printmessage
 * largefiles: don't crash on 'local renamed directory' actions
 * merge: move forgets to the beginning of the action list
 * minirst: do not interpret a directive as a literal block
 * minirst: find admonitions before pruning comments and adding margins
 * obsolete: stop doing membership test on list
 * parse_index2: fix crash on bad argument type (Bts:issue4110)
 * phase: better error message when --force is needed
 * rebase: fix rebase aborts when 'tip-1' is public (Bts:issue4082)
 * rebase: fix working copy location after a --collapse (Bts:issue4080)
 * share: fix unshare calling wrong repo.__init__() method
 * shelve: fix bad argument interaction with largefiles (Bts:issue4111)
 * shelve: unshelve using an unfiltered repository
 * strip: fix last unprotected mq reference (Bts:issue4097)
 * strip: hold wlock for entire duration
 * subrepo: sanitize non-hg subrepos
 * templater: fix escaping in nested string literals (Bts:issue4102)
 * templater: makes branches work correctly with stringify (Bts:issue4108)
 * templater: only recursively evaluate string literals as templates (Bts:issue4103)
 * unshelve: add tests for unknown files
 * unshelve: don't commit unknown files during unshelve (Bts:issue4113)
 * util: url keeps backslash in paths
 * util: warn when adding paths ending with \

== Mercurial 2.8 (2013-11-01) ==

This is a regularly scheduled feature release.

=== Core features ===

 * hgweb: add revset syntax support to search
 * hgweb: always run search when a query is entered (BC)
 * hgweb (paper theme): add infinite scrolling to graph
 * hgweb: show full date in rfc822 format in tooltips at shortlog page
 * proxy: allow wildcards in the no proxy list (Bts:issue1821)
 * pull: for pull --update with failed update, print hint if any
 * rebase: preserve working directory parent (BC)
 * sslutil: add a config knob to support TLS (default) or SSLv23 (BC) (Bts:issue4038)
 * templatefilters: add short format for age formatting
 * templater: support using templates with non-standard names from map file
 * update: add error message for dirty non-linear update with no rev
 * addremove: don't do full walks
 * log: make file log slow path usable on huge repos
 * subrepo: let the user choose to merge, keep local or keep remote subrepo revisions

=== Extension features ===

 * convert-internals: introduce hg.revs to replace hg.startrev and --rev with a revset
 * convert-internals: update source shamap when using filemap, just as when not using filemap
 * factotum: clean up keychain for multiple hg repository authentication
 * histedit: abort if there are multiple roots in "--outgoing" revisions
 * mq: extract strip function as its standalone extension (Bts:issue3824)
 * mq: look for modified subrepos when checking for local changes
 * rebase: remove bailifchanged check from pullrebase (BC)
 * shelve: add a shelve extension to save/restore working changes

=== Fixes ===

 * pager: honour internal aliases
 * patch: ensure valid git diffs if source/destination file is missing (Bts:issue4046)
 * patch: Fix nullid for binary git diffs (Bts:issue4054)
 * progress: stop getting stuck in a nested topic during a long inner step
 * rebase: handle bookmarks matching revset function names (Bts:issue3950)
 * rebase: preserve active bookmark when not at head (Bts:issue3813)
 * rebase: preserve metadata from grafts of changes (Bts:issue4001)
 * rebase: fix selection of base used when rebasing merge (Bts:issue4041)
 * ui: send password prompts to stderr again (Bts:issue4056)
 
== Mercurial 2.7.2 (2013-10-01) ==

Regularly scheduled bugfix release. This fixes significant regressions from 2.7 in push/pull performance and SSL negotiation.

 * bundle: fix performance regression when bundling file changes (Bts:issue4031)
 * generaldelta: initialize basecache properly
 * help: use full name of extensions to look up them for keyword search
 * histedit: abort if there are multiple roots in "--outgoing" revisions
 * histedit: add more detailed help about "--outgoing"
 * histedit: suggest "histedit --abort" for inconsistent histedit state
 * httpclient: apply upstream revision da7579b034a4 to fix SSL problems (Bts:issue4038)
 * rebase: catch RepoLookupError at restoring rebase state for abort/continue
 * rebase: catch RepoLookupError at restoring rebase state for summary
 * repoview: have unfilteredpropertycache using the underlying cache
 * repoview: make propertycache.setcache compatible with repoview
 * revset: fix wrong keyword() behaviour for strings with spaces
 * sslutil: backed out changeset 074bd02352c0 (Bts:issue4038)
 * strip: set current bookmark to None if stripped


== Mercurial 2.7.1 (2013-09-03) ==

Regularly scheduled bugfix release.

 * rebase: handle bookmarks matching revset function names (Bts:issue3950)
 * tags: write tag overwriting history also into tag cache file (Bts:issue3911)


== Mercurial 2.7 (2013-08-01) ==

Regularly scheduled feature release. This release contains an important fix for a merge ancestor calculation regression in the 2.6 series.

=== Core features ===

 * bookmarks: allow bookmark command to take multiple arguments
 * commands: add checks for unfinished operations (Bts:issue3955)
 * commit: enable --secret option
 * hgweb: run search instead of showing wrong error for ambigious identifier
 * import: cut commit messages at --- unconditionally (Bts:issue2148)
 * log: add a log style that is default+phase (Bts:issue3436)
 * paper: add line wrapping switch to file source view
 * paper: code selection without line numbers in file source view
 * paper: highlight line which is linked to in source view
 * revert: make backup when unforgetting a file (Bts:issue3423)
 * rollback: mark as deprecated
 * sslutil: force SSLv3 on Python 2.6 and later (Bts:issue3905)
 * summary: augment output with info from extensions
 * templater: add strip function with chars as an extra argument
 * log: show style list when unknown style specified
 * tip: deprecate the tip command
 * update: add tracking of interrupted updates (Bts:issue3113)

=== Extension features ===

 * churn: split email aliases from the right
 * histedit: refuse to edit history that contains merges (Bts:issue3962)
 * convert: improve error handling when parsing splicemap (Bts:issue2084)
 * convert: support paths with spaces in splicemap (Bts:issue3844)

=== Fixes ===

 * ancestor: Fix a reference counting bug in the C version (Bts:issue3984)
 * bookmarks: update only proper bookmarks on push -r/-B (issue 3973)
 * bookmarks: pull --update updates to active bookmark if it moved (Bts:issue4007)
 * changegroup: fix fastpath during commit
 * checklink: work around sshfs brain-damage (Bts:issue3636)
 * convert: catch empty origpaths in svn gettags (Bts:issue3941)
 * convert: fix bad conversion of copies when hg.startrev is specified
 * convert: handle changeset sorting errors without traceback (Bts:issue3961)
 * hgweb: fix incorrect way to count revisions in log (Bts:issue3977)
 * histedit: don't clobber working copy on --abort if not on histedit cset
 * largefiles: overridematch() should replace the file path instead of extending (Bts:issue3934)
 * progress: respect HGPLAIN
 * rebase: allow aborting when descendants detected
 * rebase: continue abort without strip for immutable csets (Bts:issue3997)
 * rebase: don't clobber wd on --abort when we've updated away (Bts:issue4009)
 * revlog: handle hidden revs in _partialmatch (Bts:issue3979)

== Mercurial 2.6.3 (2013-07-01) ==

This is a regularly-scheduled bugfix release.

 * commit: amending with --close-branch (Bts:issue3445)
 * doc: make it easier to read how to enable extensions
 * doc: reword "config file" to "configuration file"
 * docs: change description to synopsis in hgrc.5
 * histedit: raise ImportError when demandloading is enabled
 * pathencode: fix hashmangle short dir limit (Bts:issue3958)
 * update: remove .hg/graftstate on clean (Bts:issue3970)

== Mercurial 2.6.2 (2013-06-01) ==

This is a regularly-scheduled bugfix release.

 * amend: complain more comprehensibly about subrepos
 * blackbox: fix blackbox causing exceptions in tests
 * blackbox: fix recording exit codes (Bts:issue3938)
 * dirstate: don't overnormalize for ui.slash
 * graft: refuse to commit an interrupted graft (Bts:issue3667)
 * help: fix role/option confusion in RST
 * help: stop documentation markup appearing in generated help

== Mercurial 2.6.1 (2013-05-14) ==

This is an unscheduled bugfix release to address some minor regressions in the 2.6 release.

 * convert: fix bug of wrong CVS path parsing without port number (Bts:issue3678)
 * help/config: note 64-bit Windows registry key used with 32-bit Python
 * hfs+: rewrite percent-escaper (Bts:issue3918)
 * hgignore: fix regression with hgignore directory matches (Bts:issue3921)
 * highlight: fix page layout with empty first and last lines
 * largefiles: check existence of the file with case awareness of the filesystem
 * largefiles: check unknown files with case awareness of the filesystem
 * pathencode: grow buffers to increase safety margin
 * revert: ensure that copies and renames are honored (Bts:issue3920)
 * subrepo: open files in 'rb' mode to read exact data in (Bts:issue3926)
 * windows: check target type before actual unlinking to follow POSIX semantics

== Mercurial 2.6 (2013-05-01) ==


/!\ This release has known issues with some ignore rules (Bts:issue3921) and subrepos on Windows (Bts:issue3926)

This is a regularly scheduled feature release.

=== Core features ===

 * amend: support amending merge changesets (Bts:issue3778)
 * archive: raise error.Abort if the file pattern matches no files
 * bash_completion: allow remove to complete normal files
 * bookmarks: allow (re-)activating a bookmark on the current changeset
 * bookmarks: don't allow integers as bookmark/branch/tag names
 * bookmarks: moving the active bookmark deactivates it
 * bookmarks: resolve divergent bookmarks when moving active bookmark forward
 * bookmarks: resolve divergent bookmark when moving across a branch
 * commit: show active bookmark in commit editor helper text
 * config: discard "%unset" values defined in the other files read in previously
 * dates: support 'today' and 'yesterday' in parsedate (Bts:issue3764)
 * date: understand "now" as a shortcut for the current time
 * dispatch: print 'abort:' when a pre-command hook fails (BC)
 * dispatch: return status is 1 and a nice error message is printed when a user intervention is required (BC)
 * export: clobber files with -o (BC) (Bts:issue3652)
 * export: export working directory parent by default
 * export: show 'Date' header in a format that also is readable for humans
 * filesets: add eol predicate
 * hgweb: generate documentation as HTML (previously as text)
 * hgweb: teach archive how to download a specific directory or file
 * merge: apply non-interactive working dir updates in parallel
 * mergetools: avoid losing the merged version with meld
 * mergetools: vimdiff issues a warning explaining how to abort
 * sslutil: abort if peer certificate is not verified for secure use
 * summary: make "incoming" information sensitive to branch in URL (Bts:issue3830)
 * summary: make "outgoing" information sensitive to branch in URL (Bts:issue3829)
 * summary: show active bookmark even if not at current changeset
 * templatekw: add default styles for hybrid types (Bts:issue3887)
 * templater: add get() function to access dict element (e.g. extra)

 * addremove: improve performance
 * ancestor: a new algorithm that is faster for nodes near tip
 * dirstate: performance improvements
 * grep: use re2 if possible
 * parsers: a C implementation of the new ancestors algorithm
 * scmutil: rewrite dirs in C, use if available
 * tags: update tag type only if tag node is updated (Bts:issue3911)

=== Extension features ===

 * blackbox: new extension
 * hgk: add support for phases
 * hgk: don't use fixed format for dates
 * hgk: update backgroud colour when Ttk is available
 * histedit: allow "-" as a command file
 * histedit: handle multiple spaces between action and hash (Bts:issue3893)
 * histedit: make "hg histedit" sensitive to branch in URL
 * histedit: properly handle --continue on empty fold
 * histedit: support editing of the first commit (Bts:issue3767)
 * interhg: feature integrated in core. Extension removed.
 * largefiles: don't cache largefiles for pulled heads by default
 * largefiles: improve reuse of HTTP connections
 * largefiles: introduce lfpull command for pulling missing largefiles
 * largefiles: introduce pulled() revset expression for use in --lfrev
 * largefiles: introduce pull --lfrev option
 * largefiles: quiet (and document) undefined name errors (Bts:issue3886)
 * largefiles: stat all largefiles in one batch before downloading
 * largefiles: use repo.wwrite for writing standins (Bts:issue3909)
 * mq: comply with filtering when injecting fake tags (Bts:issue3812)
 * mq: do not inherit settings form base repo in mqrepo (Fixes Bts:issue2358)
 * rebase: check no-op before checking phase (Bts:issue3891)
 * rebase: fix --collapse when a file was added then removed
 * smtp: use 465 as default port for SMTPS
 * smtp: verify the certificate of the SMTP server for STARTTLS/SMTPS
 * subrepo: clone of git sub-repository creates incorrect git branch (Bts:issue3870)
 * subrepo: do not push mercurial subrepos whose store is clean
 * subrepo: fix exception on revert when "all" option is omitted

=== Fixes ===

 * annotate: increase refcount of each revision correctly (Bts:issue3841)
 * applyupdates: assign variable before we try to use it (Bts:issue3855)
 * bookmarks: allow moving a bookmark forward to a descendant
 * bookmarks: fix bug that activated a bookmark even with -r passed
 * case collision: Avoid unexpectd case folding issue during merge that should succeed (Bts: issue3452)
 * commit: allow closing "non-head" changesets
 * convert/git: catch errors from modern git-ls-remote (Bts:issue3428)
 * destroyed: invalidate phraserevs cache in all case (Bts:issue3858)
 * diff: fix binary file removals in git mode
 * http: avoid large text dumps when remote url is not a repo
 * import: don't rollback and unrelated transaction on failed import --exact (Bts:issue3616)
 * log: fix behavior with empty repositories (Bts:issue3497)
 * outgoing: fix possible filtering crash in outgoing (Bts:issue3814)
 * pager: catch ctrl-c on exit (Bts:issue3834)
 * record: abort on malformed patches instead of crashing
 * revset: change ancestor to accept 0 or more arguments (Bts:issue3750)
 * revset: don't abort when regex to tag() matches nothing (Bts:issue3850)
 * scheme: don't crash on invalid URLs
 * setup: make error message for missing Python headers more helpful
 * sshpeer: store subprocess so it cleans up correctly
 * win32: use explicit path to "python.exe" only if it exists


== Mercurial 2.5.4 (2013-04-04) ==

This fixes an urgent regression in merging with subrepos introduced in 2.5.

 * applyupdates: assign variable before we try to use it (Bts:issue3855)
 * setup.py: properly discard trust warning

== Mercurial 2.5.3 (2013-04-01) ==

 * hgweb: show correct error message for i18n environment
 * localrepo: always write the filtered phasecache when nodes are destroyed (Bts:issue3827)
 * rebase: restore active bookmark after rebase --continue
 * setup.py: add metadata to register package to PyPI
 * setup.py: ignore warnings from obsolete
 * zsh_completion: fix trailing carriage return spoiling tag completion

== Mercurial 2.5.2 (2013-03-01) ==

 * bundle: treat branches created newly on the local correctly (Bts:issue3828)
 * largefiles: avoid rechecking hashes when avoidable
 * largefiles: don't let update leave wrong largefiles in wd if fetch fails
 * largefiles: fix off-by-one error on pull --all-largefiles
 * largefiles: fix download of largefiles from an empty list of changesets
 * largefiles: missing largefiles should not be committed as removed
 * mergetools: vimdiff issue a warning explaining how to abort
 * outgoing: fix possible filtering crash in outgoing (Bts:issue3814)
 * rebase: fix potential infinite loop in complex rename situation (Bts:issue3843)

== Mercurial 2.5.1 (2013-02-08) ==

This is a non-scheduled bugfix release.

 * hgk: support the old way of getting the current Ttk theme (Bts:issue3808)
 * hgweb.cgi: fix internal WSGI emulation (Bts:issue3804)
 * hgweb: make 'summary' work with hidden changesets (Bts:issue3810)
 * incoming: fix incoming when a local head is remotely filtered (Bts:issue3805)
 * largefiles: don't crash when trying to find default dest for url without path
 * rebase: derive node from target rev (Bts:issue3802)

== 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-01) ==

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)

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 3.0-rc (2014-04-17)

Preliminary release notes for Mercurial 3.0.

1.1. Core features

  • cat: support cat with explicit paths in subrepos
  • cmdserver: allow to start server without repository
  • clone: abort if default destination has no meaningful name (BC)
  • clone: put streaming clones in a transaction
  • color: add debugcolor command (issue4094)

  • color: allow color keywords to be used directly in template
  • commands: add -T alternative to --template
  • commands: hg debuginstall checks missing templates (issue4151)

  • commit: --edit/-e to force edit of otherwise-supplied commit message
  • commit-amend: invoke editor forcibly when "--edit" option is specified
  • config: add initial implementation of --edit (with --global and --local flags)
  • debuginstall: add Python information to debuginstall output (issue4128)

  • demandimport: make it possible to disable by setting HGDEMANDIMPORT=disable
  • hgweb: adding metadata to atom and rss feed entries
  • http: reuse authentication info after the first failed request (issue3567)

  • log: changed implementation to use graphlog code
  • push: provide a hint when no paths are configured (issue3692)

  • require: provide a link to a wiki page in addition of suggesting upgrade
  • revset: new implementation with incremental evaluation
  • revset: try to handle hyphenated symbols if lookup callback is available
  • revset: add 'only' revset
  • sshpeer: only print out 'running ssh' messages in debug mode (BC)
  • template: add ifcontains template function
  • template: add pad function for padding output
  • template: add revset() template function
  • template: add shortest(node) template function
  • template: add flexible -T option
  • win32: improve the performance of win32.unlink() over CIFS

1.2. Extension features

  • blackbox: log events related to branch cache
  • convert: avoid updating tags when there is nothing new
  • convert: compare tags from all heads instead of just one
  • convert: replace old sha1s in the description
  • extensions: mark win32text deprecated
  • extensions: remove interhg
  • extensions: remove the inotify extension (BC)
  • histedit: select the lowest rev when looking for a root in a revset (BC)
  • journal: report parsing errors on recover/rollback (issue4172)

  • qimport: allow importing URLs

1.3. Fixes

  • backout: don't limit heritage check to a single ancestor
  • backout: improve confusing 'cannot backout change on a different branch' abort
  • caches: invalidate store caches when lock is taken
  • cmdserver: reload mq on each runcommand request to avoid corruption
  • diff: use second filename for --stat reporting on git patches (issue4221)

  • dirstate: report bad subdirectories as match.bad, not just a warning (BC)
  • extensions: use normpath to allow trailing '\' on Windows (issue4187)

  • fncache: clean up fncache during strips
  • largefiles: changed overridelog to work with graphlog
  • largefiles: don't prompt when one side of merge was changed but didn't change
  • parsers: fail fast if Python has wrong minor version (issue4110)

  • phases: apply publishing enforcement for "serve" source
  • revlog: deal with chunk ranges over 2G on Windows (issue4215)

  • setup.py: fix C extension compilation issue with OS X 10.9 and Xcode 5.1
  • subrepo: check return code for git push (issue4223)

1.4. Experimetal feature

  • bundle2: experimental support for bundle2
  • merge: experimental implementation of bid merge
  • merge: tell when .ancestor picks one of multiple common ancestors heads

2. Mercurial 2.9.2 (2014-04-01)

This is a regularly-scheduled bugfix release.

  • amend: save commit message into ".hg/last-message.txt"
  • backout: correct commit status of no changes made (BC) (issue4190)

  • backout: document return code of merge conflict
  • commit: create new amend changeset as secret correctly for "--secret" option
  • commit: propagate --secret option to subrepos (issue4182)

  • convert: more clear documentation of the 'include' default of a 'include .'
  • dispatch: only do import(debugger) when a debugger is requested

  • log: solves bug regarding hg log -r 0:null (issue4039)

  • hg: introduce "wirepeersetupfuncs" to setup wire peer by extensions (issue4109)

  • hg: use "os.path.join()" to join path components which may be empty (issue4203)

  • histedit: save manually edited commit message into ".hg/last-message.txt"
  • localrepo: save manually edited commit message as soon as possible
  • merge: fix lack of "%s" in format string causing TypeError at runtime

  • paper: overlapping of section title on help pages (issue4051)

  • phase: say "Returns 0" instead of "Return 0" like other command help
  • qfold: save manually edited commit message into ".hg/last-message.txt"
  • qnew: save manually edited commit message into ".hg/last-message.txt"
  • rebase: use "commitforceeditor" instead of "ui.edit()" for "--collapse"
  • revset: document the regular expression support for tag(name)
  • subrepo: add trailing newlines to warnings
  • subrepo: convert matched string to integer before comparing Git version
  • subrepo: only retrieve the first two components of the Git version
  • tag: save manually edited commit message into ".hg/last-message.txt"
  • templater: apply "stringify()" on sub expression to get string correctly
  • templater: avoid recursive evaluation of string literals completely
  • templater: make strings in template expressions be "string-escape"-ed correctly
  • templater: raise error for unknown function

3. Mercurial 2.9.1 (2014-03-01)

This is a regularly-scheduled bugfix release.

  • coal: hgweb style adds extra blank line in file view (issue4136)

  • hg.openpath: use url.islocal to tell if the path is local (issue3624)

  • hgweb: hack around mimetypes encoding thinko (issue4160)

  • hooks: only disable/re-enable demandimport when it's already enabled
  • merge: add "other" file node in the merge state file
  • merge: audit the right destination file when merging with dir rename
  • merge: don't overwrite file untracked after remove, abort with 'untracked files'
  • merge: record the "other" node in merge state
  • pathencode: eliminate signed integer warnings
  • pull: close peer repo on completion (issue2491) (issue2797)

  • purge: avoid duplicate output for --print (issue4092)

  • rebase: do not try to reactivate deleted divergent bookmark
  • resolve: use "other" changeset from merge state (issue4163)

  • verify: do not prevent verify repository containing hidden changesets

4. Mercurial 2.9 (2014-02-01)

This is a regularly-scheduled feature release.

4.1. Core features

  • backout: add a message after backout that need manual commit
  • bash_completion: add global support for -B|--bookmark
  • bash_completion: add global support for -b|--branch
  • bookmarks: allow push -B to create a new remote head (issue2372)

  • date: allow %z in format (issue4040)

  • hgweb: infinite scroll support for coal, gitweb, and monoblue styles
  • patch: add support for git delta hunks
  • url: added authuri when login information is requested (issue3209)

4.2. Performance improvement

  • backout: avoid update on simple case
  • branchmap: cache open/closed branch head information
  • cat: increase perf when catting single files
  • changectx: increase perf of walk function
  • strip: add faster revlog strip computation

4.3. Extension features

  • bash_completion: add completion for deleting a shelve
  • convert: use branchmap to change default branch in destination (issue3469)

  • record: --user/-u now works with record when ui.username not set (issue3857)

  • subrepo: check phase of state in each subrepositories before committing

4.4. Fixes

  • aliases: make "_checkshellalias()" invoke "findcmd()" with "strict=True"
  • bisect: --command without --noupdate should flag the parent rev it tested
  • clone: do not turn hidden changeset public on publishing clone (issue3935)

  • diff: search beyond ancestor when detecting renames
  • push: properly move phase boundary when no changeset are exchanged (issue3786)

  • rebase: abort cleanly when we encounter a damaged rebasestate (issue4155)

  • rebase: do not crash in panic when cwd disapear in the process (issue4121)

  • record: re-enable whitespace-ignoring options
  • relink: abort earlier when on different devices (issue3916)

  • subrepo: make it possible to update to hidden subrepo revisions
  • templater: selecting a style with no templates does not crash (issue4140)

  • update: consider successor changesets for a bare update
  • update: consider successor changesets when moving active bookmark

5. Mercurial 2.8.2 (2014-01-01)

This is a regularly-scheduled bugfix release.

  • fileset, revset: do not use global parser object for thread safety
  • hgweb: avoid initialization race (issue3953)

  • mpatch: rewrite pointer overflow checks

6. Mercurial 2.8.1 (2013-12-01)

This is a regularly-scheduled bugfix release.

  • bookmarks: consider successor changesets when moving bookmark (issue4015)

  • contrib: don't mention obsolete graphlog extension in mercurial.ini
  • contrib: promote strip extension over MQ in sample.hgrc
  • contrib: stop mentioning obsolete graphlog extension in sample.hgrc
  • convert: fix svn crash when svn.ra.get_log calls back with orig_paths=None
  • help: fix backwards bisect help example
  • help: use progress instead of mq as in 'hg help config' example
  • hgk: fix tag list parser (issue4101)

  • hgweb: ignore non numeric "revcount" parameter values (issue4091)

  • histedit: hold wlock and lock while in progress
  • largefiles: cache largefiles for update, also without printmessage
  • largefiles: don't crash on 'local renamed directory' actions
  • merge: move forgets to the beginning of the action list
  • minirst: do not interpret a directive as a literal block
  • minirst: find admonitions before pruning comments and adding margins
  • obsolete: stop doing membership test on list
  • parse_index2: fix crash on bad argument type (issue4110)

  • phase: better error message when --force is needed
  • rebase: fix rebase aborts when 'tip-1' is public (issue4082)

  • rebase: fix working copy location after a --collapse (issue4080)

  • share: fix unshare calling wrong repo.init() method

  • shelve: fix bad argument interaction with largefiles (issue4111)

  • shelve: unshelve using an unfiltered repository
  • strip: fix last unprotected mq reference (issue4097)

  • strip: hold wlock for entire duration
  • subrepo: sanitize non-hg subrepos
  • templater: fix escaping in nested string literals (issue4102)

  • templater: makes branches work correctly with stringify (issue4108)

  • templater: only recursively evaluate string literals as templates (issue4103)

  • unshelve: add tests for unknown files
  • unshelve: don't commit unknown files during unshelve (issue4113)

  • util: url keeps backslash in paths
  • util: warn when adding paths ending with \

7. Mercurial 2.8 (2013-11-01)

This is a regularly scheduled feature release.

7.1. Core features

  • hgweb: add revset syntax support to search
  • hgweb: always run search when a query is entered (BC)
  • hgweb (paper theme): add infinite scrolling to graph
  • hgweb: show full date in rfc822 format in tooltips at shortlog page
  • proxy: allow wildcards in the no proxy list (issue1821)

  • pull: for pull --update with failed update, print hint if any
  • rebase: preserve working directory parent (BC)
  • sslutil: add a config knob to support TLS (default) or SSLv23 (BC) (issue4038)

  • templatefilters: add short format for age formatting
  • templater: support using templates with non-standard names from map file
  • update: add error message for dirty non-linear update with no rev
  • addremove: don't do full walks
  • log: make file log slow path usable on huge repos
  • subrepo: let the user choose to merge, keep local or keep remote subrepo revisions

7.2. Extension features

  • convert-internals: introduce hg.revs to replace hg.startrev and --rev with a revset
  • convert-internals: update source shamap when using filemap, just as when not using filemap
  • factotum: clean up keychain for multiple hg repository authentication
  • histedit: abort if there are multiple roots in "--outgoing" revisions
  • mq: extract strip function as its standalone extension (issue3824)

  • mq: look for modified subrepos when checking for local changes
  • rebase: remove bailifchanged check from pullrebase (BC)
  • shelve: add a shelve extension to save/restore working changes

7.3. Fixes

  • pager: honour internal aliases
  • patch: ensure valid git diffs if source/destination file is missing (issue4046)

  • patch: Fix nullid for binary git diffs (issue4054)

  • progress: stop getting stuck in a nested topic during a long inner step
  • rebase: handle bookmarks matching revset function names (issue3950)

  • rebase: preserve active bookmark when not at head (issue3813)

  • rebase: preserve metadata from grafts of changes (issue4001)

  • rebase: fix selection of base used when rebasing merge (issue4041)

  • ui: send password prompts to stderr again (issue4056)

8. Mercurial 2.7.2 (2013-10-01)

Regularly scheduled bugfix release. This fixes significant regressions from 2.7 in push/pull performance and SSL negotiation.

  • bundle: fix performance regression when bundling file changes (issue4031)

  • generaldelta: initialize basecache properly
  • help: use full name of extensions to look up them for keyword search
  • histedit: abort if there are multiple roots in "--outgoing" revisions
  • histedit: add more detailed help about "--outgoing"
  • histedit: suggest "histedit --abort" for inconsistent histedit state
  • httpclient: apply upstream revision da7579b034a4 to fix SSL problems (issue4038)

  • rebase: catch RepoLookupError at restoring rebase state for abort/continue

  • rebase: catch RepoLookupError at restoring rebase state for summary

  • repoview: have unfilteredpropertycache using the underlying cache
  • repoview: make propertycache.setcache compatible with repoview
  • revset: fix wrong keyword() behaviour for strings with spaces
  • sslutil: backed out changeset 074bd02352c0 (issue4038)

  • strip: set current bookmark to None if stripped

9. Mercurial 2.7.1 (2013-09-03)

Regularly scheduled bugfix release.

  • rebase: handle bookmarks matching revset function names (issue3950)

  • tags: write tag overwriting history also into tag cache file (issue3911)

10. Mercurial 2.7 (2013-08-01)

Regularly scheduled feature release. This release contains an important fix for a merge ancestor calculation regression in the 2.6 series.

10.1. Core features

  • bookmarks: allow bookmark command to take multiple arguments
  • commands: add checks for unfinished operations (issue3955)

  • commit: enable --secret option
  • hgweb: run search instead of showing wrong error for ambigious identifier
  • import: cut commit messages at --- unconditionally (issue2148)

  • log: add a log style that is default+phase (issue3436)

  • paper: add line wrapping switch to file source view
  • paper: code selection without line numbers in file source view
  • paper: highlight line which is linked to in source view
  • revert: make backup when unforgetting a file (issue3423)

  • rollback: mark as deprecated
  • sslutil: force SSLv3 on Python 2.6 and later (issue3905)

  • summary: augment output with info from extensions
  • templater: add strip function with chars as an extra argument
  • log: show style list when unknown style specified
  • tip: deprecate the tip command
  • update: add tracking of interrupted updates (issue3113)

10.2. Extension features

  • churn: split email aliases from the right
  • histedit: refuse to edit history that contains merges (issue3962)

  • convert: improve error handling when parsing splicemap (issue2084)

  • convert: support paths with spaces in splicemap (issue3844)

10.3. Fixes

  • ancestor: Fix a reference counting bug in the C version (issue3984)

  • bookmarks: update only proper bookmarks on push -r/-B (issue 3973)
  • bookmarks: pull --update updates to active bookmark if it moved (issue4007)

  • changegroup: fix fastpath during commit
  • checklink: work around sshfs brain-damage (issue3636)

  • convert: catch empty origpaths in svn gettags (issue3941)

  • convert: fix bad conversion of copies when hg.startrev is specified
  • convert: handle changeset sorting errors without traceback (issue3961)

  • hgweb: fix incorrect way to count revisions in log (issue3977)

  • histedit: don't clobber working copy on --abort if not on histedit cset
  • largefiles: overridematch() should replace the file path instead of extending (issue3934)

  • progress: respect HGPLAIN
  • rebase: allow aborting when descendants detected
  • rebase: continue abort without strip for immutable csets (issue3997)

  • rebase: don't clobber wd on --abort when we've updated away (issue4009)

  • revlog: handle hidden revs in _partialmatch (issue3979)

11. Mercurial 2.6.3 (2013-07-01)

This is a regularly-scheduled bugfix release.

  • commit: amending with --close-branch (issue3445)

  • doc: make it easier to read how to enable extensions
  • doc: reword "config file" to "configuration file"
  • docs: change description to synopsis in hgrc.5
  • histedit: raise ImportError when demandloading is enabled

  • pathencode: fix hashmangle short dir limit (issue3958)

  • update: remove .hg/graftstate on clean (issue3970)

12. Mercurial 2.6.2 (2013-06-01)

This is a regularly-scheduled bugfix release.

  • amend: complain more comprehensibly about subrepos
  • blackbox: fix blackbox causing exceptions in tests
  • blackbox: fix recording exit codes (issue3938)

  • dirstate: don't overnormalize for ui.slash
  • graft: refuse to commit an interrupted graft (issue3667)

  • help: fix role/option confusion in RST
  • help: stop documentation markup appearing in generated help

13. Mercurial 2.6.1 (2013-05-14)

This is an unscheduled bugfix release to address some minor regressions in the 2.6 release.

  • convert: fix bug of wrong CVS path parsing without port number (issue3678)

  • help/config: note 64-bit Windows registry key used with 32-bit Python
  • hfs+: rewrite percent-escaper (issue3918)

  • hgignore: fix regression with hgignore directory matches (issue3921)

  • highlight: fix page layout with empty first and last lines
  • largefiles: check existence of the file with case awareness of the filesystem
  • largefiles: check unknown files with case awareness of the filesystem
  • pathencode: grow buffers to increase safety margin
  • revert: ensure that copies and renames are honored (issue3920)

  • subrepo: open files in 'rb' mode to read exact data in (issue3926)

  • windows: check target type before actual unlinking to follow POSIX semantics

14. Mercurial 2.6 (2013-05-01)

/!\ This release has known issues with some ignore rules (issue3921) and subrepos on Windows (issue3926)

This is a regularly scheduled feature release.

14.1. Core features

  • amend: support amending merge changesets (issue3778)

  • archive: raise error.Abort if the file pattern matches no files
  • bash_completion: allow remove to complete normal files
  • bookmarks: allow (re-)activating a bookmark on the current changeset
  • bookmarks: don't allow integers as bookmark/branch/tag names
  • bookmarks: moving the active bookmark deactivates it
  • bookmarks: resolve divergent bookmarks when moving active bookmark forward
  • bookmarks: resolve divergent bookmark when moving across a branch
  • commit: show active bookmark in commit editor helper text
  • config: discard "%unset" values defined in the other files read in previously
  • dates: support 'today' and 'yesterday' in parsedate (issue3764)

  • date: understand "now" as a shortcut for the current time
  • dispatch: print 'abort:' when a pre-command hook fails (BC)
  • dispatch: return status is 1 and a nice error message is printed when a user intervention is required (BC)
  • export: clobber files with -o (BC) (issue3652)

  • export: export working directory parent by default
  • export: show 'Date' header in a format that also is readable for humans
  • filesets: add eol predicate
  • hgweb: generate documentation as HTML (previously as text)
  • hgweb: teach archive how to download a specific directory or file
  • merge: apply non-interactive working dir updates in parallel
  • mergetools: avoid losing the merged version with meld
  • mergetools: vimdiff issues a warning explaining how to abort
  • sslutil: abort if peer certificate is not verified for secure use
  • summary: make "incoming" information sensitive to branch in URL (issue3830)

  • summary: make "outgoing" information sensitive to branch in URL (issue3829)

  • summary: show active bookmark even if not at current changeset
  • templatekw: add default styles for hybrid types (issue3887)

  • templater: add get() function to access dict element (e.g. extra)
  • addremove: improve performance
  • ancestor: a new algorithm that is faster for nodes near tip
  • dirstate: performance improvements
  • grep: use re2 if possible
  • parsers: a C implementation of the new ancestors algorithm
  • scmutil: rewrite dirs in C, use if available
  • tags: update tag type only if tag node is updated (issue3911)

14.2. Extension features

  • blackbox: new extension
  • hgk: add support for phases
  • hgk: don't use fixed format for dates
  • hgk: update backgroud colour when Ttk is available
  • histedit: allow "-" as a command file
  • histedit: handle multiple spaces between action and hash (issue3893)

  • histedit: make "hg histedit" sensitive to branch in URL
  • histedit: properly handle --continue on empty fold
  • histedit: support editing of the first commit (issue3767)

  • interhg: feature integrated in core. Extension removed.
  • largefiles: don't cache largefiles for pulled heads by default
  • largefiles: improve reuse of HTTP connections
  • largefiles: introduce lfpull command for pulling missing largefiles
  • largefiles: introduce pulled() revset expression for use in --lfrev
  • largefiles: introduce pull --lfrev option
  • largefiles: quiet (and document) undefined name errors (issue3886)

  • largefiles: stat all largefiles in one batch before downloading
  • largefiles: use repo.wwrite for writing standins (issue3909)

  • mq: comply with filtering when injecting fake tags (issue3812)

  • mq: do not inherit settings form base repo in mqrepo (Fixes issue2358)

  • rebase: check no-op before checking phase (issue3891)

  • rebase: fix --collapse when a file was added then removed
  • smtp: use 465 as default port for SMTPS
  • smtp: verify the certificate of the SMTP server for STARTTLS/SMTPS
  • subrepo: clone of git sub-repository creates incorrect git branch (issue3870)

  • subrepo: do not push mercurial subrepos whose store is clean
  • subrepo: fix exception on revert when "all" option is omitted

14.3. Fixes

  • annotate: increase refcount of each revision correctly (issue3841)

  • applyupdates: assign variable before we try to use it (issue3855)

  • bookmarks: allow moving a bookmark forward to a descendant
  • bookmarks: fix bug that activated a bookmark even with -r passed
  • case collision: Avoid unexpectd case folding issue during merge that should succeed (Bts: issue3452)
  • commit: allow closing "non-head" changesets
  • convert/git: catch errors from modern git-ls-remote (issue3428)

  • destroyed: invalidate phraserevs cache in all case (issue3858)

  • diff: fix binary file removals in git mode
  • http: avoid large text dumps when remote url is not a repo
  • import: don't rollback and unrelated transaction on failed import --exact (issue3616)

  • log: fix behavior with empty repositories (issue3497)

  • outgoing: fix possible filtering crash in outgoing (issue3814)

  • pager: catch ctrl-c on exit (issue3834)

  • record: abort on malformed patches instead of crashing
  • revset: change ancestor to accept 0 or more arguments (issue3750)

  • revset: don't abort when regex to tag() matches nothing (issue3850)

  • scheme: don't crash on invalid URLs
  • setup: make error message for missing Python headers more helpful
  • sshpeer: store subprocess so it cleans up correctly
  • win32: use explicit path to "python.exe" only if it exists

15. Mercurial 2.5.4 (2013-04-04)

This fixes an urgent regression in merging with subrepos introduced in 2.5.

  • applyupdates: assign variable before we try to use it (issue3855)

  • setup.py: properly discard trust warning

16. Mercurial 2.5.3 (2013-04-01)

  • hgweb: show correct error message for i18n environment
  • localrepo: always write the filtered phasecache when nodes are destroyed (issue3827)

  • rebase: restore active bookmark after rebase --continue
  • setup.py: add metadata to register package to PyPI
  • setup.py: ignore warnings from obsolete
  • zsh_completion: fix trailing carriage return spoiling tag completion

17. Mercurial 2.5.2 (2013-03-01)

  • bundle: treat branches created newly on the local correctly (issue3828)

  • largefiles: avoid rechecking hashes when avoidable
  • largefiles: don't let update leave wrong largefiles in wd if fetch fails
  • largefiles: fix off-by-one error on pull --all-largefiles
  • largefiles: fix download of largefiles from an empty list of changesets
  • largefiles: missing largefiles should not be committed as removed
  • mergetools: vimdiff issue a warning explaining how to abort
  • outgoing: fix possible filtering crash in outgoing (issue3814)

  • rebase: fix potential infinite loop in complex rename situation (issue3843)

18. Mercurial 2.5.1 (2013-02-08)

This is a non-scheduled bugfix release.

  • hgk: support the old way of getting the current Ttk theme (issue3808)

  • hgweb.cgi: fix internal WSGI emulation (issue3804)

  • hgweb: make 'summary' work with hidden changesets (issue3810)

  • incoming: fix incoming when a local head is remotely filtered (issue3805)

  • largefiles: don't crash when trying to find default dest for url without path
  • rebase: derive node from target rev (issue3802)

19. Mercurial 2.5 (2013-02-01)

This is a regularly-scheduled feature release.

19.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

19.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

19.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

19.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

20. 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)

21. 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

22. Mercurial 2.4 (2012-11-01)

This is a regularly-scheduled feature release.

22.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

22.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

22.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

23. 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)

24. 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

25. Mercurial 2.3 (2012-08-01)

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

25.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

25.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

25.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)

26. 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

27. 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)

28. 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)

29. 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.

29.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

29.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

29.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)

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