Differences between revisions 287 and 289 (spanning 2 versions)
Revision 287 as of 2016-03-29 17:19:55
Size: 51339
Editor: mpm
Comment:
Revision 289 as of 2016-04-18 04:48:43
Size: 59864
Editor: Mathiasdm
Comment: Add link to overview of 3.8 features
Deletions are marked like this. Additions are marked like this.
Line 14: Line 14:
== Mercurial 3.8-rc (2016-4-16) ==

Preliminary release notes for 3.8.
There's also an [[Release3.8|overview of new features]] available.

=== commands ===
 * bookmarks: add 'hg push -B .' for pushing the active bookmark (Bts:issue4917)
 * bookmarks: avoid creating a nested repository during testing
 * branchmap: check node against changelog instead of repo
 * commands: add postincoming explicit brev argument (API)
 * commands: centralize code to update with extra care for non-file components
 * commit: block amend while histedit is in progress (Bts:issue4800)
 * fileset: replace predicate by filesetpredicate of registrar (API)
 * graft: suggest the correct tool to continue (not graft)
 * graft: use single quotes around command hint
 * merge: minimize conflicts when common base is not shown (Bts:issue4447)
 * pull: activate a bookmark matching with the destination of the update (BC)
 * pull: deactivate a bookmark not matching with the destination of the update
 * revert: makes interactive mode ask to forget added files (Bts:issue4936)
 * verify: check directory manifests
 * verify: check for orphaned dirlogs
 * verify: include "manifest" prefix in a few more places
 * verify: move cross-checking of changeset/manifest out of _crosscheckfiles()
 * verify: show progress while verifying dirlogs
 * verify: specify unit for ui.progress when checking files
 * verify: use similar language for missing manifest and file revisions

=== core ===
 * hook: report untrusted hooks as failure (Bts:issue5110) (BC)
 * revset: remove useless extpredicate class (API)
 * templater: load and expand aliases by template engine (API) (Bts:issue4842)
 * templater: separate function to create templater from map file (API)
 * ui: add prompt argument to write (Bts:issue5154) (API)

=== extensions ===
 * convert: keep converted hg parents that are outside convert.hg.revs (BC)
 * histedit: adds hint how to reorder changesets at editor (Bts:issue3766)
 * histedit: improve error when run on nodes with children (Bts:issue5056)
 * histedit: make histedit aware of obsolescense not stored in state (Bts:issue4800)
 * largefiles: add abstract methods in remotestore class
 * largefiles: don't access repo.changelog directly in getlfilestoupload
 * largefiles: don't explicitly list optional parameters that are not used
 * largefiles: drop partial support for not having a user cache
 * largefiles: introduce push --lfrev to control which revisions are pushed
 * largefiles: replace invocation of os.path module by vfs in lfcommands.py
 * largefiles: specify unit for ui.progress when operating on files
 * largefiles: use revisions as a ui.progress unit
 * rebase: 'hg pull --rebase' now update only if there was nothing to rebase
 * rebase: add potential divergent commit hashes to error message (Bts:issue5086)
 * rebase: adds storing collapse message (Bts:issue4792)
 * rebase: choose default destination the same way as 'hg merge' (BC)
 * rebase: explicitly test abort from ambiguous destination
 * rebase: fix crash when rebase aborts while rebasing obsolete revisions
 * rebase: mention help merge-tools in help
 * rebase: perform update through the 'update' command
 * rebase: remove experimental option from 'rebase' config section
 * rebase: respect checkunknown and checkignored in more cases
 * rebase: suggest the correct tool to continue (not rebase)
 * shelve: adds restoring newly created branch (Bts:issue5048) (BC)
 * shelve: changes getting opts values by get method
 * shelve: make non bare shelve not saving branch information in bundle
 * shelve: preserve newly created branch on non-bare shelve in wctx (BC)
 * shelve: suggest the correct tool to continue (not unshelve)

=== hgweb ===
 * hgweb: add option to convert encoding of graphdata()
 * hgweb: add parents to json-log (Bts:issue5074)
 * hgweb: generate last change date for an empty atom-bookmarks feed (Bts:issue5022)

=== unsorted ===
 * blackbox: optionally log event source
 * bugzilla: do not load style file if template is specified (BC)
 * bundle: move writebundle() from changegroup.py to bundle2.py (API)
 * bundle: warn when update to revision existing only in a bundle (Bts:issue5004)
 * bundlerepo: properly handle hidden linkrev in filelog (Bts:issue4945)
 * changelog: add class to represent parsed changelog revisions
 * changelog: avoid slicing raw data until needed
 * changelog: backed out changeset 1778770e1982
 * changelog: backed out changeset 86de91c56355
 * changelog: lazily parse date/extra field
 * changelog: lazily parse description
 * changelog: lazily parse files
 * changelog: lazily parse manifest node
 * changelog: lazily parse user
 * changelog: lazy decode description (API)
 * changelog: lazy decode user (API)
 * changelog: parse description last
 * chg: fallback to original hg for some unsupported commands or flags
 * chg: forward job control signals to worker process (Bts:issue5051)
 * chg: pass sensitive command line flags to server
 * chgserver: create new process group after fork (Bts:issue5051)
 * date: reallow negative timestamp, fix for Windows buggy gmtime() (Bts:issue2513)
 * debugrevlog: fix dumping manifest fails on empty first revision (Bts:issue5062)
 * demandimport: blacklist sqlalchemy.events as it has side effects (Bts:issue5085)
 * demandimport: enforce ignore list while processing modules in fromlist
 * destutil: choose non-closed branch head at first (BC)
 * dispatch: add wd parameter to _getlocal
 * dispatch: catch KeyboardInterrupt more broadly
 * dispatch: factor out command failure handling into a function
 * dispatch: flush ui before returning from dispatch
 * dispatch: make cmdalias forward command attributes to function
 * dispatch: make loading extra information from extension extensible
 * dispatch: show deprecation warning if command has no attributes (Bts:issue5137)
 * dispatch: store norepo/optionalrepo/inferrepo attributes in function (API)
 * dispatch: strip command line options like config file options
 * encoding: add option to escape non-ascii characters in JSON
 * graphlog: bring back color to node symbol template
 * graphmod: set default edge styles for ascii graphs (BC)
 * hg: perform update after pulling during clone with share (Bts:issue5103)
 * http: support sending hgargs via POST body instead of in GET or headers
 * localrepo: move new repo requirements into standalone function (API)
 * localrepo: support background closing for wwrite()
 * mail: retain hostname for sslutil.wrapsocket (Bts:issue5203)
 * match: rename "narrowmatcher" to "subdirmatcher" (API)
 * mpatch: un-nest the move() method
 * mpatch: unify mpatchError (Bts:issue5182)
 * notify: do not load style file if template is specified (BC)
 * record: deprecate the extension
 * registrar: add templatefilter to mark a function as template filter (API)
 * registrar: add templatefunc to mark a function as template function (API)
 * registrar: add templatekeyword to mark a function as template keyword (API)
 * registrar: remove useless base classes (API)
 * remove: add progress support
 * remove: fix --force option help description (Bts:issue5177)
 * remove: queue warnings until after status messages (Bts:issue5140) (API)
 * scmutil: support background closing for write()
 * serve: add chdir command for --daemon-postexec
 * serve: rename --daemon-pipefds to --daemon-postexec (BC)
 * sslutil: require a server hostname when wrapping sockets (API)
 * streamclone: specify unit for ui.progress when handling data
 * subrepo: disable localizations when calling Git (Bts:issue5176)
 * templatefilters: drop broken "jsonescape" from filters table (BC)
 * templatefilters: make json filter be byte-transparent (BC) (Bts:issue4926)
 * templatekw: switch ctx of list expression to rev of {parents} (BC)
 * test-debugextensions: passes with byte-compilation disabled (Bts:issue5147)
 * testing: expand Hypothesis tests with branch commands
 * tests: add test for "log -r wdir() -p" (Bts:issue4871)
 * tests: ensure that 'hg update' is disabled during histedit (Bts:issue3655)
 * tests: update test output for test written on stable branch (Bts:issue5104)
 * treemanifest: don't use cp -T, not supported on OS X
 * update: change default destination to tipmost descendant (Bts:issue4673) (BC)
 * update: check command line before modifying repo
 * version: verbose list internal and external extension source (Bts:issue4731)

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.8-rc (2016-4-16)

Preliminary release notes for 3.8. There's also an overview of new features available.

1.1. commands

  • bookmarks: add 'hg push -B .' for pushing the active bookmark (issue4917)

  • bookmarks: avoid creating a nested repository during testing
  • branchmap: check node against changelog instead of repo
  • commands: add postincoming explicit brev argument (API)
  • commands: centralize code to update with extra care for non-file components
  • commit: block amend while histedit is in progress (issue4800)

  • fileset: replace predicate by filesetpredicate of registrar (API)
  • graft: suggest the correct tool to continue (not graft)
  • graft: use single quotes around command hint
  • merge: minimize conflicts when common base is not shown (issue4447)

  • pull: activate a bookmark matching with the destination of the update (BC)
  • pull: deactivate a bookmark not matching with the destination of the update
  • revert: makes interactive mode ask to forget added files (issue4936)

  • verify: check directory manifests
  • verify: check for orphaned dirlogs
  • verify: include "manifest" prefix in a few more places
  • verify: move cross-checking of changeset/manifest out of _crosscheckfiles()
  • verify: show progress while verifying dirlogs
  • verify: specify unit for ui.progress when checking files
  • verify: use similar language for missing manifest and file revisions

1.2. core

  • hook: report untrusted hooks as failure (issue5110) (BC)

  • revset: remove useless extpredicate class (API)
  • templater: load and expand aliases by template engine (API) (issue4842)

  • templater: separate function to create templater from map file (API)
  • ui: add prompt argument to write (issue5154) (API)

1.3. extensions

  • convert: keep converted hg parents that are outside convert.hg.revs (BC)
  • histedit: adds hint how to reorder changesets at editor (issue3766)

  • histedit: improve error when run on nodes with children (issue5056)

  • histedit: make histedit aware of obsolescense not stored in state (issue4800)

  • largefiles: add abstract methods in remotestore class
  • largefiles: don't access repo.changelog directly in getlfilestoupload
  • largefiles: don't explicitly list optional parameters that are not used
  • largefiles: drop partial support for not having a user cache
  • largefiles: introduce push --lfrev to control which revisions are pushed
  • largefiles: replace invocation of os.path module by vfs in lfcommands.py
  • largefiles: specify unit for ui.progress when operating on files
  • largefiles: use revisions as a ui.progress unit
  • rebase: 'hg pull --rebase' now update only if there was nothing to rebase
  • rebase: add potential divergent commit hashes to error message (issue5086)

  • rebase: adds storing collapse message (issue4792)

  • rebase: choose default destination the same way as 'hg merge' (BC)
  • rebase: explicitly test abort from ambiguous destination
  • rebase: fix crash when rebase aborts while rebasing obsolete revisions
  • rebase: mention help merge-tools in help
  • rebase: perform update through the 'update' command
  • rebase: remove experimental option from 'rebase' config section
  • rebase: respect checkunknown and checkignored in more cases
  • rebase: suggest the correct tool to continue (not rebase)
  • shelve: adds restoring newly created branch (issue5048) (BC)

  • shelve: changes getting opts values by get method
  • shelve: make non bare shelve not saving branch information in bundle
  • shelve: preserve newly created branch on non-bare shelve in wctx (BC)
  • shelve: suggest the correct tool to continue (not unshelve)

1.4. hgweb

  • hgweb: add option to convert encoding of graphdata()
  • hgweb: add parents to json-log (issue5074)

  • hgweb: generate last change date for an empty atom-bookmarks feed (issue5022)

1.5. unsorted

  • blackbox: optionally log event source
  • bugzilla: do not load style file if template is specified (BC)
  • bundle: move writebundle() from changegroup.py to bundle2.py (API)
  • bundle: warn when update to revision existing only in a bundle (issue5004)

  • bundlerepo: properly handle hidden linkrev in filelog (issue4945)

  • changelog: add class to represent parsed changelog revisions
  • changelog: avoid slicing raw data until needed
  • changelog: backed out changeset 1778770e1982
  • changelog: backed out changeset 86de91c56355
  • changelog: lazily parse date/extra field
  • changelog: lazily parse description
  • changelog: lazily parse files
  • changelog: lazily parse manifest node
  • changelog: lazily parse user
  • changelog: lazy decode description (API)
  • changelog: lazy decode user (API)
  • changelog: parse description last
  • chg: fallback to original hg for some unsupported commands or flags
  • chg: forward job control signals to worker process (issue5051)

  • chg: pass sensitive command line flags to server
  • chgserver: create new process group after fork (issue5051)

  • date: reallow negative timestamp, fix for Windows buggy gmtime() (issue2513)

  • debugrevlog: fix dumping manifest fails on empty first revision (issue5062)

  • demandimport: blacklist sqlalchemy.events as it has side effects (issue5085)

  • demandimport: enforce ignore list while processing modules in fromlist
  • destutil: choose non-closed branch head at first (BC)
  • dispatch: add wd parameter to _getlocal
  • dispatch: catch KeyboardInterrupt more broadly

  • dispatch: factor out command failure handling into a function
  • dispatch: flush ui before returning from dispatch
  • dispatch: make cmdalias forward command attributes to function
  • dispatch: make loading extra information from extension extensible
  • dispatch: show deprecation warning if command has no attributes (issue5137)

  • dispatch: store norepo/optionalrepo/inferrepo attributes in function (API)
  • dispatch: strip command line options like config file options
  • encoding: add option to escape non-ascii characters in JSON
  • graphlog: bring back color to node symbol template
  • graphmod: set default edge styles for ascii graphs (BC)
  • hg: perform update after pulling during clone with share (issue5103)

  • http: support sending hgargs via POST body instead of in GET or headers
  • localrepo: move new repo requirements into standalone function (API)
  • localrepo: support background closing for wwrite()
  • mail: retain hostname for sslutil.wrapsocket (issue5203)

  • match: rename "narrowmatcher" to "subdirmatcher" (API)
  • mpatch: un-nest the move() method
  • mpatch: unify mpatchError (issue5182)

  • notify: do not load style file if template is specified (BC)
  • record: deprecate the extension
  • registrar: add templatefilter to mark a function as template filter (API)
  • registrar: add templatefunc to mark a function as template function (API)
  • registrar: add templatekeyword to mark a function as template keyword (API)
  • registrar: remove useless base classes (API)
  • remove: add progress support
  • remove: fix --force option help description (issue5177)

  • remove: queue warnings until after status messages (issue5140) (API)

  • scmutil: support background closing for write()
  • serve: add chdir command for --daemon-postexec
  • serve: rename --daemon-pipefds to --daemon-postexec (BC)
  • sslutil: require a server hostname when wrapping sockets (API)
  • streamclone: specify unit for ui.progress when handling data
  • subrepo: disable localizations when calling Git (issue5176)

  • templatefilters: drop broken "jsonescape" from filters table (BC)
  • templatefilters: make json filter be byte-transparent (BC) (issue4926)

  • templatekw: switch ctx of list expression to rev of {parents} (BC)
  • test-debugextensions: passes with byte-compilation disabled (issue5147)

  • testing: expand Hypothesis tests with branch commands
  • tests: add test for "log -r wdir() -p" (issue4871)

  • tests: ensure that 'hg update' is disabled during histedit (issue3655)

  • tests: update test output for test written on stable branch (issue5104)

  • treemanifest: don't use cp -T, not supported on OS X
  • update: change default destination to tipmost descendant (issue4673) (BC)

  • update: check command line before modifying repo
  • version: verbose list internal and external extension source (issue4731)

2. Mercurial 3.7.3 (2016-3-29)

This is an out of cycle release to address three security issues:

CVE-2016-3630 Mercurial: remote code execution in binary delta decoding

  • Mercurial prior to 3.7.3 contained two bounds-checking errors in its binary delta decoder that may be exploitable via clone, push, or pull.

CVE-2016-3068 Mercurial: arbitrary code execution with Git subrepos

  • Mercurial prior to 3.7.3 allowed URLs for Git subrepos that could result in arbitrary code execution on clone. This is a further side-effect of Git CVE-2015-7545. Reported by Blake Burkhart.

CVE-2016-3069 Mercurial: arbitrary code execution when converting Git repos

  • Mercurial prior to 3.7.3 allowed arbitrary code execution when converting Git repos with hostile names. This could affect automated conversion services. Reported by Blake Burkhart.
  • bdiff: (pure) support array.array arrays (issue5130)

  • convert: add new, non-clowny interface for shelling out to git (SEC)
  • convert: dead code removal - old git calling functions (SEC)
  • convert: rewrite calls to Git to use the new shelling mechanism (SEC)
  • convert: rewrite gitpipe to use common.commandline (SEC)
  • convert: test for shell injection in git calls (SEC)
  • files: don't recurse into subrepos without a path or -S (issue5127)

  • hg: perform update after pulling during clone with share (issue5103)

  • mq: restrict generated patch name to 75 characters (issue5117)

  • obsolete: fix n^2 marker computation behavior
  • parsers: detect short records (SEC)
  • parsers: fix list sizing rounding error (SEC)
  • streamclone: fix error when store files grow while stream cloning
  • subrepo: adapt to git's recent renames-by-default
  • subrepo: set GIT_ALLOW_PROTOCOL to limit git clone protocols (SEC)

3. Mercurial 3.7.2 (2016-3-1)

This is a regularly-scheduled bugfix release.

  • bundlerepo: properly handle hidden linkrev in filelog (issue4945)

  • bundlerepo: properly handle hidden linkrev in manifestlog (issue4945)

  • demandimport: add _imp to ignore list
  • doc: correct example concerning "hg purge" alias in man page "hgrc.5"
  • doc: remove deprecated option from synopsis of command help
  • fileset: fix copy/paste in eol() error message
  • help: fix typo in backgroundclose documentation
  • help: hg.intevation.de is new primary name of hg.intevation.de (and new cert)
  • help: update template examples to use reST literal syntax
  • hg: obtain lock when creating share from pooled repo (issue5104)

  • log: fix order of revisions filtered by multiple OR options (issue5100)

  • rebase: update working directory when aborting (issue5084)

  • revert: properly revert to ancestor of p2 during merge (issue5052)

  • revset: flatten chained 'list' operations (aka function args) (issue5072)

  • setup: avoid procedure related to hg.exe at setup.py --pure
  • ui: fix crash by non-interactive prompt echo for user name
  • unionrepo: properly handle hidden linkrev in revlog (issue5070)

  • zeroconf: forward all arguments passed to ui.configitems() wrapper

4. Mercurial 3.7.1 (2016-2-3)

This addresses an urgent regression in compilation on Solaris and metadata handling for conversions.

  • amend: don't preserve most extra fields
  • graft: don't preserve most extra fields
  • histedit: fix typo in documentation
  • osutil: disable compilation of recvfds() on unsupported platforms
  • osutil: do not abort loading pure module just because libc has no recvmsg()
  • rebase: backout changeset 986d04b9fedd
  • rebase: backout changeset d755a9531fce
  • rebase: don't preserve most extra fields

5. Mercurial 3.7 (2016-2-1)

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

5.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 crecord 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

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

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

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

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

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

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

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

9. Mercurial 3.6 (2015-11-1)

Regularly scheduled feature release.

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

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

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

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

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

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

11. 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'

12. Mercurial 3.5 (2015-07-31)

Regularly-scheduled feature release.

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

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

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

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

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

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

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

15. Mercurial 3.4 (2015-05-01)

This is a regularly-scheduled feature release.

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

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

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

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

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