Opened 7 years ago
Closed 7 years ago
#7420 closed enhancement (fixed)
|Reported by:||Fernando de Oliveira||Owned by:||Fernando de Oliveira|
overview of new features (full overview is available on WhatsNew, further below)
Mercurial 3.7 release Features • Generaldelta: the original Mercurial compression format had an inefficient way of storing history in very branchy repositories. Generaldelta addresses this weakness. As a result, depending on the repository, this can improve the size of the history up to a factor of 10. Mercurial 1.9 was the first release to support generaldelta (behind a feature flag), but Mercurial 3.7 also allows pulling a mixture of non-generaldelta and generaldelta history without having to recompute everything, which avoids overloading servers. As a result, generaldelta is now enabled by default. You can convert a repository to generaldelta using: hg clone -U --config format.generaldelta=1 --pull originalrepo \ generaldeltarepo • Clonebundles: this is an server-side extension. It allows using a pre-generated bundle for an initial Mercurial clone. Clients will automatically use clonebundles if a server advertises them. Clonebundles allows much faster initial clones and reduces the load on a central server significantly. Mercurial 3.6 was the first version to include experimental clonebundles support, it's now been marked non-experimental. You can find out more using: hg help clonebundles. • Filesets now support 'missing()', to specify all files missing according to hg status. • Interactive committing (hg commit -i) and amending (hg commit --amend) can now be used together. • Merging can now handle collisions between untracked and tracked files, configurable according to the config option merge.checkunknown. • Default 'histedit' destination: it's now possible to run hg histedit without specifying a base revision. Mercurial will try to determine an appropriate base automatically. The revset used for this is "reverse(only(.) and not public() and not ::merge())", which specifies the first ancestor of the current changeset that is not public and does not have any descendants that are merges. • The '*.orig' files created by revert can now be stored in a different location, specified by the config option ui.origbackuppath. • hg shelve now supports storing untracked files. • hg unshelve now supports using a custom merge tool. • hg backout now commits by default if no conflicts were encountered. • hgweb now supports rendering sub-topics. • Server operators can now limit interaction with legacy clients speaking an outdated wire protocol. This is useful for preventing excessive CPU use when the server is using generaldelta repositories. See the various bundle1 options in hg help config.server. • Python wheel packages are now available for Windows on PyPI • [paths] entries can now define a separate URL for pushes. See hg help config.paths for more. Improvements This release includes many improvements, including (but not limited to): • performance improvements (speedup for 'hg log <file/folder>') • many documentation improvements (clarification, additional examples (see hg help <command> --verbose), ...) • improved PyPy support • hg clone --uncompressed is now 3-4x faster on Windows. See the backgroundclose* options in hg help config.worker for more. A full overview is available on WhatsNew.
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). ... 1. Mercurial 3.7 (2016-2-1) Release candidate and preliminary release notes for the upcoming 3.7 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)
Change History (2)
comment:1 by , 7 years ago
|Status:||new → assigned|
comment:2 by , 7 years ago
|Status:||assigned → closed|
Note: See TracTickets for help on using tickets.
Fixed at r16899.