Differences between revisions 1 and 283 (spanning 282 versions)
Revision 1 as of 2005-09-16 18:27:47
Size: 721
Editor: mpm
Comment:
Revision 283 as of 2016-02-03 05:36:47
Size: 47652
Editor: rcl
Comment: move release notes from 3.3.3 and older to Archive
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
 locate branches by tag
 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
 Emacs support
 updated hgk
}}}
#pragma section-numbers 2
## notes that are older than 3 major releases should be moved to WhatsNew/Archive
= Release Notes =
Features and bugfixes in our latest releases. Please see the [[Download]] page for links to source and binaries.

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

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

<<TableOfContents(2)>>

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


== Mercurial 3.7 (2016-2-1) ==

Regularly scheduled feature release.
There's also an [[Release3.7|overview of new features]] available.

=== commands ===
 * merge: don't try to merge subrepos twice (Bts:issue4988)
 * pull: advance current active bookmark at pull --update correctly
 * templater: abort if infinite recursion detected while evaluation (Bts:issue4758)

 * annotate: add missing period to help
 * annotate: mention that -n is suppressed in help
 * backout: disable --merge with --no-commit (Bts:issue4874)
 * bookmark: deprecate 'bmstore.write' method
 * bookmarks: hoist getbkfile out of bmstore class
 * bookmarks: make _readactive safe when readlines raises ENOENT
 * branch: reword help text
 * clone: move bookmarks and checkouts before pull help
 * clonebundles: improve BUNDLESPEC documentation
 * clonebundles: remove advertisement of feature
 * commands.summary: switch to mergestate.read()
 * commands: inline definition of localrepo.parents() and drop the method (API)
 * commands: make backout acquire locks before processing
 * commands: make commit acquire locks before processing (Bts:issue4368)
 * commands: use context manager for opened bundle file
 * commandserver: drop tell() and seek() from channels (Bts:issue5049)
 * commandserver: reset state of progress bar per command
 * commit: add a way to return more information from the chunkselector
 * commit: add amend mode for commit -i
 * commit: add some help examples (Bts:issue4963)
 * commit: adjust the quoting in the examples to be Windows friendly
 * commit: fix rest syntax of examples
 * commit: make commit acquire store lock before processing for consistency
 * commit: preserve extra when amending with commit --amend
 * fileset: add missing() predicate (Bts:issue4925)
 * fileset: use set instead of list to mark predicates for efficiency (API)
 * graft: clarify in help that '-r' is not just optional
 * graft: copy extra (except branch) when copying changesets
 * graft: hook afterresolvedstates
 * graft: improve --continue abort message
 * help: fix quoting for bundle1 options
 * import: add word to help text
 * import: limit scope of msg in tryimportone
 * import: reorder help text
 * log: speed up single file log with hidden revs (Bts:issue4747)
 * log: add 'hg log' example for full hashes
 * log: help provide sort by date example
 * log: mention ordering
 * log: speed up hg log <file|folder>
 * merge.graft: add option to keep second parent
 * merge: add options to warn or ignore on colliding unknown files
 * merge: move almost all change/delete conflicts to resolve phase (BC) (API)
 * merge: refuse update/merge if there are unresolved conflicts (BC)
 * mergestate: raise structured exception for unsupported merge records
 * patch: disable nobinary when HGPLAIN=1
 * pull: make a single call to obsstore.add (Bts:issue5006)
 * pull: return 255 value on update failure (Bts:issue4948) (BC)
 * push: specify default-push and default as fallback paths
 * status: back out changeset 89f49813526c
 * status: change + back out == clean (API)
 * status: revert + flag-change == modified
 * summary: add troubles list to the output of hg summary
 * summary: mention graft
 * summary: print unstable, bumped and divergent as unconditionally plural
 * tags: mention --quiet switch in help (Bts:issue4920)
 * verify: add a hook that can let extensions manipulate file lists
 * verify: clean up weird error/warning lists
 * verify: get rid of some unnecessary local variables
 * verify: move checklog() onto class
 * verify: move exc() function onto class
 * verify: remove unreachable code to reraise KeyboardInterrupt

=== core ===
 * context: don't use util.cachefunc due to cycle creation (Bts:issue5043)
 * context: use a the nofsauditor when matching file in history (Bts:issue4749)
 * parsers: check results of PyInt_FromLong (Bts:issue4771)
 * repoview: fix corrupted hiddencache crash Mercurial (Bts:issue5042)
 * revlog: avoid string slice when decompressing u* chunks
 * revlog: clarify which revision is added to 'tested' when using cached delta
 * revlog: don't consider nullrev when choosing delta base
 * revlog: improve documentation
 * revlog: make calls to _isgooddelta() consistent
 * revlog: make clearcaches() more effective
 * revlog: return offset from _chunkraw()
 * revsetbenchmarks: support benchmarking changectx loading
 * ui: optionally ignore sub-options from configitems()
 * ui: support declaring path push urls as sub-options
 * util: disable floating point stat times (Bts:issue4836)
 * wireproto: config options to disable bundle1
 * wireproto: support disabling bundle1 only if repo is generaldelta

=== extensions ===
 * crecord: fix help bar display issue (Bts:issue5063)
 * histedit: add progress support
 * histedit: explain basics of histedit commands
 * histedit: pick an appropriate base changeset by default (BC)
 * largefiles: actions will now always have a file - drop check
 * largefiles: fall back to the original for change/delete conflicts
 * largefiles: fix commit of missing largefiles
 * largefiles: make prompt order deterministic
 * largefiles: specify where .orig files are kept
 * largefiles: use a context manager in _getfile
 * largefiles: use util.readfile in lfconvert
 * largefiles: use util.readfile in overrides
 * largefiles: fix an explicit largefile commit after a remove (Bts:issue4969)
 * largefiles: prevent committing a missing largefile
 * mq: check for reserved patch name with qimport -r (Bts:issue5033)
 * mq: let the user choose where .orig files are kept
 * rebase: add date parameter to concludenode function
 * rebase: better error message when rebased changes are all in destination
 * rebase: create a new variable to make the next patch more legible
 * rebase: hook afterresolvedstates
 * rebase: only clear rebase status after the rebase transaction has completed
 * rebase: pass date parameter to concludenode
 * rebase: prevent creating divergence
 * rebase: propagate extra dict from rebase source changeset
 * rebase: remove extra "if" from check of collapsing named branches
 * rebase: better way to detect non-detaching revisions (Bts:issue5044)
 * rebase: restore help for rebase w/o args (Bts:issue5059)
 * shelve: choose where .orig file locations are kept
 * shelve: execute checkunfinished inside wlock scope
 * shelve: hook afterresolvedstates
 * shelve: lowercase flag description
 * shelve: permit shelves to contain unknown files
 * shelve: remove redundant acquisition of wlock for sub commands of unshelve
 * shelve: switch to mergestate.read()
 * shelve: use a context manager for file I/O in listcmd
 * shelve: widen wlock scope of shelve for consistency while processing
 * shelve: widen wlock scope of unshelve for consistency while processing
 * unshelve: add -k as short form of --keep
 * unshelve: add support for custom merge tools
 * unshelve: shed spurious space

=== hgweb ===
 * hgweb: eliminate duck-typing to select hgweb or hgwebdir by command option
 * hgweb: load server settings from --web-conf (Bts:issue4699)
 * hgweb: make sure command options are set to all ui objects
 * hgweb: support rendering a sub-topic
 * hgweb: support rendering sub-topic indexes
 * hgweb: update canvas.width before dynamically redrawing graph (Bts:issue2683)

=== unsorted ===
 * addrevision: only use the incoming base if it is a good delta (Bts:issue4975)
 * backout: commit changeset by default (BC)
 * backout: fix --no-commit option (Bts:issue5054)
 * batchget: add support for backing up files
 * builddeb: add --distid option to specify Distributor ID
 * changegroup: introduce cg3, which has support for exchanging treemanifests
 * changelog: add a new method to get files modified by a changeset
 * checkunknownfiles: make control flow clearer
 * crecord: edit during hg crecord should preserve cursor position (Bts:issue5041)
 * debugignore: find out why a file is being ignored (Bts:issue4856)
 * demandimport: add support for PyPy
 * demandimport: don't enable when running under PyPy
 * destutil: use scmutil.revrange for desthistedit (Bts:issue5001)
 * diff: don't crash when merged-in addition was removed (Bts:issue4786)
 * discovery: properly filter changeset in 'peer.known' (Bts:issue4982)
 * dispatch: copy inferrepo attribute to alias commands
 * dispatch: report similar names consistently
 * dispatch: use print function
 * dispatch: use versiontuple()
 * dockerrpm: fix CentOS 5 RPMs (Bts:issue4977)
 * encoding: handle UTF-16 internal limit with fromutf8b (Bts:issue5031)
 * encoding: re-escape U+DCxx characters in toutf8b input (Bts:issue4927)
 * error: add a structured exception for unsupported merge records
 * extdiff: correctly handle deleted subrepositories (Bts:issue3153)
 * extdiff: use @command decorator to set up diff commands
 * filemerge: add a 'leave unresolved' option to change/delete prompts
 * filemerge: add a 'leave unresolved' option to regular prompts
 * filemerge: add support for change/delete conflicts to the ':local' merge tool
 * filemerge: add support for change/delete conflicts to the ':other' merge tool
 * filemerge: add support for change/delete conflicts to the ':prompt' tool
 * filemerge: default change/delete conflicts to 'leave unresolved' (BC)
 * filemerge: default regular prompts to 'leave unresolved' (BC)
 * graphlog: make node symbol templatable by ui.graphnodetemplate option
 * graphlog: rename glog function
 * hghave: support HGMODULEPOLICY for pure
 * localrepo: don't reference transaction from hook closure (Bts:issue5043)
 * lsprof: support PyPy (Bts:issue4573)
 * mac: fix percent-encoding of non-utf-8 characters (Bts:issue4999)
 * match: add option to return line and lineno from readpattern
 * mercurial: pass ui to extensions.load (Bts:issue5007)
 * mercurial: support loading modules from zipimporter
 * paths: do not process default-push as pushurl of default path (Bts:issue5000)
 * posix: work around "posix" systems without os.link available (Bts:issue4974)
 * run-tests: skip threading for a single test (Bts:issue5040)
 * scmutil: support background file closing
 * sslutil: fix reversed logic (Bts:issue5034)
 * streamclone: use backgroundfilecloser (Bts:issue4889)
 * streamclone: use context manager for writing files
 * streamclone: use read()
 * templates: make earlycommands and othercommands optional
 * templates: use canvaswidth instead of fixed width for canvas (Bts:issue2683)
 * test-extension: do not depend on demandimport (Bts:issue5012)
 * unionrepo: fix wrong rev being checked in iscensored (Bts:issue5024)
 * webcommands: get correct parents when comparing a removed file (Bts:issue4962)
 * webcommands: stop using ersatz if-else ternary operator for rename variable
 * webcommands: test that fctx is not None in filediff()
 * zeroconf: access repo on hgweb_mod properly (Bts:issue5036)

== Mercurial 3.6.3 (2016-1-1) ==

This is a regularly-scheduled bugfix release.

 * cmdutil: use crecordmod.checkcurses
 * copyfile: add an optional parameter to copy other stat data
 * crecord: stop raising error.Abort if curses is not found (Bts:issue5008)
 * dirstate: don't write repo.currenttransaction to repo.dirstate if repo
 * dockerlib: short form for non-unique uid/gid for CentOS 5 compat (Bts:issue4977)
 * merge: while checking for unknown files don't follow symlinks (Bts:issue5027)
 * mq: use fallback patch name if no alpha-numeric in summary line (Bts:issue5025)
 * parsers: fix parse_dirstate to check len before unpacking header (Bts:issue4979)
 * paths: include #fragment again
 * push: restore old behavior of default-push (Bts:issue5000)
 * record: don't dereference symlinks while copying over stat data
 * revlog: seek to end of file before writing (Bts:issue4943)
 * ui: try to handle $$ more robustly in prompts (Bts:issue4970)

== Mercurial 3.6.2 (2015-12-1) ==

This is a regularly-scheduled bugfix release.

 * docker: match more version of 'hg docker version' (Bts:issue4967)
 * localrepo.commit: check all files for resolve state (Bts:issue4972)
 * rebase: add returning value from pullrebase function
 * resolve: restore .orig only after merge is fully complete (Bts:issue4952)
 * share: wrap bmstore._writerepo for transaction sensitivity (Bts:issue4940)
 * tags: create new sortdict for performance reasons

== Mercurial 3.6.1 (2015-11-9) ==

This is an out-of-cycle bugfix release for issues related to hooks.

 * changegroup: call 'prechangegroup' hook before setting up write delay
 * changegroup: fix the scope of a try finally
 * clonebundles: fix typo s/comand/command/
 * demandimport: fix level passed to loader of sub-modules
 * dirstate: fix filefoldmap incosistency on file delete
 * dockerlib: allow non-unique uid and gid of $DBUILDUSER (Bts:issue4657)
 * exchange: do not attempt clone bundle if local repo is non-empty (Bts:issue4932)
 * hooks: always include HG_PENDING
 * hooks: fix hooks not firing if prechangegroup was set (Bts:issue4934)
 * parsers: fix width of datalen variable in fm1readmarkers
 * posix: fix test-permissions regression
 * posix: retry on symlink race in checklink
 * templatefilters: try round-trip utf-8 conversion by json filter (Bts:issue4933)
 * wireproto: move clonebundles command from extension (Bts:issue4931)
 * wix: style-coal.css has been renamed

== Mercurial 3.6 (2015-11-1) ==

Regularly scheduled feature release.

=== commands ===
 * bookmark: do not crash when active bookmark is forward and --date is used
 * bookmarks: don't deactivate on no-op update (Bts:issue4901)
 * clone: fix updaterev to update to latest branch changeset (Bts:issue4528)
 * clonebundles: support for seeding clones from pre-generated bundles
 * commit: abort when a committemplate is not changed (BC)
 * help: distinguish sections when multiple match (Bts:issue4802)
 * help: pass around ui to doc loader (API)
 * help: pass around ui to rewriter hooks (API)
 * merge: perform all premerges before any merges (BC)
 * merge: abort on file/directory case folding collisions (Bts:issue4892)
 * phases: return zero for no-op operations (Bts:issue4751) (BC)
 * resolve: perform all premerges before performing any file merges (BC)

=== core ===
 * cmdutil: make in-memory changes visible to external editor (Bts:issue4378)
 * cmdutil: stop tryimportone from using dirstateguard (BC)
 * context: don't hex encode all unknown 20 char revision specs (Bts:issue4890)
 * dirstate: batch calls to statfiles (Bts:issue4878)
 * parsers: fix infinite loop or out-of-bound read in fm1readmarkers (Bts:issue4888)
 * revlog: add an aggressivemergedelta option
 * revlog: change generaldelta delta parent heuristic
 * revset: do not fall through to revspec for literal: branch (Bts:issue4838)
 * revsets: makes follow() supports file patterns (Bts:issue4757) (BC)
 * templater: add new docheader/footer components for XML (Bts:issue4135)
 * templater: create string unescape helper (Bts:issue4798)
 * templater: do not pre-evaluate generator keyword at runsymbol (Bts:issue4868)
 * templater: introduce {latesttag()} function to match a pattern (Bts:issue4184)
 * templater: switch ctx of list expression to rev of revset() (BC)
 * ui: change default path fallback mechanism (Bts:issue4796)
 * util: use tuple accessor to get accurate st_mtime value (Bts:issue4836)
 * wireproto: properly parse false boolean args (BC)

=== extensions ===
 * histedit: use one editor when multiple folds happen in a row (Bts:issue3524) (BC)
 * largefiles: better handling of merge of largefiles that are not available
 * mq: generate patch names from first line of description
 * rebase: avoid losing branch commits with --keepbranch (Bts:issue4835)
 * rebase: fix warning about ignoring tool option on rebase continue (Bts:issue4698)
 * rebase: fix wrong 'no changes to commit' when using --collapse
 * rebase: on abort delete rebase state file no matter what
 * rebase: properly abort when destination is public (Bts:issue4896)
 * rebase: properly handle chains of markers with missing nodes
 * shelve: bundle using bundle2 if repository is general delta (Bts:issue4862)
 * shelve: delete shelve statefile on any exception during abort
 * shelve: restore shelved dirstate explicitly after aborting transaction
 * shelve: restore unshelved dirstate explicitly after aborting transaction

=== hgweb ===
 * hgweb: consume generator inside context manager (Bts:issue4756)
 * hgweb: ensure both foreground and background colors are specified (Bts:issue4872)
 * hgweb: overwrite cwd to resolve file patterns relative to repo (Bts:issue4568)

=== unsorted ===
 * builddeb: actually run make when building the deb (Bts:issue4778)
 * buildrpm: mkdir -p two needed directories (Bts:issue4779)
 * bundle2: don't try to recover from a GeneratorExit (Bts:issue4785)
 * bundle: extend the format of --type to support version and compression
 * debian: install bash completion as hg and not mercurial (Bts:issue4900)
 * debian: install hgk as part of mercurial-common (Bts:issue4829)
 * dispatch: error out on invalid -R path even if optionalrepo (Bts:issue4805) (BC)
 * dispatch: stop warning about EPIPE in --debug mode
 * graphmod: compute slow revset query once prior to reachableroots (Bts:issue4782)
 * highlight: add highlightfiles config option which takes a fileset (Bts:issue3005)
 * highlight: add option to prevent content-only based fallback
 * highlight: exit early on textual and unknown files (Bts:issue3005)
 * incoming: request a bundle2 when possible (BC)
 * localrepo: recreate phasecache if changelog was modified (Bts:issue4855)
 * lock: loop a finite number of times in trylock (Bts:issue4787)
 * mercurial: add debugextensions command (Bts:issue4676)
 * minirst: don't treat top level item as children of last item (Bts:issue4803)
 * notify: fix fromauthor setting for 'incoming' hook type (Bts:issue4194)
 * posix: shellquote do not require quoting for "+" (Bts:issue4818)
 * reachableroots: verify integer range of heads argument (Bts:issue4775)
 * revpair: restrict odd-range handling to top-level x:y expression (Bts:issue4774)
 * revrange: drop old-style parser in favor of revset (API)
 * test-merge-tools: include /usr/sbin in path for sysctl (Bts:issue4813)
 * traceback: allow providing a local support contact point
 * treemanifest: rework lazy-copying code (Bts:issue4840)
 * windows: read all global config files, not just the first (Bts:issue4491) (BC)
 * worker: restore old countcpus code (Bts:issue4869)

== Mercurial 3.5.2 (2015-10-01) ==

Regularly-scheduled bugfix release.

 * hgweb: use latest mtime for caching tag (Bts:issue4814)
 * largefiles: restore archiving largefiles with hgweb (Bts:issue4859)
 * localrepo: recreate phasecache if changelog was modified (Bts:issue4855)
 * monoblue: fix page subtitle on help pages
 * unbundle: cleanly abort on unknown bundle2 feature

== Mercurial 3.5.1 (2015-09-01) ==

Regularly-scheduled bugfix release.

 * convert: fix git copy file content conversions
 * filesets: ignore unit case in size() predicate for single value
 * help: fix typo familar -> familiar
 * help: fix typo in scripting documentation
 * hg: avoid auto sharing when the clone destination is remote
 * hgweb: fix trust of templates path (BC)
 * histedit: backout ebb5bb9bc32e
 * largefiles: ensure lfutil.getstandinmatcher() only matches standins
 * match: fix a case-only rename + explicit path commit on icasefs (Bts:issue4768)
 * parsers: fix memory leak in compute_phases_map_sets
 * rebase: lock the repo during the full rebase operation
 * revset: prevent crash caused by empty group expression while optimizing "and"
 * revset: prevent crash caused by empty group expression while optimizing "or"
 * strip: use the 'finally: tr.release' pattern during stripping
 * update: wlock the repo for the whole 'hg update' command
 * wix: avoid an abort with 'hg help -k foo'

== Mercurial 3.5 (2015-07-31) ==

Regularly-scheduled feature release.

=== commands ===
 * bookmark: informs of failure to upgrade a bookmark
 * bookmark: remove the "touch changelog" hack
 * bookmarks: abort the whole push if bookmarks fails to update (BC)
 * bookmarks: change bookmark within a transaction
 * bookmarks: clear active bookmark on non-linear update
 * bookmarks: mark internal-only config option
 * bookmarks: mark internal-only option
 * bookmarks: name label for active bookmark correctly
 * bookmarks: remove unused updatecurrentbookmark function (API)
 * bookmarks: rename bookmarkcurrent to activebookmark (API)
 * bookmarks: rename current to active in variables and comments
 * bookmarks: rename readcurrent to readactive (API)
 * bookmarks: rename setcurrent to activate (API)
 * bookmarks: rename unsetcurrent to deactivate (API)
 * bookmarks: simplify iscurrent to isactivewdirparent (API)
 * bookmarks: use try/except/finally
 * branch: don't warn about branches if repository has multiple branches already
 * commands: use the optional badfn argument when building a matcher
 * commands: use try/except/finally
 * commit: add ui.allowemptycommit config option
 * commit: avoid match.files() in conditions
 * commit: improve --close-branch documentation
 * commit: mark internal-only option
 * commit: no longer allow empty commit with the 'force' argument (API)
 * config: give it an includepaths option for looking for config files
 * files: recurse into subrepos automatically with an explicit path
 * import-checker: add xargs like mode
 * import-checker: don't treat modules as relative one if not found
 * import-checker: exclude mercurial packages installed into the system path
 * import-checker: loop to get list of locally defined modules at first
 * import: cross-reference patch.fuzz option from 'hg help import'
 * import: cross-reference ui.patch option from 'hg help import'
 * import: use ui.allowemptycommit to allow empty commits
 * log: add a status template
 * patch: add 'extra' argument to makememctx
 * patch: add fuzz config flag (Bts:issue4697)
 * phases: abort the whole push if phases fail to update (BC)
 * phases: fix bug where native phase computation wasn't called
 * phases: really fix native phase computation
 * pull: allow a generic way to pass parameters to the pull operation
 * pull: document the race condition with bookmark name
 * pull: only list remote bookmarks if -B is used to populate pulled heads
 * pull: only prefetch bookmarks when using bundle1
 * pull: prevent race condition in bookmark update when using -B (Bts:issue4689)
 * pull: skip pulling remote bookmarks with bundle1 if a value already exist
 * pull: skip pulling remote bookmarks with bundle2 if a value already exists
 * push: catch and process PushkeyFailed error
 * push: make pushkey part advisory
 * push: only say we are trying to push obsmarkers when we actually try
 * revert: fix edition of newly added file during --interactive
 * summary: add a phase line (draft, secret) to the output
 * summary: move the parents phase marker to commit line (Bts:issue4688)
 * tags: support reading tags cache without populating
 * tags: support setting hgtags fnodes cache entries
 * tags: use try/except/finally
 * verify: check the subrepository references in .hgsubstate
 * verify: clarify misleading fncache message

=== core ===
 * dirstate: ensure mv source is marked deleted when walking icasefs (Bts:issue4760)
 * ignore: fix include: rules depending on current directory (Bts:issue4759)
 * parsers: fix buffer overflow by invalid parent revision read from revlog
 * revlog: add support for a callback whenever revisions are added
 * revlog: raise an exception earlier if an entry is too large (Bts:issue4675)
 * revset: fix a crash in parents() when 'wdir()' is in the set
 * revset: fix iteration over ordered addset composed of non-ordered operands
 * revset: gratuitous formating fix in keyword
 * revset: improves time complexity of 'roots(xxx)'
 * revset: port extra() to support keyword arguments
 * revset: reduce nesting of chained 'or' operations (Bts:issue4624)
 * revsetbenchmarks: fix argument parsing
 * revsetbenchmarks: improve error output in case of failure
 * revsetbenchmarks: improve revision printing
 * revsetbenchmarks: support combining variants with "+"
 * templater: do not reevaluate rawstring as template (BC)
 * templater: remove noop calls of parsestring(s, quoted=False) (API)
 * templater: rename parsestring() to unquotestring() (API)
 * templater: take any string literals as template, but not for rawstring (BC)
 * templater: tokenize decimal integer literal (Bts:issue4638) (BC)
 * wireproto: correctly escape batched args and responses (Bts:issue4739)

=== extensions ===
 * convert: add config option for disabling ancestor parent checks
 * convert: add support for specifying multiple revs
 * convert: allow customizing git remote prefix
 * convert: apply the appropriate phases to the destination (Bts:issue4165)
 * convert: fix bug with converting the same commit twice
 * convert: handle copies when converting from Perforce (Bts:issue4744)
 * convert: handle deleted files when converting from Perforce (Bts:issue4743)
 * convert: handle deleted files when converting from Perforce (Bts:issue4743)
 * convert: improve support for unusual .gitmodules
 * convert: support incremental conversion with hg subrepos
 * convert: support multiple specifed revs in git source
 * convert: use 'default' for specifying branch name in branchmap (Bts:issue4753)
 * convert: when converting from Perforce use original local encoding by default (BC)
 * extdiff: allow modifications in subrepos to be copied back
 * highlight: produce correct markup when there's a blank line just before EOF
 * histedit: abort rather than edit a public changeset (Bts:issue4704)
 * histedit: mark defaultrev option experimental
 * largefiles: allow the archiving of largefiles to be disabled
 * largefiles: avoid match.files() in conditions
 * largefiles: ignore hidden changesets with 'verify --large --lfa'
 * largefiles: pass in whole matcher to getstandinmatcher()
 * largefiles: restore the original converter class after lfconvert --to-normal
 * largefiles: use the convert extension for 'lfconvert --to-normal'
 * largefiles: use the optional badfn argument when building a matcher
 * largefiles: use try/except/finally
 * mq: ban \r and \n in patch names (Bts:issue4711)
 * mq: tweak config reading to make check-config happy
 * mq: use the optional badfn argument when building a matcher
 * mq: use ui.allowemptycommit to allow empty commits
 * rebase: add short -k option for --keep
 * rebase: remove extraneous blank at the end of file
 * shelve: allow --patch and --stat without --list for a single shelf
 * shelve: always backup shelves instead of deleting them
 * shelve: keep old backups if timestamp can't decide exact order of them
 * shelve: make maxbackup doc check-config friendly
 * shelve: omit incorrect 'commit' suggestion at 'hg shelve -i'
 * shelve: only keep the latest N shelve backups
 * shelve: refactor allowables to specify sets of valid operations
 * shelve: use try/except/finally
 * transplant: restore dirstate correctly at unexpected failure

=== hgweb ===
 * hgweb: don't dereference symbolic revision in paper & coal style (Bts:issue2296)
 * paper: show branch/tags/bookmarks when blaming (Bts:issue3559)
 * paper: show branch/tags/bookmarks when browsing (Bts:issue3559)
 * paper: show branch/tags/bookmarks when comparing (Bts:issue3559)
 * paper: show branch/tags/bookmarks when diffing (Bts:issue3559)
 * paper: show branch/tags/bookmarks when viewing (Bts:issue3559)

=== unsorted ===
 * archive: drop the leading '.' path component from the prefix (Bts:issue4634)
 * archive: fix changesincelatesttag with wdir()
 * archive: support 'wdir()'
 * bufferedinputpipe: remove N^2 computation of buffer length (Bts:issue4735)
 * bundle2: fix type of experimental option
 * bundle2: pull bookmark the old way if no bundle2 listkeys support (Bts:issue4701)
 * canonpath: fix infinite recursion
 * censor: make various path forms available like other Mercurial commands
 * censor: mark experimental option
 * changegroup: compute seen files as changesets are added (Bts:issue4750)
 * changelog: change input type of index_get_parents
 * changelog: fix bug in heads computation
 * changelog: move index_get_parents function up
 * changelog: update read pending documentation
 * check-commit: catch both patterns of double empty lines
 * check-commit: print limit when user has a too-long summary
 * check-config: add config option checker
 * crecord: fix issue when backgrounding editor would leave artefact
 * demandimport: alias builtin as builtins
 * demandimport: define a 'deactivated' context manager
 * demandimport: support importing builtins for Python 3
 * devel: rename 'all' to 'all-warnings' (BC)
 * dispatch: add support for python-flamegraph[0] profiling
 * dispatch: disable demandimport for the --debugger option
 * email: fix config default value inconsistency
 * exchange: support transferring .hgtags fnodes mapping
 * extdiff: add support for subrepos
 * filemerge: mark internal-only config option
 * formatter: add template support
 * formatter: mark developer options
 * generaldelta: mark experimental reordering option
 * hg: support for auto sharing stores when cloning
 * hgewb: disable progress when serving (Bts:issue4582)
 * hghave: allow adding customized features at runtime
 * http2: mark experimental and developer options
 * localrepo: eliminate requirements class variable (API)
 * localrepo: kill off sopener (API)
 * localrepo: mark format options
 * mail: pass ui to sslutil.wrapsocket() even if verifycert is off (Bts:issue4713)
 * match: add an optional constructor parameter for a bad() override
 * match: add optional warn argument
 * match: introduce boolean prefix() method
 * match: resolve filesets in subrepos for commands given the '-S' argument
 * parser: factor out function that parses right-hand side of prefix/infix ops
 * parser: fill invalid infix and suffix actions by None
 * parser: reorder infix/suffix handling to be similar to prefix/primary flow
 * parser: resolve ambiguity where both prefix and primary actions are defined
 * parser: separate actions for primary expression and prefix operator
 * parser: take suffix action if no infix action is defined
 * pathutil: hint if a path is root relative instead of cwd relative (Bts:issue4663)
 * phase: default to current revision if no rev is provided (Bts:issue4666)
 * profiler: mark developer-only config option
 * progress: deprecate the progress extension
 * progress: mark experimental option
 * progress: respect ui.quiet (Bts:issue4726)
 * revrange: build balanced tree of addsets from revisions (Bts:issue4565)
 * run-tests: introduce PYTHON3 boolean constant (Bts:issue4668)
 * run-tests: move all open-coded sys.version_info checks to PYTHON3 (Bts:issue4668)
 * run-tests: move unicode-to-bytes operations on paths to a helper (Bts:issue4667)
 * run-tests: prefer PYTHON3 constant to many version_info checks (Bts:issue4668)
 * run-tests: replace open-coded .decode()s on paths with a helper (Bts:issue4667)
 * scmutil: add an optional parameter to matcher factories for a bad() override
 * scmutil: use the optional badfn argument when building a matcher
 * setup.py: drop compatibility with Python 2.4 and 2.5 (BC)
 * setup: hide octal literals inside strings so they're portable (Bts:issue4554)
 * sshpeer: break "OutOfBandError" feature for ssh (BC)
 * sshpeer: run the ssh command unbuffered
 * ssl: prompt passphrase of client key file via ui.getpass() (Bts:issue4648)
 * subrepo: mark internal-only option

 * templatekw: display active bookmark more consistently (Bts:issue4552) (BC)
 * test-discovery: disable bundle2 for legacy test (Bts:issue4610)
 * bookmarks: abort the whole push if bookmarks fails to update (BC)
 * phases: abort the whole push if phases fail to update (BC)
 * templater: do not reevaluate rawstring as template (BC)
 * templater: take any string literals as template, but not for rawstring (BC)
 * templater: tokenize decimal integer literal (Bts:issue4638) (BC)

 * bookmarks: remove unused updatecurrentbookmark function (API)
 * bookmarks: rename bookmarkcurrent to activebookmark (API)
 * bookmarks: rename readcurrent to readactive (API)
 * bookmarks: rename setcurrent to activate (API)
 * bookmarks: rename unsetcurrent to deactivate (API)
 * bookmarks: simplify iscurrent to isactivewdirparent (API)
 * commit: no longer allow empty commit with the 'force' argument (API)
 * templater: remove noop calls of parsestring(s, quoted=False) (API)
 * templater: rename parsestring() to unquotestring() (API)

== Mercurial 3.4.2 (2015-07-01) ==

 * changegroup: properly compute common base in changeggroupsubset (Bts:issue4736)
 * crecord: fix a typo introduced when moving crecord to core
 * crecord: fix three typos introduced while moving crecord into core
 * hgwebdir: avoid redundant repo and directory entries when 'web.name' is set
 * hgwebdir: don't allow the hidden parent of a subrepo to show as a directory
 * parsers: do not cache !RevlogError type (Bts:issue4451)
 * pull: avoid race condition with 'hg pull --rev name --update' (Bts:issue4706)
 * templater: do not preprocess template string in "if" expression (Bts:issue4714)
 * templater: evaluate arguments passed to diff() appropriately
 * templater: parse \"...\" as string for 2.9.2-3.4 compatibility (Bts:issue4733)
 * transplant: only pull the transplanted revision (Bts:issue4692)
 * transplant: update test to use hash for remote transplant

== Mercurial 3.4.1 (2015-06-01) ==

This is a regularly-scheduled bugfix release.

 * archive: always use portable path component separators with subrepos
 * commands: hide formatter option as EXPERIMENTAL, not as DEPRECATED
 * context: don't complain about a matcher's subrepo paths in changectx.walk()
 * convert: properly pass null ids through .hgtags (Bts:issue4678)
 * extensions: clear aftercallbacks after execution (Bts:issue4646)
 * hgweb: bring back infinite scroll in shortlog of paper style
 * histedit: fix --continue when rules are finished
 * histedit: fix --edit-plan
 * histedit: fix keep during --continue
 * histedit: fix serializing of None backupfile
 * histedit: fix test-histedit-edit on vfat
 * localrepo: pass hook argument txnid to pretxnopen hooks
 * localrepo: rename hook argument from TXNID to txnid (BC)
 * localrepo: use correct argument name for pretxnclose hooks (BC)
 * match: explicitly naming a subrepo implies always() for the submatcher
 * mergecopies: avoid slowdown from linkrev adjustment (Bts:issue4680)
 * rebase: check that the bookmark is still valid when restoring (Bts:issue4669)
 * rebase: clear merge when aborting before any rebasing (Bts:issue4661)
 * revbranchcache: return uncached branchinfo for nullrev (Bts:issue4683)
 * revset: drop magic of fullreposet membership test (Bts:issue4682)
 * revset: id() called with 40-byte strings should give the same results as for short strings
 * revset: map postfix '%' to only() to optimize operand recursively (Bts:issue4670)
 * ssh: capture output with bundle2 again (Bts:issue4642)
 * templatekw: compare target context and its parent exactly (Bts:issue4690)
 * templater: do not process \-escapes at parsestring() (Bts:issue4290)
 * templater: fix crash by passing invalid object to date() function
 * templater: strictly parse leading backslashes of '{' (Bts:issue4569) (BC)
 * transaction: really fix _addbackupentry key usage (Bts:issue4684)
 * transaction: separate calculating TXNID from creating transaction object
 * transaction: use the proper variable in '_addbackupentry' (Bts:issue4684)
 * util.checkcase: don't abort on broken symlinks


== Mercurial 3.4 (2015-05-01) ==

This is a regularly-scheduled feature release.

=== commands ===
 * annotate: add option to annotate working-directory files
 * annotate: always prepare ancestry context of base fctx (Bts:issue4600)
 * annotate: always adjust linkrev before walking down to parents (Bts:issue4623)
 * annotate: prepare ancestry context of workingfilectx
 * bookmarks: add incoming() to replace diff() for incoming bookmarks
 * bookmarks: add outgoing() to replace diff() for outgoing bookmarks
 * bookmarks: check @pathalias suffix before available @number for efficiency
 * bookmarks: enhance test of showing detail about incoming/outgoing bookmarks
 * bookmarks: prevent divergent bookmark from being updated unexpectedly
 * bookmarks: reuse @number bookmark, if it refers changeset referred remotely
 * bookmarks: rewrite comparing bookmarks in commands.summary() by compare()
 * bookmarks: show detailed status about incoming/outgoing bookmarks
 * clone: add progress support to hardlink clones (Bts:issue3059)
 * commands.import: accept a prefix option
 * commands.push: abort when revisions evaluate to empty set (BC)
 * commands: add ui.statuscopies config knob
 * debuginstall: expand the editor path before searching for it (Bts:issue4380)
 * files: split reusable implementation into cmdutil for subrepo support
 * files: use ctx object to access dirstate
 * graft: allow creating sibling grafts
 * graft: record intermediate grafts in extras
 * log: display closing-branch nodes as "_" (BC)
 * log: fix --follow null parent not to include revision 0
 * log: make -fr show complete history from the given revs (BC)
 * log: prefer 'wctx' over 'pctx' for working context
 * patch.internalpatch: accept a prefix parameter
 * patch.internalpatch: add a default value for prefix
 * patch: rename pathstrip to pathtransform
 * pull: print "pulling from foo" before accessing the other repo
 * push: acquire local 'wlock' if "pushback" is expected (BC) (Bts:issue4596)
 * resolve: silence warning of unknown pats for -l/--list (BC)
 * revert: evaluate filesets against working directory (Bts:issue4497)
 * revert: fix --interactive on local modification (Bts:issue4576)
 * revert: stop marking files clean after interactive revert (Bts:issue4592)
 * revert: accept just -I/-X without paths or -a/-i (Bts:issue4592)
 * revert: apply normallookup on reverted file if size isn't changed (Bts:issue4583)
 * revert: restore the ability to revert across case only renames (Bts:issue4481)
 * status: add relative directory help text (Bts:issue3835)

=== core ===
 * bundle2: capture transaction rollback message output (Bts:issue4614)
 * bundle2: disable ouput capture unless we use http (Bts:issue4613 Bts:issue4615)
 * changelog: fix readpending if no pending data exist (Bts:issue4609)
 * dirstate: fix order of initializing nf vs f
 * filelog: allow censored files to contain padding data
 * merge: run update hook after the last wlock release
 * pushkey: flush pending data before running a pre-pushkey hook (Bts:issue4607)
 * repoview: improve compute staticblockers perf
 * revlog: _addrevision creates full-replace deltas based on censored revisions
 * revlog: add "iscensored()" to revlog public API
 * revlog: addgroup checks if incoming deltas add censored revs, sets flag bit
 * revlog: in addgroup, reject ill-formed deltas based on censored nodes
 * revlog: make converting from inline to non-line work after a strip
 * revlog: special case expanding full-replacement deltas received by exchange
 * subrepo: don't write .hgsubstate lines with empty subrepo state (Bts:issue4622)
 * subrepo: update the help text to account for diff -I/-X gitsubrepo support
 * tags: establish a separate and shared cache of .hgtags filenodes
 * tags: change format of tags cache files
 * tags: have a different cache file per filter level
 * ui: disable revsetaliases in plain mode (BC)
 * util: add progress callback support to copyfiles
 * windows: make shellquote() quote any path containing '\' (Bts:issue4629)

=== extensions ===
 * color: be more conservative about setting ANSI mode on Windows (BC)
 * color: fix crash in cmd.exe
 * color: omit terminfo/win32 warning if non-interactive (Bts:issue4543)
 * color: support a different color mode when the pager is active
 * convert: adjust progress bar for octopus merges (Bts:issue4169)
 * histedit: add --edit-plan option to histedit
 * histedit: allow histedit --continue when not on a descendant (BC)
 * histedit: fix preventing strips during histedit
 * histedit: fix style of new error message
 * histedit: improve roll action integration with fold
 * histedit: fix rollup prompting for a commit message (Bts:issue4606)
 * largefiles: don't crash when cloning to a remote repo
 * largefiles: don't mangle filesets when fixing up the log matcher
 * largefiles: always consider updatelfiles 'checked' parameter set
 * largefiles: avoid infinite recursive call of openlfdirstate in overriderevert
 * largefiles: don't create chain of __contains__ calls
 * largefiles: don't prefix standin patterns with '.hglf' when logging
 * largefiles: don't warn when reverting a forgotten largefile
 * largefiles: extract and reuse 'standin' variable in overriderevert()
 * largefiles: for update -C, only update largefiles when necessary
 * largefiles: handle logging from outside the repo
 * largefiles: introduce lfutil.findstorepath()
 * largefiles: override cmdutil.revert() instead of comands.revert()
 * largefiles: report the source of copied/moved largefiles in status -C
 * largefiles: set the extension as enabled locally after a clone requiring it
 * largefiles: teach log to handle patterns
 * largefiles: update _subdirlfs() comment
 * largefiles: use common function to build content of .hg_archival.txt
 * largefiles: use lfutil.findstorepath() when verifying a local repo
 * largefiles: use the core file copy logic to validate the destination path
 * largefiles: use the share source as the primary local store (Bts:issue4471)
 * mq: avoid silent failure when single patch doesn't apply (Bts:issue4604)
 * rebase: don't forward "source" argument to rebase (Bts:issue4633)
 * rebase: restore bookmark state on abort
 * record: edit patch of newly added files (Bts:issue4304)
 * record: fix adding new file with record from within a subdir (Bts:issue4626)
 * record: fix record with change on moved file crashes (Bts:issue4619)
 * shelve: acquire lock in the right order
 * shelve: add interactive mode
 * shelve: add interactive mode command line option

=== hgweb ===
 * hgweb: resurrect <span> tag on diffline to fix rendering in monoblue style
 * hgweb: use introrev() for finding parents (Bts:issue4506)
 * json: implement {bookmarks} template
 * json: implement {branches} template
 * json: implement {changeset} template
 * json: implement {comparison} template
 * json: implement {fileannotate} template
 * json: implement {filediff} template
 * json: implement {helptopics} template
 * json: implement {help} template
 * json: implement {manifest} template
 * json: implement {shortlog} and {changelog} templates
 * json: implement {tags} template


=== unsorted ===
 * archive: change the default prefix to `''` from None
 * archive: look for first visible revision to build repo identity (Bts:issue4591)
 * bundle2-localpeer: properly propagate the server output on error (Bts:issue4594)
 * bundle2-wireproto: properly propagate the server output on error (Bts:issue4594)
 * changeset_printer: display p1rev:p1node with "+" suffix for workingctx
 * check-commit: be more picky about detection of wrong bug tag
 * check-commit: check capitalization in summary lines
 * churn: deprecate -t option in favour of -T
 * crecord: fix another underbar
 * crecord: fix underbar style for orig_stdout
 * devel-warn: add a prefix to all messages ("devel-warn: ")
 * dirs._addpath: don't mutate Python strings after exposing them (Bts:issue4589)
 * dispatch: consolidate formatting of !ParseErrors
 * dispatch: offer near-edit-distance suggestions for {file,rev}set functions
 * dispatch: offer suggestions of similar-named commands
 * extensions: support callbacks after another extension loads
 * get-with-headers: support parsing and pretty printing JSON
 * graphlog: do not bypass commands.log so that -fr works
 * graphlog: move comment and flag denoting revs might be unsorted
 * graphlog: remove too early return from getgraphlogrevs() for empty repo
 * lazymanifest: fix memory leak in lmiter_iterentriesnext() after 3d485727e45e
 * lazymanifest: fix pure hg iterkeys()
 * linkrev: fix issue with annotate of working copy
 * manifestv2: add support for reading new manifest format
 * manifestv2: add support for writing new manifest format
 * obsolete: avoid infinite loop from obs-cycle in divergence (Bts:issue4126)
 * record: add interactive option to the commit command
 * record: allow editing new files (Bts:issue4304)
 * record_curses: fix ui bug for newly added file
 * revbranchcache: add test for when the cache is not writable
 * revbranchcache: move out of branchmap onto localrepo
 * revbranchcache: populate cache incrementally
 * revbranchcache: store repo on the object
 * revbranchcache: write cache even during read operations
 * revrange: don't parse revset aliases as hash prefixes (Bts:issue4553)
 * rollback: clear resolve state (Bts:issue4593)
 * ssl: resolve symlink before checking for Apple python executable (Bts:issue4588)
 * ssl: set explicit symbol "!" to web.cacerts to disable SSL verification (BC)
 * strip: properly clear resolve state with --keep (Bts:issue4593)
 * subrepo: add 'cat' support for git subrepos
 * subrepo: add basic support to hgsubrepo for the files command
 * subrepo: add include/exclude support for diffing git subrepos
 * subrepo: add status support for ignored and clean files in git subrepos
 * subrepo: change arguments of abstractsubrepo.__init__ (API)
 * subrepos: support adding files in git subrepos
 * test-convert-git: show insane progress bar with octopus merge (Bts:issue4169)
 * test-histedit-edit.t: demonstrate qnew fails during a histedit (Bts:issue4366)
 * test-https: enable dummycert test only if Apple python is used (Bts:issue4500)
 * test-shelve: be more lenient about whitespace (Bts:issue4124)
 * tests: add test showing tags cache drops filtered heads (Bts:issue4550)
 * tests: handle deleted .hg directory (git 2.2.0 and higher) (Bts:issue4585)
 * trydiff: join filename with prefix only once
 * unbundle: acquire 'wlock' when processing bundle2 (BC) (Bts:issue4596)
 * webcommands: define a dict of available commands
 * webcommands: define web commands using a decorator

Release Notes

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

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

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

(See the archive for older versions)

1. Mercurial 3.7 (2016-2-1)

Regularly scheduled feature release. There's also an overview of new features available.

1.1. commands

  • merge: don't try to merge subrepos twice (issue4988)

  • pull: advance current active bookmark at pull --update correctly
  • templater: abort if infinite recursion detected while evaluation (issue4758)

  • annotate: add missing period to help
  • annotate: mention that -n is suppressed in help
  • backout: disable --merge with --no-commit (issue4874)

  • bookmark: deprecate 'bmstore.write' method
  • bookmarks: hoist getbkfile out of bmstore class
  • bookmarks: make _readactive safe when readlines raises ENOENT
  • branch: reword help text
  • clone: move bookmarks and checkouts before pull help
  • clonebundles: improve BUNDLESPEC documentation
  • clonebundles: remove advertisement of feature
  • commands.summary: switch to mergestate.read()
  • commands: inline definition of localrepo.parents() and drop the method (API)
  • commands: make backout acquire locks before processing
  • commands: make commit acquire locks before processing (issue4368)

  • commands: use context manager for opened bundle file
  • commandserver: drop tell() and seek() from channels (issue5049)

  • commandserver: reset state of progress bar per command
  • commit: add a way to return more information from the chunkselector
  • commit: add amend mode for commit -i
  • commit: add some help examples (issue4963)

  • commit: adjust the quoting in the examples to be Windows friendly
  • commit: fix rest syntax of examples
  • commit: make commit acquire store lock before processing for consistency
  • commit: preserve extra when amending with commit --amend
  • fileset: add missing() predicate (issue4925)

  • fileset: use set instead of list to mark predicates for efficiency (API)
  • graft: clarify in help that '-r' is not just optional
  • graft: copy extra (except branch) when copying changesets
  • graft: hook afterresolvedstates
  • graft: improve --continue abort message
  • help: fix quoting for bundle1 options
  • import: add word to help text
  • import: limit scope of msg in tryimportone
  • import: reorder help text
  • log: speed up single file log with hidden revs (issue4747)

  • log: add 'hg log' example for full hashes
  • log: help provide sort by date example
  • log: mention ordering
  • log: speed up hg log <file|folder>

  • merge.graft: add option to keep second parent
  • merge: add options to warn or ignore on colliding unknown files
  • merge: move almost all change/delete conflicts to resolve phase (BC) (API)
  • merge: refuse update/merge if there are unresolved conflicts (BC)
  • mergestate: raise structured exception for unsupported merge records
  • patch: disable nobinary when HGPLAIN=1
  • pull: make a single call to obsstore.add (issue5006)

  • pull: return 255 value on update failure (issue4948) (BC)

  • push: specify default-push and default as fallback paths
  • status: back out changeset 89f49813526c
  • status: change + back out == clean (API)
  • status: revert + flag-change == modified
  • summary: add troubles list to the output of hg summary
  • summary: mention graft
  • summary: print unstable, bumped and divergent as unconditionally plural
  • tags: mention --quiet switch in help (issue4920)

  • verify: add a hook that can let extensions manipulate file lists
  • verify: clean up weird error/warning lists
  • verify: get rid of some unnecessary local variables
  • verify: move checklog() onto class
  • verify: move exc() function onto class
  • verify: remove unreachable code to reraise KeyboardInterrupt

1.2. core

  • context: don't use util.cachefunc due to cycle creation (issue5043)

  • context: use a the nofsauditor when matching file in history (issue4749)

  • parsers: check results of PyInt_FromLong (issue4771)

  • repoview: fix corrupted hiddencache crash Mercurial (issue5042)

  • revlog: avoid string slice when decompressing u* chunks
  • revlog: clarify which revision is added to 'tested' when using cached delta
  • revlog: don't consider nullrev when choosing delta base
  • revlog: improve documentation
  • revlog: make calls to _isgooddelta() consistent
  • revlog: make clearcaches() more effective
  • revlog: return offset from _chunkraw()
  • revsetbenchmarks: support benchmarking changectx loading
  • ui: optionally ignore sub-options from configitems()
  • ui: support declaring path push urls as sub-options
  • util: disable floating point stat times (issue4836)

  • wireproto: config options to disable bundle1
  • wireproto: support disabling bundle1 only if repo is generaldelta

1.3. extensions

  • crecord: fix help bar display issue (issue5063)

  • histedit: add progress support
  • histedit: explain basics of histedit commands
  • histedit: pick an appropriate base changeset by default (BC)
  • largefiles: actions will now always have a file - drop check
  • largefiles: fall back to the original for change/delete conflicts
  • largefiles: fix commit of missing largefiles
  • largefiles: make prompt order deterministic
  • largefiles: specify where .orig files are kept
  • largefiles: use a context manager in _getfile
  • largefiles: use util.readfile in lfconvert
  • largefiles: use util.readfile in overrides
  • largefiles: fix an explicit largefile commit after a remove (issue4969)

  • largefiles: prevent committing a missing largefile
  • mq: check for reserved patch name with qimport -r (issue5033)

  • mq: let the user choose where .orig files are kept
  • rebase: add date parameter to concludenode function
  • rebase: better error message when rebased changes are all in destination
  • rebase: create a new variable to make the next patch more legible
  • rebase: hook afterresolvedstates
  • rebase: only clear rebase status after the rebase transaction has completed
  • rebase: pass date parameter to concludenode
  • rebase: prevent creating divergence
  • rebase: propagate extra dict from rebase source changeset
  • rebase: remove extra "if" from check of collapsing named branches
  • rebase: better way to detect non-detaching revisions (issue5044)

  • rebase: restore help for rebase w/o args (issue5059)

  • shelve: choose where .orig file locations are kept
  • shelve: execute checkunfinished inside wlock scope
  • shelve: hook afterresolvedstates
  • shelve: lowercase flag description
  • shelve: permit shelves to contain unknown files
  • shelve: remove redundant acquisition of wlock for sub commands of unshelve
  • shelve: switch to mergestate.read()
  • shelve: use a context manager for file I/O in listcmd
  • shelve: widen wlock scope of shelve for consistency while processing
  • shelve: widen wlock scope of unshelve for consistency while processing
  • unshelve: add -k as short form of --keep
  • unshelve: add support for custom merge tools
  • unshelve: shed spurious space

1.4. hgweb

  • hgweb: eliminate duck-typing to select hgweb or hgwebdir by command option
  • hgweb: load server settings from --web-conf (issue4699)

  • hgweb: make sure command options are set to all ui objects
  • hgweb: support rendering a sub-topic
  • hgweb: support rendering sub-topic indexes
  • hgweb: update canvas.width before dynamically redrawing graph (issue2683)

1.5. unsorted

  • addrevision: only use the incoming base if it is a good delta (issue4975)

  • backout: commit changeset by default (BC)
  • backout: fix --no-commit option (issue5054)

  • batchget: add support for backing up files
  • builddeb: add --distid option to specify Distributor ID
  • changegroup: introduce cg3, which has support for exchanging treemanifests
  • changelog: add a new method to get files modified by a changeset
  • checkunknownfiles: make control flow clearer
  • crecord: edit during hg crecord should preserve cursor position (issue5041)

  • debugignore: find out why a file is being ignored (issue4856)

  • demandimport: add support for PyPy

  • demandimport: don't enable when running under PyPy

  • destutil: use scmutil.revrange for desthistedit (issue5001)

  • diff: don't crash when merged-in addition was removed (issue4786)

  • discovery: properly filter changeset in 'peer.known' (issue4982)

  • dispatch: copy inferrepo attribute to alias commands
  • dispatch: report similar names consistently
  • dispatch: use print function
  • dispatch: use versiontuple()
  • dockerrpm: fix CentOS 5 RPMs (issue4977)

  • encoding: handle UTF-16 internal limit with fromutf8b (issue5031)

  • encoding: re-escape U+DCxx characters in toutf8b input (issue4927)

  • error: add a structured exception for unsupported merge records
  • extdiff: correctly handle deleted subrepositories (issue3153)

  • extdiff: use @command decorator to set up diff commands
  • filemerge: add a 'leave unresolved' option to change/delete prompts
  • filemerge: add a 'leave unresolved' option to regular prompts
  • filemerge: add support for change/delete conflicts to the ':local' merge tool
  • filemerge: add support for change/delete conflicts to the ':other' merge tool
  • filemerge: add support for change/delete conflicts to the ':prompt' tool
  • filemerge: default change/delete conflicts to 'leave unresolved' (BC)
  • filemerge: default regular prompts to 'leave unresolved' (BC)
  • graphlog: make node symbol templatable by ui.graphnodetemplate option
  • graphlog: rename glog function
  • hghave: support HGMODULEPOLICY for pure
  • localrepo: don't reference transaction from hook closure (issue5043)

  • lsprof: support PyPy (issue4573)

  • mac: fix percent-encoding of non-utf-8 characters (issue4999)

  • match: add option to return line and lineno from readpattern
  • mercurial: pass ui to extensions.load (issue5007)

  • mercurial: support loading modules from zipimporter
  • paths: do not process default-push as pushurl of default path (issue5000)

  • posix: work around "posix" systems without os.link available (issue4974)

  • run-tests: skip threading for a single test (issue5040)

  • scmutil: support background file closing
  • sslutil: fix reversed logic (issue5034)

  • streamclone: use backgroundfilecloser (issue4889)

  • streamclone: use context manager for writing files
  • streamclone: use read()
  • templates: make earlycommands and othercommands optional
  • templates: use canvaswidth instead of fixed width for canvas (issue2683)

  • test-extension: do not depend on demandimport (issue5012)

  • unionrepo: fix wrong rev being checked in iscensored (issue5024)

  • webcommands: get correct parents when comparing a removed file (issue4962)

  • webcommands: stop using ersatz if-else ternary operator for rename variable
  • webcommands: test that fctx is not None in filediff()
  • zeroconf: access repo on hgweb_mod properly (issue5036)

2. Mercurial 3.6.3 (2016-1-1)

This is a regularly-scheduled bugfix release.

  • cmdutil: use crecordmod.checkcurses
  • copyfile: add an optional parameter to copy other stat data
  • crecord: stop raising error.Abort if curses is not found (issue5008)

  • dirstate: don't write repo.currenttransaction to repo.dirstate if repo
  • dockerlib: short form for non-unique uid/gid for CentOS 5 compat (issue4977)

  • merge: while checking for unknown files don't follow symlinks (issue5027)

  • mq: use fallback patch name if no alpha-numeric in summary line (issue5025)

  • parsers: fix parse_dirstate to check len before unpacking header (issue4979)

  • paths: include #fragment again
  • push: restore old behavior of default-push (issue5000)

  • record: don't dereference symlinks while copying over stat data
  • revlog: seek to end of file before writing (issue4943)

  • ui: try to handle $$ more robustly in prompts (issue4970)

3. Mercurial 3.6.2 (2015-12-1)

This is a regularly-scheduled bugfix release.

  • docker: match more version of 'hg docker version' (issue4967)

  • localrepo.commit: check all files for resolve state (issue4972)

  • rebase: add returning value from pullrebase function
  • resolve: restore .orig only after merge is fully complete (issue4952)

  • share: wrap bmstore._writerepo for transaction sensitivity (issue4940)

  • tags: create new sortdict for performance reasons

4. Mercurial 3.6.1 (2015-11-9)

This is an out-of-cycle bugfix release for issues related to hooks.

  • changegroup: call 'prechangegroup' hook before setting up write delay
  • changegroup: fix the scope of a try finally
  • clonebundles: fix typo s/comand/command/
  • demandimport: fix level passed to loader of sub-modules
  • dirstate: fix filefoldmap incosistency on file delete
  • dockerlib: allow non-unique uid and gid of $DBUILDUSER (issue4657)

  • exchange: do not attempt clone bundle if local repo is non-empty (issue4932)

  • hooks: always include HG_PENDING
  • hooks: fix hooks not firing if prechangegroup was set (issue4934)

  • parsers: fix width of datalen variable in fm1readmarkers
  • posix: fix test-permissions regression
  • posix: retry on symlink race in checklink
  • templatefilters: try round-trip utf-8 conversion by json filter (issue4933)

  • wireproto: move clonebundles command from extension (issue4931)

  • wix: style-coal.css has been renamed

5. Mercurial 3.6 (2015-11-1)

Regularly scheduled feature release.

5.1. commands

  • bookmark: do not crash when active bookmark is forward and --date is used
  • bookmarks: don't deactivate on no-op update (issue4901)

  • clone: fix updaterev to update to latest branch changeset (issue4528)

  • clonebundles: support for seeding clones from pre-generated bundles
  • commit: abort when a committemplate is not changed (BC)
  • help: distinguish sections when multiple match (issue4802)

  • help: pass around ui to doc loader (API)
  • help: pass around ui to rewriter hooks (API)
  • merge: perform all premerges before any merges (BC)
  • merge: abort on file/directory case folding collisions (issue4892)

  • phases: return zero for no-op operations (issue4751) (BC)

  • resolve: perform all premerges before performing any file merges (BC)

5.2. core

  • cmdutil: make in-memory changes visible to external editor (issue4378)

  • cmdutil: stop tryimportone from using dirstateguard (BC)
  • context: don't hex encode all unknown 20 char revision specs (issue4890)

  • dirstate: batch calls to statfiles (issue4878)

  • parsers: fix infinite loop or out-of-bound read in fm1readmarkers (issue4888)

  • revlog: add an aggressivemergedelta option
  • revlog: change generaldelta delta parent heuristic
  • revset: do not fall through to revspec for literal: branch (issue4838)

  • revsets: makes follow() supports file patterns (issue4757) (BC)

  • templater: add new docheader/footer components for XML (issue4135)

  • templater: create string unescape helper (issue4798)

  • templater: do not pre-evaluate generator keyword at runsymbol (issue4868)

  • templater: introduce {latesttag()} function to match a pattern (issue4184)

  • templater: switch ctx of list expression to rev of revset() (BC)
  • ui: change default path fallback mechanism (issue4796)

  • util: use tuple accessor to get accurate st_mtime value (issue4836)

  • wireproto: properly parse false boolean args (BC)

5.3. extensions

  • histedit: use one editor when multiple folds happen in a row (issue3524) (BC)

  • largefiles: better handling of merge of largefiles that are not available
  • mq: generate patch names from first line of description
  • rebase: avoid losing branch commits with --keepbranch (issue4835)

  • rebase: fix warning about ignoring tool option on rebase continue (issue4698)

  • rebase: fix wrong 'no changes to commit' when using --collapse
  • rebase: on abort delete rebase state file no matter what
  • rebase: properly abort when destination is public (issue4896)

  • rebase: properly handle chains of markers with missing nodes
  • shelve: bundle using bundle2 if repository is general delta (issue4862)

  • shelve: delete shelve statefile on any exception during abort
  • shelve: restore shelved dirstate explicitly after aborting transaction
  • shelve: restore unshelved dirstate explicitly after aborting transaction

5.4. hgweb

  • hgweb: consume generator inside context manager (issue4756)

  • hgweb: ensure both foreground and background colors are specified (issue4872)

  • hgweb: overwrite cwd to resolve file patterns relative to repo (issue4568)

5.5. unsorted

  • builddeb: actually run make when building the deb (issue4778)

  • buildrpm: mkdir -p two needed directories (issue4779)

  • bundle2: don't try to recover from a GeneratorExit (issue4785)

  • bundle: extend the format of --type to support version and compression
  • debian: install bash completion as hg and not mercurial (issue4900)

  • debian: install hgk as part of mercurial-common (issue4829)

  • dispatch: error out on invalid -R path even if optionalrepo (issue4805) (BC)

  • dispatch: stop warning about EPIPE in --debug mode
  • graphmod: compute slow revset query once prior to reachableroots (issue4782)

  • highlight: add highlightfiles config option which takes a fileset (issue3005)

  • highlight: add option to prevent content-only based fallback
  • highlight: exit early on textual and unknown files (issue3005)

  • incoming: request a bundle2 when possible (BC)
  • localrepo: recreate phasecache if changelog was modified (issue4855)

  • lock: loop a finite number of times in trylock (issue4787)

  • mercurial: add debugextensions command (issue4676)

  • minirst: don't treat top level item as children of last item (issue4803)

  • notify: fix fromauthor setting for 'incoming' hook type (issue4194)

  • posix: shellquote do not require quoting for "+" (issue4818)

  • reachableroots: verify integer range of heads argument (issue4775)

  • revpair: restrict odd-range handling to top-level x:y expression (issue4774)

  • revrange: drop old-style parser in favor of revset (API)
  • test-merge-tools: include /usr/sbin in path for sysctl (issue4813)

  • traceback: allow providing a local support contact point
  • treemanifest: rework lazy-copying code (issue4840)

  • windows: read all global config files, not just the first (issue4491) (BC)

  • worker: restore old countcpus code (issue4869)

6. Mercurial 3.5.2 (2015-10-01)

Regularly-scheduled bugfix release.

  • hgweb: use latest mtime for caching tag (issue4814)

  • largefiles: restore archiving largefiles with hgweb (issue4859)

  • localrepo: recreate phasecache if changelog was modified (issue4855)

  • monoblue: fix page subtitle on help pages
  • unbundle: cleanly abort on unknown bundle2 feature

7. Mercurial 3.5.1 (2015-09-01)

Regularly-scheduled bugfix release.

  • convert: fix git copy file content conversions
  • filesets: ignore unit case in size() predicate for single value
  • help: fix typo familar -> familiar

  • help: fix typo in scripting documentation
  • hg: avoid auto sharing when the clone destination is remote
  • hgweb: fix trust of templates path (BC)
  • histedit: backout ebb5bb9bc32e
  • largefiles: ensure lfutil.getstandinmatcher() only matches standins
  • match: fix a case-only rename + explicit path commit on icasefs (issue4768)

  • parsers: fix memory leak in compute_phases_map_sets
  • rebase: lock the repo during the full rebase operation
  • revset: prevent crash caused by empty group expression while optimizing "and"
  • revset: prevent crash caused by empty group expression while optimizing "or"
  • strip: use the 'finally: tr.release' pattern during stripping
  • update: wlock the repo for the whole 'hg update' command
  • wix: avoid an abort with 'hg help -k foo'

8. Mercurial 3.5 (2015-07-31)

Regularly-scheduled feature release.

8.1. commands

  • bookmark: informs of failure to upgrade a bookmark
  • bookmark: remove the "touch changelog" hack
  • bookmarks: abort the whole push if bookmarks fails to update (BC)
  • bookmarks: change bookmark within a transaction
  • bookmarks: clear active bookmark on non-linear update
  • bookmarks: mark internal-only config option
  • bookmarks: mark internal-only option
  • bookmarks: name label for active bookmark correctly
  • bookmarks: remove unused updatecurrentbookmark function (API)
  • bookmarks: rename bookmarkcurrent to activebookmark (API)
  • bookmarks: rename current to active in variables and comments
  • bookmarks: rename readcurrent to readactive (API)
  • bookmarks: rename setcurrent to activate (API)
  • bookmarks: rename unsetcurrent to deactivate (API)
  • bookmarks: simplify iscurrent to isactivewdirparent (API)
  • bookmarks: use try/except/finally
  • branch: don't warn about branches if repository has multiple branches already
  • commands: use the optional badfn argument when building a matcher
  • commands: use try/except/finally
  • commit: add ui.allowemptycommit config option
  • commit: avoid match.files() in conditions
  • commit: improve --close-branch documentation
  • commit: mark internal-only option
  • commit: no longer allow empty commit with the 'force' argument (API)
  • config: give it an includepaths option for looking for config files
  • files: recurse into subrepos automatically with an explicit path
  • import-checker: add xargs like mode
  • import-checker: don't treat modules as relative one if not found
  • import-checker: exclude mercurial packages installed into the system path
  • import-checker: loop to get list of locally defined modules at first
  • import: cross-reference patch.fuzz option from 'hg help import'
  • import: cross-reference ui.patch option from 'hg help import'
  • import: use ui.allowemptycommit to allow empty commits
  • log: add a status template
  • patch: add 'extra' argument to makememctx
  • patch: add fuzz config flag (issue4697)

  • phases: abort the whole push if phases fail to update (BC)
  • phases: fix bug where native phase computation wasn't called
  • phases: really fix native phase computation
  • pull: allow a generic way to pass parameters to the pull operation
  • pull: document the race condition with bookmark name
  • pull: only list remote bookmarks if -B is used to populate pulled heads
  • pull: only prefetch bookmarks when using bundle1
  • pull: prevent race condition in bookmark update when using -B (issue4689)

  • pull: skip pulling remote bookmarks with bundle1 if a value already exist
  • pull: skip pulling remote bookmarks with bundle2 if a value already exists
  • push: catch and process PushkeyFailed error

  • push: make pushkey part advisory
  • push: only say we are trying to push obsmarkers when we actually try
  • revert: fix edition of newly added file during --interactive
  • summary: add a phase line (draft, secret) to the output
  • summary: move the parents phase marker to commit line (issue4688)

  • tags: support reading tags cache without populating
  • tags: support setting hgtags fnodes cache entries
  • tags: use try/except/finally
  • verify: check the subrepository references in .hgsubstate
  • verify: clarify misleading fncache message

8.2. core

  • dirstate: ensure mv source is marked deleted when walking icasefs (issue4760)

  • ignore: fix include: rules depending on current directory (issue4759)

  • parsers: fix buffer overflow by invalid parent revision read from revlog
  • revlog: add support for a callback whenever revisions are added
  • revlog: raise an exception earlier if an entry is too large (issue4675)

  • revset: fix a crash in parents() when 'wdir()' is in the set
  • revset: fix iteration over ordered addset composed of non-ordered operands
  • revset: gratuitous formating fix in keyword
  • revset: improves time complexity of 'roots(xxx)'
  • revset: port extra() to support keyword arguments
  • revset: reduce nesting of chained 'or' operations (issue4624)

  • revsetbenchmarks: fix argument parsing
  • revsetbenchmarks: improve error output in case of failure
  • revsetbenchmarks: improve revision printing
  • revsetbenchmarks: support combining variants with "+"
  • templater: do not reevaluate rawstring as template (BC)
  • templater: remove noop calls of parsestring(s, quoted=False) (API)
  • templater: rename parsestring() to unquotestring() (API)
  • templater: take any string literals as template, but not for rawstring (BC)
  • templater: tokenize decimal integer literal (issue4638) (BC)

  • wireproto: correctly escape batched args and responses (issue4739)

8.3. extensions

  • convert: add config option for disabling ancestor parent checks
  • convert: add support for specifying multiple revs
  • convert: allow customizing git remote prefix
  • convert: apply the appropriate phases to the destination (issue4165)

  • convert: fix bug with converting the same commit twice
  • convert: handle copies when converting from Perforce (issue4744)

  • convert: handle deleted files when converting from Perforce (issue4743)

  • convert: handle deleted files when converting from Perforce (issue4743)

  • convert: improve support for unusual .gitmodules
  • convert: support incremental conversion with hg subrepos
  • convert: support multiple specifed revs in git source
  • convert: use 'default' for specifying branch name in branchmap (issue4753)

  • convert: when converting from Perforce use original local encoding by default (BC)
  • extdiff: allow modifications in subrepos to be copied back
  • highlight: produce correct markup when there's a blank line just before EOF
  • histedit: abort rather than edit a public changeset (issue4704)

  • histedit: mark defaultrev option experimental
  • largefiles: allow the archiving of largefiles to be disabled
  • largefiles: avoid match.files() in conditions
  • largefiles: ignore hidden changesets with 'verify --large --lfa'
  • largefiles: pass in whole matcher to getstandinmatcher()
  • largefiles: restore the original converter class after lfconvert --to-normal
  • largefiles: use the convert extension for 'lfconvert --to-normal'
  • largefiles: use the optional badfn argument when building a matcher
  • largefiles: use try/except/finally
  • mq: ban \r and \n in patch names (issue4711)

  • mq: tweak config reading to make check-config happy
  • mq: use the optional badfn argument when building a matcher
  • mq: use ui.allowemptycommit to allow empty commits
  • rebase: add short -k option for --keep
  • rebase: remove extraneous blank at the end of file
  • shelve: allow --patch and --stat without --list for a single shelf
  • shelve: always backup shelves instead of deleting them
  • shelve: keep old backups if timestamp can't decide exact order of them
  • shelve: make maxbackup doc check-config friendly
  • shelve: omit incorrect 'commit' suggestion at 'hg shelve -i'
  • shelve: only keep the latest N shelve backups
  • shelve: refactor allowables to specify sets of valid operations
  • shelve: use try/except/finally
  • transplant: restore dirstate correctly at unexpected failure

8.4. hgweb

  • hgweb: don't dereference symbolic revision in paper & coal style (issue2296)

  • paper: show branch/tags/bookmarks when blaming (issue3559)

  • paper: show branch/tags/bookmarks when browsing (issue3559)

  • paper: show branch/tags/bookmarks when comparing (issue3559)

  • paper: show branch/tags/bookmarks when diffing (issue3559)

  • paper: show branch/tags/bookmarks when viewing (issue3559)

8.5. unsorted

  • archive: drop the leading '.' path component from the prefix (issue4634)

  • archive: fix changesincelatesttag with wdir()
  • archive: support 'wdir()'
  • bufferedinputpipe: remove N^2 computation of buffer length (issue4735)

  • bundle2: fix type of experimental option
  • bundle2: pull bookmark the old way if no bundle2 listkeys support (issue4701)

  • canonpath: fix infinite recursion
  • censor: make various path forms available like other Mercurial commands
  • censor: mark experimental option
  • changegroup: compute seen files as changesets are added (issue4750)

  • changelog: change input type of index_get_parents
  • changelog: fix bug in heads computation
  • changelog: move index_get_parents function up
  • changelog: update read pending documentation
  • check-commit: catch both patterns of double empty lines
  • check-commit: print limit when user has a too-long summary
  • check-config: add config option checker
  • crecord: fix issue when backgrounding editor would leave artefact
  • demandimport: alias builtin as builtins
  • demandimport: define a 'deactivated' context manager
  • demandimport: support importing builtins for Python 3
  • devel: rename 'all' to 'all-warnings' (BC)
  • dispatch: add support for python-flamegraph[0] profiling
  • dispatch: disable demandimport for the --debugger option
  • email: fix config default value inconsistency
  • exchange: support transferring .hgtags fnodes mapping
  • extdiff: add support for subrepos
  • filemerge: mark internal-only config option
  • formatter: add template support
  • formatter: mark developer options
  • generaldelta: mark experimental reordering option
  • hg: support for auto sharing stores when cloning
  • hgewb: disable progress when serving (issue4582)

  • hghave: allow adding customized features at runtime
  • http2: mark experimental and developer options
  • localrepo: eliminate requirements class variable (API)
  • localrepo: kill off sopener (API)
  • localrepo: mark format options
  • mail: pass ui to sslutil.wrapsocket() even if verifycert is off (issue4713)

  • match: add an optional constructor parameter for a bad() override
  • match: add optional warn argument
  • match: introduce boolean prefix() method
  • match: resolve filesets in subrepos for commands given the '-S' argument
  • parser: factor out function that parses right-hand side of prefix/infix ops
  • parser: fill invalid infix and suffix actions by None
  • parser: reorder infix/suffix handling to be similar to prefix/primary flow
  • parser: resolve ambiguity where both prefix and primary actions are defined
  • parser: separate actions for primary expression and prefix operator
  • parser: take suffix action if no infix action is defined
  • pathutil: hint if a path is root relative instead of cwd relative (issue4663)

  • phase: default to current revision if no rev is provided (issue4666)

  • profiler: mark developer-only config option
  • progress: deprecate the progress extension
  • progress: mark experimental option
  • progress: respect ui.quiet (issue4726)

  • revrange: build balanced tree of addsets from revisions (issue4565)

  • run-tests: introduce PYTHON3 boolean constant (issue4668)

  • run-tests: move all open-coded sys.version_info checks to PYTHON3 (issue4668)

  • run-tests: move unicode-to-bytes operations on paths to a helper (issue4667)

  • run-tests: prefer PYTHON3 constant to many version_info checks (issue4668)

  • run-tests: replace open-coded .decode()s on paths with a helper (issue4667)

  • scmutil: add an optional parameter to matcher factories for a bad() override
  • scmutil: use the optional badfn argument when building a matcher
  • setup.py: drop compatibility with Python 2.4 and 2.5 (BC)
  • setup: hide octal literals inside strings so they're portable (issue4554)

  • sshpeer: break "OutOfBandError" feature for ssh (BC)

  • sshpeer: run the ssh command unbuffered
  • ssl: prompt passphrase of client key file via ui.getpass() (issue4648)

  • subrepo: mark internal-only option
  • templatekw: display active bookmark more consistently (issue4552) (BC)

  • test-discovery: disable bundle2 for legacy test (issue4610)

  • bookmarks: abort the whole push if bookmarks fails to update (BC)
  • phases: abort the whole push if phases fail to update (BC)
  • templater: do not reevaluate rawstring as template (BC)
  • templater: take any string literals as template, but not for rawstring (BC)
  • templater: tokenize decimal integer literal (issue4638) (BC)

  • bookmarks: remove unused updatecurrentbookmark function (API)
  • bookmarks: rename bookmarkcurrent to activebookmark (API)
  • bookmarks: rename readcurrent to readactive (API)
  • bookmarks: rename setcurrent to activate (API)
  • bookmarks: rename unsetcurrent to deactivate (API)
  • bookmarks: simplify iscurrent to isactivewdirparent (API)
  • commit: no longer allow empty commit with the 'force' argument (API)
  • templater: remove noop calls of parsestring(s, quoted=False) (API)
  • templater: rename parsestring() to unquotestring() (API)

9. Mercurial 3.4.2 (2015-07-01)

  • changegroup: properly compute common base in changeggroupsubset (issue4736)

  • crecord: fix a typo introduced when moving crecord to core
  • crecord: fix three typos introduced while moving crecord into core
  • hgwebdir: avoid redundant repo and directory entries when 'web.name' is set
  • hgwebdir: don't allow the hidden parent of a subrepo to show as a directory
  • parsers: do not cache RevlogError type (issue4451)

  • pull: avoid race condition with 'hg pull --rev name --update' (issue4706)

  • templater: do not preprocess template string in "if" expression (issue4714)

  • templater: evaluate arguments passed to diff() appropriately
  • templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)

  • transplant: only pull the transplanted revision (issue4692)

  • transplant: update test to use hash for remote transplant

10. Mercurial 3.4.1 (2015-06-01)

This is a regularly-scheduled bugfix release.

  • archive: always use portable path component separators with subrepos
  • commands: hide formatter option as EXPERIMENTAL, not as DEPRECATED
  • context: don't complain about a matcher's subrepo paths in changectx.walk()
  • convert: properly pass null ids through .hgtags (issue4678)

  • extensions: clear aftercallbacks after execution (issue4646)

  • hgweb: bring back infinite scroll in shortlog of paper style
  • histedit: fix --continue when rules are finished
  • histedit: fix --edit-plan
  • histedit: fix keep during --continue
  • histedit: fix serializing of None backupfile
  • histedit: fix test-histedit-edit on vfat
  • localrepo: pass hook argument txnid to pretxnopen hooks
  • localrepo: rename hook argument from TXNID to txnid (BC)
  • localrepo: use correct argument name for pretxnclose hooks (BC)
  • match: explicitly naming a subrepo implies always() for the submatcher
  • mergecopies: avoid slowdown from linkrev adjustment (issue4680)

  • rebase: check that the bookmark is still valid when restoring (issue4669)

  • rebase: clear merge when aborting before any rebasing (issue4661)

  • revbranchcache: return uncached branchinfo for nullrev (issue4683)

  • revset: drop magic of fullreposet membership test (issue4682)

  • revset: id() called with 40-byte strings should give the same results as for short strings
  • revset: map postfix '%' to only() to optimize operand recursively (issue4670)

  • ssh: capture output with bundle2 again (issue4642)

  • templatekw: compare target context and its parent exactly (issue4690)

  • templater: do not process \-escapes at parsestring() (issue4290)

  • templater: fix crash by passing invalid object to date() function
  • templater: strictly parse leading backslashes of '{' (issue4569) (BC)

  • transaction: really fix _addbackupentry key usage (issue4684)

  • transaction: separate calculating TXNID from creating transaction object
  • transaction: use the proper variable in '_addbackupentry' (issue4684)

  • util.checkcase: don't abort on broken symlinks

11. Mercurial 3.4 (2015-05-01)

This is a regularly-scheduled feature release.

11.1. commands

  • annotate: add option to annotate working-directory files
  • annotate: always prepare ancestry context of base fctx (issue4600)

  • annotate: always adjust linkrev before walking down to parents (issue4623)

  • annotate: prepare ancestry context of workingfilectx
  • bookmarks: add incoming() to replace diff() for incoming bookmarks
  • bookmarks: add outgoing() to replace diff() for outgoing bookmarks
  • bookmarks: check @pathalias suffix before available @number for efficiency
  • bookmarks: enhance test of showing detail about incoming/outgoing bookmarks
  • bookmarks: prevent divergent bookmark from being updated unexpectedly
  • bookmarks: reuse @number bookmark, if it refers changeset referred remotely
  • bookmarks: rewrite comparing bookmarks in commands.summary() by compare()
  • bookmarks: show detailed status about incoming/outgoing bookmarks
  • clone: add progress support to hardlink clones (issue3059)

  • commands.import: accept a prefix option
  • commands.push: abort when revisions evaluate to empty set (BC)
  • commands: add ui.statuscopies config knob
  • debuginstall: expand the editor path before searching for it (issue4380)

  • files: split reusable implementation into cmdutil for subrepo support
  • files: use ctx object to access dirstate
  • graft: allow creating sibling grafts
  • graft: record intermediate grafts in extras
  • log: display closing-branch nodes as "_" (BC)
  • log: fix --follow null parent not to include revision 0
  • log: make -fr show complete history from the given revs (BC)
  • log: prefer 'wctx' over 'pctx' for working context
  • patch.internalpatch: accept a prefix parameter
  • patch.internalpatch: add a default value for prefix
  • patch: rename pathstrip to pathtransform
  • pull: print "pulling from foo" before accessing the other repo
  • push: acquire local 'wlock' if "pushback" is expected (BC) (issue4596)

  • resolve: silence warning of unknown pats for -l/--list (BC)
  • revert: evaluate filesets against working directory (issue4497)

  • revert: fix --interactive on local modification (issue4576)

  • revert: stop marking files clean after interactive revert (issue4592)

  • revert: accept just -I/-X without paths or -a/-i (issue4592)

  • revert: apply normallookup on reverted file if size isn't changed (issue4583)

  • revert: restore the ability to revert across case only renames (issue4481)

  • status: add relative directory help text (issue3835)

11.2. core

  • bundle2: capture transaction rollback message output (issue4614)

  • bundle2: disable ouput capture unless we use http (issue4613 issue4615)

  • changelog: fix readpending if no pending data exist (issue4609)

  • dirstate: fix order of initializing nf vs f
  • filelog: allow censored files to contain padding data
  • merge: run update hook after the last wlock release
  • pushkey: flush pending data before running a pre-pushkey hook (issue4607)

  • repoview: improve compute staticblockers perf
  • revlog: _addrevision creates full-replace deltas based on censored revisions
  • revlog: add "iscensored()" to revlog public API
  • revlog: addgroup checks if incoming deltas add censored revs, sets flag bit
  • revlog: in addgroup, reject ill-formed deltas based on censored nodes
  • revlog: make converting from inline to non-line work after a strip
  • revlog: special case expanding full-replacement deltas received by exchange
  • subrepo: don't write .hgsubstate lines with empty subrepo state (issue4622)

  • subrepo: update the help text to account for diff -I/-X gitsubrepo support
  • tags: establish a separate and shared cache of .hgtags filenodes
  • tags: change format of tags cache files
  • tags: have a different cache file per filter level
  • ui: disable revsetaliases in plain mode (BC)
  • util: add progress callback support to copyfiles
  • windows: make shellquote() quote any path containing '\' (issue4629)

11.3. extensions

  • color: be more conservative about setting ANSI mode on Windows (BC)
  • color: fix crash in cmd.exe
  • color: omit terminfo/win32 warning if non-interactive (issue4543)

  • color: support a different color mode when the pager is active
  • convert: adjust progress bar for octopus merges (issue4169)

  • histedit: add --edit-plan option to histedit
  • histedit: allow histedit --continue when not on a descendant (BC)
  • histedit: fix preventing strips during histedit
  • histedit: fix style of new error message
  • histedit: improve roll action integration with fold
  • histedit: fix rollup prompting for a commit message (issue4606)

  • largefiles: don't crash when cloning to a remote repo
  • largefiles: don't mangle filesets when fixing up the log matcher
  • largefiles: always consider updatelfiles 'checked' parameter set
  • largefiles: avoid infinite recursive call of openlfdirstate in overriderevert
  • largefiles: don't create chain of contains calls

  • largefiles: don't prefix standin patterns with '.hglf' when logging
  • largefiles: don't warn when reverting a forgotten largefile
  • largefiles: extract and reuse 'standin' variable in overriderevert()
  • largefiles: for update -C, only update largefiles when necessary
  • largefiles: handle logging from outside the repo
  • largefiles: introduce lfutil.findstorepath()
  • largefiles: override cmdutil.revert() instead of comands.revert()
  • largefiles: report the source of copied/moved largefiles in status -C
  • largefiles: set the extension as enabled locally after a clone requiring it
  • largefiles: teach log to handle patterns
  • largefiles: update _subdirlfs() comment
  • largefiles: use common function to build content of .hg_archival.txt
  • largefiles: use lfutil.findstorepath() when verifying a local repo
  • largefiles: use the core file copy logic to validate the destination path
  • largefiles: use the share source as the primary local store (issue4471)

  • mq: avoid silent failure when single patch doesn't apply (issue4604)

  • rebase: don't forward "source" argument to rebase (issue4633)

  • rebase: restore bookmark state on abort
  • record: edit patch of newly added files (issue4304)

  • record: fix adding new file with record from within a subdir (issue4626)

  • record: fix record with change on moved file crashes (issue4619)

  • shelve: acquire lock in the right order
  • shelve: add interactive mode
  • shelve: add interactive mode command line option

11.4. hgweb

  • hgweb: resurrect <span> tag on diffline to fix rendering in monoblue style

  • hgweb: use introrev() for finding parents (issue4506)

  • json: implement {bookmarks} template
  • json: implement {branches} template
  • json: implement {changeset} template
  • json: implement {comparison} template
  • json: implement {fileannotate} template
  • json: implement {filediff} template
  • json: implement {helptopics} template
  • json: implement {help} template
  • json: implement {manifest} template
  • json: implement {shortlog} and {changelog} templates
  • json: implement {tags} template

11.5. unsorted

  • archive: change the default prefix to '' from None

  • archive: look for first visible revision to build repo identity (issue4591)

  • bundle2-localpeer: properly propagate the server output on error (issue4594)

  • bundle2-wireproto: properly propagate the server output on error (issue4594)

  • changeset_printer: display p1rev:p1node with "+" suffix for workingctx
  • check-commit: be more picky about detection of wrong bug tag
  • check-commit: check capitalization in summary lines
  • churn: deprecate -t option in favour of -T
  • crecord: fix another underbar
  • crecord: fix underbar style for orig_stdout
  • devel-warn: add a prefix to all messages ("devel-warn: ")
  • dirs._addpath: don't mutate Python strings after exposing them (issue4589)

  • dispatch: consolidate formatting of ParseErrors

  • dispatch: offer near-edit-distance suggestions for {file,rev}set functions
  • dispatch: offer suggestions of similar-named commands
  • extensions: support callbacks after another extension loads
  • get-with-headers: support parsing and pretty printing JSON
  • graphlog: do not bypass commands.log so that -fr works
  • graphlog: move comment and flag denoting revs might be unsorted
  • graphlog: remove too early return from getgraphlogrevs() for empty repo
  • lazymanifest: fix memory leak in lmiter_iterentriesnext() after 3d485727e45e
  • lazymanifest: fix pure hg iterkeys()
  • linkrev: fix issue with annotate of working copy
  • manifestv2: add support for reading new manifest format
  • manifestv2: add support for writing new manifest format
  • obsolete: avoid infinite loop from obs-cycle in divergence (issue4126)

  • record: add interactive option to the commit command
  • record: allow editing new files (issue4304)

  • record_curses: fix ui bug for newly added file
  • revbranchcache: add test for when the cache is not writable
  • revbranchcache: move out of branchmap onto localrepo
  • revbranchcache: populate cache incrementally
  • revbranchcache: store repo on the object
  • revbranchcache: write cache even during read operations
  • revrange: don't parse revset aliases as hash prefixes (issue4553)

  • rollback: clear resolve state (issue4593)

  • ssl: resolve symlink before checking for Apple python executable (issue4588)

  • ssl: set explicit symbol "!" to web.cacerts to disable SSL verification (BC)
  • strip: properly clear resolve state with --keep (issue4593)

  • subrepo: add 'cat' support for git subrepos
  • subrepo: add basic support to hgsubrepo for the files command
  • subrepo: add include/exclude support for diffing git subrepos
  • subrepo: add status support for ignored and clean files in git subrepos
  • subrepo: change arguments of abstractsubrepo.init (API)

  • subrepos: support adding files in git subrepos
  • test-convert-git: show insane progress bar with octopus merge (issue4169)

  • test-histedit-edit.t: demonstrate qnew fails during a histedit (issue4366)

  • test-https: enable dummycert test only if Apple python is used (issue4500)

  • test-shelve: be more lenient about whitespace (issue4124)

  • tests: add test showing tags cache drops filtered heads (issue4550)

  • tests: handle deleted .hg directory (git 2.2.0 and higher) (issue4585)

  • trydiff: join filename with prefix only once
  • unbundle: acquire 'wlock' when processing bundle2 (BC) (issue4596)

  • webcommands: define a dict of available commands
  • webcommands: define web commands using a decorator

WhatsNew (last edited 2024-03-21 11:28:40 by RaphaelGomes)