2772
Comment:
|
68936
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
Changes from 0.6 to 0.7: {{{ core greatly improved merge logic improved copy/rename support (still experimental) automatic binary file handling generic file filtering support support for user-defined hooks (aka triggers) support for local tags and finding branches with tags numerous performance improvements command line fewer long, confusing hashes to deal with new commands: clone, revert, incoming/outgoing, bundle/unbundle, grep, rename more powerful path handling with most commands improved push and pull support support for plug-in extensions much improved exception handling and debugging support many new command options and settings web interface more conformant and compatible HTML output built-in RSS feeds fast multiple keyword search easy to set up multiple repository interface configurable support for downloading tarballs and zip files improved configurability IPv6 support documentation improved built-in help and man pages a greatly expanded wiki tutorials in multiple languages portability full support for Windows, including hardlinking and file filtering should easily compile and install on any modern UNIX binary packages available for many systems extras powerful bash completion support Emacs integration updated hgk and more expanded test suite numerous bug fixes and cleanups }}} Upgrade notes: {{{ Mercurial 0.6c introduced a layout change that affects a small number of repositories. To avoid potential future name collisions, repositories containing directory names ending in ".i", ".d", or ".hg" (eg: etc/init.d/foo) need escaping. If you have a repository containing such directories, it can be updated with the following UNIX command: find .hg -type d -name "*.[di]" -exec echo mv {} {}.hg ";" As of 0.7, hardlink cloning is now supported on Windows with NTFS and ActiveState Python. Because old versions cannot properly determine the link count of hardlinked files, using old versions of Mercurial on a new repository containing hardlinks may be dangerous. }}} Changes from 0.6c to 0.7: {{{ core improved merge logic improved copy/rename support (still experimental) automatic binary file handling generic file filtering support various performance improvements command line new bundle/unbundle commands for exchanging native updates more natural support for remove, copy, and rename faster, more powerful log command new grep command for searching entire history support for plug-in extensions improved exception handling and debugging facilities hgweb optional downloading of tarballs and zip files Windows support hardlinking support newline conversion through file filtering contrib updated hgk }}} |
#pragma section-numbers 2 ## notes that are older than 3 major releases should be moved to WhatsNew/Archive = Release Notes = Features and bugfixes in our latest releases. Please see the [[Download]] page for links to source and binaries. Note that Mercurial follows a time-based release plan with major releases every three months and minor (bugfix) releases on the first of every month (see TimeBasedReleasePlan). {i} Be sure to read the [[UpgradeNotes|upgrade notes]] when [[UpgradingMercurial|upgrading]]. <<TableOfContents(2)>> (See the [[WhatsNew/Archive|archive]] for older versions) == Mercurial 3.6.2 (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 == Mercurial 3.3.3 (2015-04-01) == This is a regularly-scheduled bugfix release. * adjustlinkrev: handle 'None' value as source * adjustlinkrev: prepare source revs for ancestry only once * amend: check for directory renames for both merge parents (Bts:issue4516) * annotate: reuse ancestry context when adjusting linkrev (Bts:issue4532) * dirstate: don't require exact case when adding dirs on icasefs (Bts:issue4578) * dirstate: make sure rootdir ends with directory separator (Bts:issue4557) * filemerge: clean up language in mergemarkertemplate help * forget: cleanup the output for an inexact case match on icasefs * hgweb: prevent loading style map from directories other than specified paths * mergecopies: reuse ancestry context when traversing file history (Bts:issue4537) * templates: fix "log -q" output of default style * templates: fix "log -q" output of phases style * win32: 'raise ctypes.!WinError' -> 'raise ctypes.!WinError()' == Mercurial 3.3.2 (2015-03-02) == An unscheduled bugfix release to fix the fix. * transaction: really disable hardlink backups (Bts:issue4546) == Mercurial 3.3.1 (2015-03-02) == This is a regularly scheduled bugfix release. It fixes a significant regression with transactions on Windows network shares. * dispatch: work around !UnicodeDecodeError caused by SSLError of Python 2.7.9 * hgweb: recreate old DOM structure for css in monoblue style * largefiles: access to specific fields only if largefiles enabled (Bts:issue4547) * log: fix json-formatted output when file copies are listed (Bts:issue4523) * repoview: invalidate cached changelog if _delayed changes (Bts:issue4549) * revisionbranchcache: fall back to slow path if starting readonly (Bts:issue4531) * revset: mask specific names for named() predicate * shellquote: fix missing quotes for empty string * templatekw: fix {join(bookmarks, sep)} to always show associated bookmarks * transaction: disable hardlink backups (Bts:issue4546) == Mercurial 3.3 (2015-02-01) == This is a regularly scheduled feature release with over 800 changes. === commands === * add: add back forgotten files even when not matching exactly (BC) * addremove: add back forgotten files (BC) * addremove: add support for the -S flag * addremove: print relative paths when called with -I/-X (BC) * addremove: support addremove with explicit paths in subrepos * backout: add --commit option * commit: abort if --addremove is specified, but fails * commit: remove reverse search for copy source when not in parent (Bts:issue4476) * commit: propagate --addremove to subrepos if -S is specified (Bts:issue3759) * graft: show more useful status information while grafting === core === * bundles: do not overwrite existing backup bundles (BC) * osx: patch .pax.gz files in pkg bundles so they extract as root (Bts:issue4081) * revset: handle hidden linkrev for file missing for head (Bts:issue4490) * revset: allow rev(-1) to indicate null revision (BC) * revset: fix ancestors(null) to include null revision (Bts:issue4512) * subrepo: don't abort in add when non-hg subrepos are present (Bts:issue4513) * cmdserver: use given streams as pipe channels like other commands * extensions: only check compatibility against major and minor versions (BC) * https: support tls sni (server name indication) for https urls (Bts:issue3090) * ignore: resolve ignore files relative to repo root (Bts:issue4473) (BC) * linkrev: handle filtered linkrev with no visible children (Bts:issue4307) * linkrev: also adjust linkrev when bootstrapping annotate (Bts:issue4305) * linkrev: use the right manifest content when adjusting linrev (Bts:issue4499) * memctx: calculate manifest correctly with newly-removed files (Bts:issue4470) * memctx: fix manifest for removed files (Bts:issue4470) * obsstore: disable garbage collection during initialization (Bts:issue4456) * subrepo: support remove with explicit paths in subrepos * subrepo: add full revert support for git subrepos * subrepo: add partial diff support for git subrepos * subrepo: add status support for ignored files in git subrepos * win32: remove Mercurial.ini file from Inno Setup installer (Bts:issue4435) === hgweb === * hgweb: allow viewing diffs against p1 or p2 for merge commits (Bts:issue3904) === extensions === * color: add support for colorizing git subrepo diffs * color: add missing 'dim' in _effects * convert: on svn failure, note libsvn version (Bts:issue4043) * convert: replace revision references in messages if they are >= short hashes * convert: handle !LookupError in mercurial_source.lookuprev() * extdiff: reintroduce backward compatibility with manual quoting of parameters * histedit: add a test to show that issue4251 is fixed (Bts:issue4251) * largefiles: fix commit of a directory with no largefile changes (Bts:issue4330) * largefiles: use 'default' path for pulling largefiles, not 'default-push' * largefiles: enable subrepo support for add, forget, remove * largefiles: show progress when checking standin hashes in outgoing changesets * mq: smarter handling of plain headers * patchbomb: don't honor whitespace and format-changing diffopts (BC) * rebase: show more useful status information while rebasing * rebase: ensure rebase revision remains visible (Bts:issue4504) * extdiff: avoid unexpected quoting arguments for external tools (Bts:issue4463) * highlight: ignore Unicode's extra linebreaks (Bts:issue4291) * record: don't honor format-changing diffopts (Bts:issue4459) * share: add option to share bookmarks * transplant: properly skip empty changeset (Bts:issue4423) == Mercurial 3.2.4 (2015-01-01) == This is a regularly-scheduled bugfix release. * demandimport: blacklist distutils.msvc9compiler (Bts:issue4475) * largefiles: backout f72d73937853 - linear updates handle m -> a differently * largefiles: fix a spurious missing file warning with 'remove -A' (Bts:issue4053) * largefiles: fix a spurious missing file warning with forget (Bts:issue4053) * largefiles: introduce the 'composelargefilematcher()' method * largefiles: mark lfile as added in lfdirstate when the standin is added * sshpeer: more thorough shell quoting == Mercurial 3.2.3 (2014-12-18) == This is an unscheduled bugfix release containing two security fixes for issues we uncovered in both Git and Mercurial for CVE-2014-9390. Users on Mac and Windows are encouraged to upgrade. * context: stop setting None for modified or added nodes * darwin: omit ignorable codepoints when normcase()ing a file path * encoding: add hfsignoreclean to clean out HFS-ignored characters * largefiles: don't actually remove largefiles in an addremove dry run * log: fix log -f slow path to actually follow history * log: fix log revset instability * manifest: disallow setting the node id of an entry to None * pathauditor: check for Windows shortname aliases * pathauditor: check for codepoints ignored on OS X * rebase: ignore negative state when updating back to original wc parent * update: add tests for untracked local file * update: don't overwrite untracked ignored files on update == Mercurial 3.2.2 (2014-12-01) == This is a regularly-scheduled bugfix release. * changegroup: fix file linkrevs during reorders (Bts:issue4462) * hgweb: send proper HTTP response after uncaught exception * largefiles: avoid exec-bit examination on the platforms unaware of it * largefiles: don't show largefile/normal prompts if one side is unchanged * manifest: fix a bug where working copy file 'add' mark was buggy * merge: be precise about what merged into what in short desc * merge: before cd/dc prompt, check that changed side really changed * mq: fix update of headers that occur in the "wrong" order * mq: introduce insertplainheader - same naive implementation as before * mq: when adding headers in plain mode, separate them from message (Bts:issue4453) * mq: when setting message in plain mode, separate it from header (Bts:issue4453) * push: stop independent usage of bundle2 in syncphase (Bts:issue4454) * pushkey: gracefully handle prepushkey hook failure (Bts:issue4455) * rename: properly report removed and added file as modified (Bts:issue4458) * revert: look for copy information for all local modifications * revset: fix first and last for generatorset (Bts:issue4465) * templates: fix broken "less" & "more" links in paper style (Bts:issue4460) == Mercurial 3.2.1 (2014-11-11) == This is an unscheduled release to address regressions in discovery, rebase, and bookmarks. * bookmarks: fix formatting of exchange message (Bts:issue4439) * changegroup: don't store unused value on fnodes (Bts:issue4443) * convert: use git diff-tree -Cn% instead of --find-copies=n% for older git * discovery: indices between sample and yesno must match (Bts:issue4438) * discovery: limit 'all local heads known remotely' to real 'all' (Bts:issue4438) * extdiff: quote user-supplied options passed to shell * hgweb: fix a crash when using web.archivesubrepos * mail: actually use the verifycert config value * rebase: fix rebase with no common ancestors (Bts:issue4446) * serve: correct meta variable of --daemon-pipefds option * templater: don't overwrite the keyword mapping in runsymbol() (Bts:issue4362) == Mercurial 3.2 (2014-11-01) == This is a quarterly feature release. === commands === * amend: abort early if no username is configured with evolve enabled (Bts:issue4211) * amend: fix amending rename commit with diverged topologies (Bts:issue4405) * annotate: rewrite long short-circuit statement by if-elif-else * bookmark: make the search for divergent names more robust * bookmarks: allow pushkey if new equals current * bookmarks: explicitly track identical bookmarks * bookmarks: fix divergent bookmark path normalization * bookmarks: inform transaction-related hooks that some bookmarks were moved * branches: include active, closed and current flags in template output * clone: copy '.hg/bookmarks' during copy clone * clone: explicitly push bookmarks when cloning from local to remote * clone: fix copying bookmarks in uncompressed clones (Bts:issue4430) * clone: for local clones, copy branchcache from the right location (Bts:issue4286) * clone: for local clones, copy over filtered branchcaches as well (Bts:issue4286) * clone: properly mark branches closed with --uncompressed (Bts:issue4428) * clone: provide sample username = config entry in .hg/hgrc (Bts:issue4359) * commit: correctly check commit mutability during commit --amend * commit: add customizable committemplate config * config: give more fine-tuned sample hgrcs to this command * config: highlight parse error caused by leading spaces (Bts:issue3214) * files: add new command unifying locate and manifest functionality * graft: allow regrafting ancestors with --force (Bts:issue3220) * graft: make --force apply across continues (Bts:issue3220) * help: document that default hgweb style is called paper (Bts:issue4373) * help: update help for hgweb template and style (Bts:issue4373) * import: let --exact 'work' with --no-commit (Bts:issue4376) * locate: deprecate in favor of files * log: allow patterns with -f * log: do not hide the public phase in debug mode (BC) * log: rewrite default template to use labels (Bts:issue2866) * log: show phase in hg log -v with the phase template * merge-tools: add a 'premerge=keep-merge3' config option * merge: use bid merge by default (BC) * merge: support three labels when using conflict markers * parents: deprecate the parents commands * pull: perform bookmark updates in the transaction * push: update bookmarks within the remote lock * push: wrap local phase movement in a transaction * pushbookmark: do not attempt to update bookmarks if the push failed (BC) * status: make 'hg status --rev' faster when there are deleted files * tag: properly abort if an unknown or ignored .hgtags is present === core === * alias: expand "$@" as list of parameters quoted individually (BC) (Bts:issue4200) * dirstate: add exception when calling setparent without begin/end (API) * dirstate: wrap setparent calls with begin/endparentchange (Bts:issue4353) * hook: protect commit hooks against stripping of temporary commit (Bts:issue4422) * i18n: detect UI language without POSIX-style locale variable on Windows (BC) * localrepo: remove the 'pull' method (API) * localrepo: remove the 'push' method (API) * posix: implement readpipe using non-blocking I/O (Bts:issue4336) * revset: fix O(2^n) perf regression in addset * revset: have rev() drop out-of-range or filtered rev explicitly (Bts:issue4396) * setdiscovery: limit the size of all sample (Bts:issue4411) * ssl: only support TLS (BC) * ssl: only use the dummy cert hack if using an Apple Python (Bts:issue4410) * templater: fix ifcontains when list is a string (Bts:issue4399) === extensions === * convert: add support for deterministic progress bar on scanning phase * convert: add support to detect git renames and copies * eol: fix crash when handling removed files * histedit: add "roll" command to fold commit data and drop message (Bts:issue4256) * largefiles: add examination of exec bit in "hg status --rev REV" case * largefiles: keep largefiles from colliding with normal one during linear merge * largefiles: restore R status of removed largefiles correctly at "hg rollback" * largefiles: restore standins from non branch-tip parent at rollback correctly * largefiles: unlink standins not known to the restored dirstate at rollback * mq: write '# Parent ' lines with two spaces like export does (BC) * mq: write headers for new HG patches in the same order as export (BC) * shelve: don't delete "." when rebase is a no-op (Bts:issue4398) === hgweb === * hgweb: disable SSLv3 serving (BC) * hgweb: refresh repository using URL not path (Bts:issue4323) == Mercurial 3.1.2 (2014-10-01) == This is a regularly-scheduled bugfix release. * commit: catch changed exec bit on files from p1 (Bts:issue4382) * diff: document the nobinary option * dispatch: check shell alias again after loading extensions (Bts:issue4355) * dispatch: make "_checkshellalias" reusable regardless of adding aliases * help: fix typo in log examples * help: mention mode in hg log --removed help (Bts:issue4381) * hgweb: fail if an invalid command was supplied in url path (Bts:issue4071) * hgweb: refresh hgweb.repo on phase change (Bts:issue4061) * histedit: abort gracefully on --continue/--abort with no state * keepalive: fix how md5 is used * mq: examine "pushable" of already applied patch correctly * mq: pop correct patches when changing pushable-ness of already applied ones * mq: report correct numbers for changing "number of guarded, applied patches" * mq: use "mq.applied[i].name" instead of "mq.appliedname(i)" for safety * revset: add an optimised baseset.__contains__ (Bts:issue4371) * templater: fix precedence of --style and --template options == Mercurial 3.1.1 (2014-09-01) == This is a regularly-scheduled bugfix release. * changectx: ancestor should only prefer merge.preferancestor if it is a revision * color: pass on key error for win32 (Bts:issue4298) * config: exit non zero on non-existent config option (Bts:issue4247) * context: call normal on the right object * debugobsolete: catch !ValueError that may be raised by obsstore.create * discovery: prevent crash on unknown remote heads with old repo (Bts:issue4337) * graft: fix collision detection with origin revisions that are missing * help: add pad function to template help * help: only call doc() when it is callable * hgweb: avoid config object race with hgwebdir (Bts:issue4326) * histedit: preserve initial author on fold (Bts:issue4296) * import: show warning message for merge changesets * incoming: don't request heads that already are common * largefiles: don't override matchandpats for always matchers (Bts:issue4334) * largefiles: drop setting lfstatus in overridelog (Bts:issue4334) * largefiles: in overridelog, use non-lf matcher for patch generation (Bts:issue4334) * log: use correct phase info for parent field (Bts:issue4347) * merge: show the scary multiple ancestor hint for merges only, not for updates * obsstore.create: add a simple safeguard against cyclic markers * repoview: filter tags to non-existent nodes from blockers (Bts:issue4328) * repoview: fix typo in repoview.changelog * revset: bookmark revset interprets 'literal:' prefix correctly (Bts:issue4329) * unbundle: don't advance bookmarks (Bts:issue4322) (BC) == Mercurial 3.1 (2014-08-01) == === Core features === * backout: accept '--edit' like other commands creating new changeset * bookmarks: improve the bookmark help (Bts:issue4244) * commit: make commit message shown in text editor customizable by template * config: allow 'user' in .hgrc ui section (Bts:issue3169) * conflict markers: customise local/other name for various command (graft, update, rebase, ...) (BC) * diff: add nobinary config to suppress git-style binary diffs * discovery: if a push would create a new head, mention the bookmark name if any * filemerge: add an internal:tagmerge merge tool * filemerge: add a `[ui] mergemarkers` option to use detailed merge marker. * gpg: accept '--edit' like other commands creating new changeset * help: suggest keyword search when no topic is found * import: add --partial flag to create a changeset despite failed hunks * resolve: print message when no unresolved files remain (Bts:issue4214) * resolve: print warning when no work performed (Bts:issue4208) * templatefilter: add splitlines function * templatekw: add 'currentbookmark' keyword to show current bookmark easily * templatekw: add 'subrepos' keyword to show updated subrepositories * templater: introduce startswith function * templater: introduce word function * templates: escape NUL bytes in jsonescape (Bts:issue4303) * update: introduce --tool for controlling the merge tool * update: show message when a bookmark is activated by update * update: when deactivating a bookmark, print a message * version: show enabled extensions (Bts:issue4209) === Extension features === * convert: detect removal of ".gitmodules" at git source revisions correctly * convert: drastically speed up git conversions * convert: mercurial source: convert global tags only - not local tags * convert: only consider shamap revisions converted if they still exists * convert: update the transplant, rebase and graft references in 'extra' * largefiles: show also how many data entities are outgoing at "hg outgoing" * mergetools.hgrc: add minimal configuration for editmerge * pager: add attend-<command> option * patchbomb: includes series information in the header * purge: add options for deleting only files or only directories * qfold: allow to specify '--message/'--logfile' and '--edit' at the same time * qimport: record imported revs incrementally (Bts:issue3874) * qrefresh: allow to specify '--message/'--logfile' and '--edit' at the same time * shelve: accept '--edit' like other commands creating new changeset * shelve: add -l|--list support for bash completion * strip: drop -b/--backup option (BC) === Fixes === * bookmarks: avoid deleting primary bookmarks on rebase * branch: add debug message for branch cache write failure * bugzilla extension: stop trying to cache setup across hook invocation * filemerge: use non-minimal conflict marker regions (BC) * help: always show command help with -h (Bts:issue4240) * histedit: respect revsetalias entries (Bts:issue4311) * largefiles: avoid unnecessary creation of .hg/largefiles when opening lfdirstate * largefiles: include largefiles when doing log on a directory (Bts:issue4241) * largefiles: use "normallookup", if "mtime" of standin is unset * log: allow revset for --follow to be lazily evaluated * log: do not use exact matcher for --patch --follow without file (Bts:issue4319) * log: make --patch --follow work inside a subdirectory * p4: accept changesets with no description (Bts:issue4282) * resolve: keep wlock while resolving * revset: maintain ordering when subtracting from a baseset (Bts:issue4289) * revset: optimize baseset.__sub__ (Bts:issue4313) * strip: remove bookmarks after strip succeed (Bts:issue4295) * vim: use try catch in vim plugin to avoid conflicts === Experimental features === * bundle2: add pushkey support * bundle2: fix bundle2 pulling all revs on empty pulls * bundle2: pull phase data alongside changesets (when enabled) * bundle2: use bundle2 to push phases (when enabled) === Mercurial project === * build: initial support for in-tree autobuilding recipes * buildrpm: include release version in .tar.gz name * make: add a basic osx mpkg target * packaging: move output directory from build/ to packages/ * setup: fixed for Pythons which don't have a CFLAGS * setup: make Xcode 5.1 check less specific == Mercurial 3.0.2 (2014-07-01) == This is a regularly-scheduled bugfix release. * cmdutil: add copy-filtering support to duplicatecopies * hgweb: avoid initialization race (Bts:issue4280) * keyword: suppress keyword expansion for internal merge * match: make glob '**/' match the empty string * parsers.c: fix a couple of memory leaks * push: restore contents of HG_URL for hooks (Bts:issue4268) * rebase: fix bug that caused transitive copy records to disappear (Bts:issue4192) * repoview: do not crash when localtags refers to non existing revisions == Mercurial 3.0.1 (2014-06-01) == This is a regularly-scheduled bugfix release. * alias: change return code of bad definition to 255 * alias: fix loss of non-zero return code in command aliases * alias: handle shlex error in command aliases * bookmarks: properly align multi-byte characters * bugzilla: support Bugzilla 4.4.3+ API login token authentication (Bts:issue4257) * bundle2: fix bundle2 pulling all revs on empty pulls * bundle2: fix configuration name mismatch * changelog: ensure changelog._delaybuf is initialized * color: don't fail on error messages when no curses (Bts:issue4237) * exchange: propagate arguments to the _getbundleextrapart function * localrepo: prevent leak of transaction object (Bts:issue4258) * proxy: remove unneeded _set_hostport for compatibility with Python 2.7.7rc1 * setup.py, make: avoid problems with outdated, existing {{{hgext/__index__.py*}}} * subrepo: avoid sanitizing ".hg/hgrc" in meta data area for non-hg subrepos * subrepo: invoke "_sanitize()" also after "git merge --ff" * subrepo: make "_sanitize()" take absolute path to the root of subrepo * subrepo: make "_sanitize()" work * subrepo: normalize path in the specific way for problematic encodings * templates: fix ifcontains against sets with length > 1 (Bts:issue4259) * win32: backout 1a9ebc83a74c == Mercurial 3.0 (2014-05-01) == This is a regularly-scheduled quarterly feature release. Unlike other 3.0 software releases, this is simply 2.9 + .1, so it should be the usual pain-free upgrade. === Core features === * cat: support explicit paths in subrepos * cmdserver: allow starting server without repository * clone: abort if default destination has no meaningful name (BC) * clone: put streaming clones in a transaction * color: add debugcolor command (Bts:issue4094) * color: allow color keywords to be used directly in template * commands: add -T as alternative to --template * commands: hg debuginstall checks missing templates (Bts:issue4151) * commit: --edit/-e allows editing commit message supplied through other means * config: add initial implementation of --edit (with --global and --local flags) * debuginstall: add Python information to debuginstall output (Bts:issue4128) * demandimport: support HGDEMANDIMPORT=disable to disable demandimport * hgweb: add metadata to atom and rss feed entries * http: reuse authentication info after the first failed request (Bts:issue3567) * log: change implementation to use graphlog code * push: provide a hint when no paths are configured (Bts:issue3692) * require: provide a link to a wiki page as well as suggesting upgrade * revset: new implementation with incremental evaluation * revset: try to handle hyphenated symbols if lookup callback is available * revset: add 'only()' revset * sshpeer: only print out 'running ssh' messages in debug mode (BC) * template: add ifcontains template function * template: add pad function for padding output * template: add revset() template function * template: add shortest(node) template function * template: add flexible -T option * win32: improve the performance of win32.unlink() over CIFS === Extension features === * blackbox: log events related to branch cache * convert: avoid updating tags when there is nothing new * convert: compare tags from all heads instead of just one * convert: replace old sha1s in the description * extensions: mark win32text deprecated * extensions: remove interhg * extensions: remove the inotify extension (BC) * histedit: select the lowest rev when looking for a root in a revset (BC) * journal: report parsing errors on recover/rollback (Bts:issue4172) * qimport: allow importing URLs === Fixes === * backout: don't limit ancestry check to a single ancestor * backout: improve confusing 'cannot backout change on a different branch' abort * caches: invalidate store caches when lock is taken * cmdserver: forcibly use L channel to read password input (Bts:issue3161) * cmdserver: reload mq on each runcommand request to avoid corruption * diff: use second filename for --stat reporting on git patches (Bts:issue4221) * dirstate: report bad subdirectories as match.bad, not just a warning (BC) * extensions: use normpath to allow trailing '\' on Windows (Bts:issue4187) * fncache: clean up fncache during strips * largefiles: changed overridelog to work with graphlog * largefiles: don't prompt when one side of merge was changed but didn't change * largefiles: remove directories emptied after their files are moved (Bts:issue3515) * parsers: fail fast if Python has wrong minor version (Bts:issue4110) * phases: apply publishing enforcement for "serve" source * revlog: deal with chunk ranges over 2G on Windows (Bts:issue4215) * setup.py: fix C extension compilation issue with OS X 10.9 and Xcode 5.1 * subrepo: check return code for git push (Bts:issue4223) === Experimental features === * bundle2: experimental support for bundle2 * merge: experimental implementation of bid merge * merge: tell when .ancestor picks one of multiple common ancestors heads == Mercurial 2.9.2 (2014-04-01) == This is a regularly-scheduled bugfix release. * amend: save commit message into ".hg/last-message.txt" * backout: correct commit status of no changes made (BC) (Bts:issue4190) * backout: document return code of merge conflict * commit: create new amend changeset as secret correctly for "--secret" option * commit: propagate --secret option to subrepos (Bts:issue4182) * convert: more clear documentation of the 'include' default of a 'include .' * dispatch: only do __import__(debugger) when a debugger is requested * log: solves bug regarding hg log -r 0:null (Bts:issue4039) * hg: introduce "wirepeersetupfuncs" to setup wire peer by extensions (Bts:issue4109) * hg: use "os.path.join()" to join path components which may be empty (Bts:issue4203) * histedit: save manually edited commit message into ".hg/last-message.txt" * localrepo: save manually edited commit message as soon as possible * merge: fix lack of "%s" in format string causing !TypeError at runtime * paper: overlapping of section title on help pages (Bts:issue4051) * phase: say "Returns 0" instead of "Return 0" like other command help * qfold: save manually edited commit message into ".hg/last-message.txt" * qnew: save manually edited commit message into ".hg/last-message.txt" * rebase: use "commitforceeditor" instead of "ui.edit()" for "--collapse" * revset: document the regular expression support for tag(name) * subrepo: add trailing newlines to warnings * subrepo: convert matched string to integer before comparing Git version * subrepo: only retrieve the first two components of the Git version * tag: save manually edited commit message into ".hg/last-message.txt" * templater: apply "stringify()" on sub expression to get string correctly * templater: avoid recursive evaluation of string literals completely * templater: make strings in template expressions be "string-escape"-ed correctly * templater: raise error for unknown function == Mercurial 2.9.1 (2014-03-01) == This is a regularly-scheduled bugfix release. * coal: hgweb style adds extra blank line in file view (Bts:issue4136) * hg.openpath: use url.islocal to tell if the path is local (Bts:issue3624) * hgweb: hack around mimetypes encoding thinko (Bts:issue4160) * hooks: only disable/re-enable demandimport when it's already enabled * merge: add "other" file node in the merge state file * merge: audit the right destination file when merging with dir rename * merge: don't overwrite file untracked after remove, abort with 'untracked files' * merge: record the "other" node in merge state * pathencode: eliminate signed integer warnings * pull: close peer repo on completion (Bts:issue2491) (Bts:issue2797) * purge: avoid duplicate output for --print (Bts:issue4092) * rebase: do not try to reactivate deleted divergent bookmark * resolve: use "other" changeset from merge state (Bts:issue4163) * verify: do not prevent verify repository containing hidden changesets == Mercurial 2.9 (2014-02-01) == This is a regularly-scheduled feature release. === Core features === * backout: add a message after backout that need manual commit * bash_completion: add global support for -B|--bookmark * bash_completion: add global support for -b|--branch * bookmarks: allow push -B to create a new remote head (Bts:issue2372) * date: allow %z in format (Bts:issue4040) * hgweb: infinite scroll support for coal, gitweb, and monoblue styles * patch: add support for git delta hunks * url: added authuri when login information is requested (Bts:issue3209) === Performance improvement === * backout: avoid update on simple case * branchmap: cache open/closed branch head information * cat: increase perf when catting single files * changectx: increase perf of walk function * strip: add faster revlog strip computation === Extension features === * bash_completion: add completion for deleting a shelve * convert: use branchmap to change default branch in destination (Bts:issue3469) * record: --user/-u now works with record when ui.username not set (Bts:issue3857) * subrepo: check phase of state in each subrepositories before committing === Fixes === * aliases: make "_checkshellalias()" invoke "findcmd()" with "strict=True" * bisect: --command without --noupdate should flag the parent rev it tested * clone: do not turn hidden changeset public on publishing clone (Bts:issue3935) * diff: search beyond ancestor when detecting renames * push: properly move phase boundary when no changeset are exchanged (Bts:issue3786) * rebase: abort cleanly when we encounter a damaged rebasestate (Bts:issue4155) * rebase: do not crash in panic when cwd disapear in the process (Bts:issue4121) * record: re-enable whitespace-ignoring options * relink: abort earlier when on different devices (Bts:issue3916) * subrepo: make it possible to update to hidden subrepo revisions * templater: selecting a style with no templates does not crash (Bts:issue4140) * update: consider successor changesets for a bare update * update: consider successor changesets when moving active bookmark |
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).
Be sure to read the upgrade notes when upgrading.
Contents
- Mercurial 3.6.2 (2016-1-1)
- Mercurial 3.6.2 (2015-12-1)
- Mercurial 3.6.1 (2015-11-9)
- Mercurial 3.6 (2015-11-1)
- Mercurial 3.5.2 (2015-10-01)
- Mercurial 3.5.1 (2015-09-01)
- Mercurial 3.5 (2015-07-31)
- Mercurial 3.4.2 (2015-07-01)
- Mercurial 3.4.1 (2015-06-01)
- Mercurial 3.4 (2015-05-01)
- Mercurial 3.3.3 (2015-04-01)
- Mercurial 3.3.2 (2015-03-02)
- Mercurial 3.3.1 (2015-03-02)
- Mercurial 3.3 (2015-02-01)
- Mercurial 3.2.4 (2015-01-01)
- Mercurial 3.2.3 (2014-12-18)
- Mercurial 3.2.2 (2014-12-01)
- Mercurial 3.2.1 (2014-11-11)
- Mercurial 3.2 (2014-11-01)
- Mercurial 3.1.2 (2014-10-01)
- Mercurial 3.1.1 (2014-09-01)
- Mercurial 3.1 (2014-08-01)
- Mercurial 3.0.2 (2014-07-01)
- Mercurial 3.0.1 (2014-06-01)
- Mercurial 3.0 (2014-05-01)
- Mercurial 2.9.2 (2014-04-01)
- Mercurial 2.9.1 (2014-03-01)
- Mercurial 2.9 (2014-02-01)
(See the archive for older versions)
1. Mercurial 3.6.2 (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)
2. 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
3. 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
4. Mercurial 3.6 (2015-11-1)
Regularly scheduled feature release.
4.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)
4.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)
4.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
4.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)
4.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)
5. 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
6. 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'
7. Mercurial 3.5 (2015-07-31)
Regularly-scheduled feature release.
7.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
7.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)
7.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
7.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)
7.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)
8. 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
9. 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
10. Mercurial 3.4 (2015-05-01)
This is a regularly-scheduled feature release.
10.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)
10.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)
10.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
10.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
10.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
11. Mercurial 3.3.3 (2015-04-01)
This is a regularly-scheduled bugfix release.
- adjustlinkrev: handle 'None' value as source
- adjustlinkrev: prepare source revs for ancestry only once
amend: check for directory renames for both merge parents (issue4516)
annotate: reuse ancestry context when adjusting linkrev (issue4532)
dirstate: don't require exact case when adding dirs on icasefs (issue4578)
dirstate: make sure rootdir ends with directory separator (issue4557)
- filemerge: clean up language in mergemarkertemplate help
- forget: cleanup the output for an inexact case match on icasefs
- hgweb: prevent loading style map from directories other than specified paths
mergecopies: reuse ancestry context when traversing file history (issue4537)
- templates: fix "log -q" output of default style
- templates: fix "log -q" output of phases style
win32: 'raise ctypes.WinError' -> 'raise ctypes.WinError()'
12. Mercurial 3.3.2 (2015-03-02)
An unscheduled bugfix release to fix the fix.
transaction: really disable hardlink backups (issue4546)
13. Mercurial 3.3.1 (2015-03-02)
This is a regularly scheduled bugfix release. It fixes a significant regression with transactions on Windows network shares.
dispatch: work around UnicodeDecodeError caused by SSLError of Python 2.7.9
- hgweb: recreate old DOM structure for css in monoblue style
largefiles: access to specific fields only if largefiles enabled (issue4547)
log: fix json-formatted output when file copies are listed (issue4523)
repoview: invalidate cached changelog if _delayed changes (issue4549)
revisionbranchcache: fall back to slow path if starting readonly (issue4531)
- revset: mask specific names for named() predicate
- shellquote: fix missing quotes for empty string
- templatekw: fix {join(bookmarks, sep)} to always show associated bookmarks
transaction: disable hardlink backups (issue4546)
14. Mercurial 3.3 (2015-02-01)
This is a regularly scheduled feature release with over 800 changes.
14.1. commands
- add: add back forgotten files even when not matching exactly (BC)
- addremove: add back forgotten files (BC)
- addremove: add support for the -S flag
- addremove: print relative paths when called with -I/-X (BC)
- addremove: support addremove with explicit paths in subrepos
- backout: add --commit option
- commit: abort if --addremove is specified, but fails
commit: remove reverse search for copy source when not in parent (issue4476)
commit: propagate --addremove to subrepos if -S is specified (issue3759)
- graft: show more useful status information while grafting
14.2. core
- bundles: do not overwrite existing backup bundles (BC)
osx: patch .pax.gz files in pkg bundles so they extract as root (issue4081)
revset: handle hidden linkrev for file missing for head (issue4490)
- revset: allow rev(-1) to indicate null revision (BC)
revset: fix ancestors(null) to include null revision (issue4512)
subrepo: don't abort in add when non-hg subrepos are present (issue4513)
- cmdserver: use given streams as pipe channels like other commands
- extensions: only check compatibility against major and minor versions (BC)
https: support tls sni (server name indication) for https urls (issue3090)
ignore: resolve ignore files relative to repo root (issue4473) (BC)
linkrev: handle filtered linkrev with no visible children (issue4307)
linkrev: also adjust linkrev when bootstrapping annotate (issue4305)
linkrev: use the right manifest content when adjusting linrev (issue4499)
memctx: calculate manifest correctly with newly-removed files (issue4470)
memctx: fix manifest for removed files (issue4470)
obsstore: disable garbage collection during initialization (issue4456)
- subrepo: support remove with explicit paths in subrepos
- subrepo: add full revert support for git subrepos
- subrepo: add partial diff support for git subrepos
- subrepo: add status support for ignored files in git subrepos
win32: remove Mercurial.ini file from Inno Setup installer (issue4435)
14.3. hgweb
hgweb: allow viewing diffs against p1 or p2 for merge commits (issue3904)
14.4. extensions
- color: add support for colorizing git subrepo diffs
- color: add missing 'dim' in _effects
convert: on svn failure, note libsvn version (issue4043)
convert: replace revision references in messages if they are >= short hashes
convert: handle LookupError in mercurial_source.lookuprev()
- extdiff: reintroduce backward compatibility with manual quoting of parameters
histedit: add a test to show that issue4251 is fixed (issue4251)
largefiles: fix commit of a directory with no largefile changes (issue4330)
- largefiles: use 'default' path for pulling largefiles, not 'default-push'
- largefiles: enable subrepo support for add, forget, remove
- largefiles: show progress when checking standin hashes in outgoing changesets
- mq: smarter handling of plain headers
- patchbomb: don't honor whitespace and format-changing diffopts (BC)
- rebase: show more useful status information while rebasing
rebase: ensure rebase revision remains visible (issue4504)
extdiff: avoid unexpected quoting arguments for external tools (issue4463)
highlight: ignore Unicode's extra linebreaks (issue4291)
record: don't honor format-changing diffopts (issue4459)
- share: add option to share bookmarks
transplant: properly skip empty changeset (issue4423)
15. Mercurial 3.2.4 (2015-01-01)
This is a regularly-scheduled bugfix release.
demandimport: blacklist distutils.msvc9compiler (issue4475)
largefiles: backout f72d73937853 - linear updates handle m -> a differently
largefiles: fix a spurious missing file warning with 'remove -A' (issue4053)
largefiles: fix a spurious missing file warning with forget (issue4053)
- largefiles: introduce the 'composelargefilematcher()' method
- largefiles: mark lfile as added in lfdirstate when the standin is added
- sshpeer: more thorough shell quoting
16. Mercurial 3.2.3 (2014-12-18)
This is an unscheduled bugfix release containing two security fixes for issues we uncovered in both Git and Mercurial for CVE-2014-9390. Users on Mac and Windows are encouraged to upgrade.
- context: stop setting None for modified or added nodes
- darwin: omit ignorable codepoints when normcase()ing a file path
- encoding: add hfsignoreclean to clean out HFS-ignored characters
- largefiles: don't actually remove largefiles in an addremove dry run
- log: fix log -f slow path to actually follow history
- log: fix log revset instability
- manifest: disallow setting the node id of an entry to None
- pathauditor: check for Windows shortname aliases
- pathauditor: check for codepoints ignored on OS X
- rebase: ignore negative state when updating back to original wc parent
- update: add tests for untracked local file
- update: don't overwrite untracked ignored files on update
17. Mercurial 3.2.2 (2014-12-01)
This is a regularly-scheduled bugfix release.
changegroup: fix file linkrevs during reorders (issue4462)
- hgweb: send proper HTTP response after uncaught exception
- largefiles: avoid exec-bit examination on the platforms unaware of it
- largefiles: don't show largefile/normal prompts if one side is unchanged
- manifest: fix a bug where working copy file 'add' mark was buggy
- merge: be precise about what merged into what in short desc
- merge: before cd/dc prompt, check that changed side really changed
- mq: fix update of headers that occur in the "wrong" order
- mq: introduce insertplainheader - same naive implementation as before
mq: when adding headers in plain mode, separate them from message (issue4453)
mq: when setting message in plain mode, separate it from header (issue4453)
push: stop independent usage of bundle2 in syncphase (issue4454)
pushkey: gracefully handle prepushkey hook failure (issue4455)
rename: properly report removed and added file as modified (issue4458)
- revert: look for copy information for all local modifications
revset: fix first and last for generatorset (issue4465)
templates: fix broken "less" & "more" links in paper style (issue4460)
18. Mercurial 3.2.1 (2014-11-11)
This is an unscheduled release to address regressions in discovery, rebase, and bookmarks.
bookmarks: fix formatting of exchange message (issue4439)
changegroup: don't store unused value on fnodes (issue4443)
- convert: use git diff-tree -Cn% instead of --find-copies=n% for older git
discovery: indices between sample and yesno must match (issue4438)
discovery: limit 'all local heads known remotely' to real 'all' (issue4438)
- extdiff: quote user-supplied options passed to shell
- hgweb: fix a crash when using web.archivesubrepos
- mail: actually use the verifycert config value
rebase: fix rebase with no common ancestors (issue4446)
- serve: correct meta variable of --daemon-pipefds option
templater: don't overwrite the keyword mapping in runsymbol() (issue4362)
19. Mercurial 3.2 (2014-11-01)
This is a quarterly feature release.
19.1. commands
amend: abort early if no username is configured with evolve enabled (issue4211)
amend: fix amending rename commit with diverged topologies (issue4405)
- annotate: rewrite long short-circuit statement by if-elif-else
- bookmark: make the search for divergent names more robust
- bookmarks: allow pushkey if new equals current
- bookmarks: explicitly track identical bookmarks
- bookmarks: fix divergent bookmark path normalization
- bookmarks: inform transaction-related hooks that some bookmarks were moved
- branches: include active, closed and current flags in template output
- clone: copy '.hg/bookmarks' during copy clone
- clone: explicitly push bookmarks when cloning from local to remote
clone: fix copying bookmarks in uncompressed clones (issue4430)
clone: for local clones, copy branchcache from the right location (issue4286)
clone: for local clones, copy over filtered branchcaches as well (issue4286)
clone: properly mark branches closed with --uncompressed (issue4428)
clone: provide sample username = config entry in .hg/hgrc (issue4359)
- commit: correctly check commit mutability during commit --amend
- commit: add customizable committemplate config
- config: give more fine-tuned sample hgrcs to this command
config: highlight parse error caused by leading spaces (issue3214)
- files: add new command unifying locate and manifest functionality
graft: allow regrafting ancestors with --force (issue3220)
graft: make --force apply across continues (issue3220)
help: document that default hgweb style is called paper (issue4373)
help: update help for hgweb template and style (issue4373)
import: let --exact 'work' with --no-commit (issue4376)
- locate: deprecate in favor of files
- log: allow patterns with -f
- log: do not hide the public phase in debug mode (BC)
log: rewrite default template to use labels (issue2866)
- log: show phase in hg log -v with the phase template
- merge-tools: add a 'premerge=keep-merge3' config option
- merge: use bid merge by default (BC)
- merge: support three labels when using conflict markers
- parents: deprecate the parents commands
- pull: perform bookmark updates in the transaction
- push: update bookmarks within the remote lock
- push: wrap local phase movement in a transaction
- pushbookmark: do not attempt to update bookmarks if the push failed (BC)
- status: make 'hg status --rev' faster when there are deleted files
- tag: properly abort if an unknown or ignored .hgtags is present
19.2. core
alias: expand "$@" as list of parameters quoted individually (BC) (issue4200)
- dirstate: add exception when calling setparent without begin/end (API)
dirstate: wrap setparent calls with begin/endparentchange (issue4353)
hook: protect commit hooks against stripping of temporary commit (issue4422)
- i18n: detect UI language without POSIX-style locale variable on Windows (BC)
- localrepo: remove the 'pull' method (API)
- localrepo: remove the 'push' method (API)
posix: implement readpipe using non-blocking I/O (issue4336)
- revset: fix O(2^n) perf regression in addset
revset: have rev() drop out-of-range or filtered rev explicitly (issue4396)
setdiscovery: limit the size of all sample (issue4411)
- ssl: only support TLS (BC)
ssl: only use the dummy cert hack if using an Apple Python (issue4410)
templater: fix ifcontains when list is a string (issue4399)
19.3. extensions
- convert: add support for deterministic progress bar on scanning phase
- convert: add support to detect git renames and copies
- eol: fix crash when handling removed files
histedit: add "roll" command to fold commit data and drop message (issue4256)
- largefiles: add examination of exec bit in "hg status --rev REV" case
- largefiles: keep largefiles from colliding with normal one during linear merge
- largefiles: restore R status of removed largefiles correctly at "hg rollback"
- largefiles: restore standins from non branch-tip parent at rollback correctly
- largefiles: unlink standins not known to the restored dirstate at rollback
- mq: write '# Parent ' lines with two spaces like export does (BC)
- mq: write headers for new HG patches in the same order as export (BC)
shelve: don't delete "." when rebase is a no-op (issue4398)
19.4. hgweb
- hgweb: disable SSLv3 serving (BC)
hgweb: refresh repository using URL not path (issue4323)
20. Mercurial 3.1.2 (2014-10-01)
This is a regularly-scheduled bugfix release.
commit: catch changed exec bit on files from p1 (issue4382)
- diff: document the nobinary option
dispatch: check shell alias again after loading extensions (issue4355)
- dispatch: make "_checkshellalias" reusable regardless of adding aliases
- help: fix typo in log examples
help: mention mode in hg log --removed help (issue4381)
hgweb: fail if an invalid command was supplied in url path (issue4071)
hgweb: refresh hgweb.repo on phase change (issue4061)
- histedit: abort gracefully on --continue/--abort with no state
- keepalive: fix how md5 is used
- mq: examine "pushable" of already applied patch correctly
- mq: pop correct patches when changing pushable-ness of already applied ones
- mq: report correct numbers for changing "number of guarded, applied patches"
- mq: use "mq.applied[i].name" instead of "mq.appliedname(i)" for safety
revset: add an optimised baseset.contains (issue4371)
- templater: fix precedence of --style and --template options
21. Mercurial 3.1.1 (2014-09-01)
This is a regularly-scheduled bugfix release.
- changectx: ancestor should only prefer merge.preferancestor if it is a revision
color: pass on key error for win32 (issue4298)
config: exit non zero on non-existent config option (issue4247)
- context: call normal on the right object
debugobsolete: catch ValueError that may be raised by obsstore.create
discovery: prevent crash on unknown remote heads with old repo (issue4337)
- graft: fix collision detection with origin revisions that are missing
- help: add pad function to template help
- help: only call doc() when it is callable
hgweb: avoid config object race with hgwebdir (issue4326)
histedit: preserve initial author on fold (issue4296)
- import: show warning message for merge changesets
- incoming: don't request heads that already are common
largefiles: don't override matchandpats for always matchers (issue4334)
largefiles: drop setting lfstatus in overridelog (issue4334)
largefiles: in overridelog, use non-lf matcher for patch generation (issue4334)
log: use correct phase info for parent field (issue4347)
- merge: show the scary multiple ancestor hint for merges only, not for updates
- obsstore.create: add a simple safeguard against cyclic markers
repoview: filter tags to non-existent nodes from blockers (issue4328)
- repoview: fix typo in repoview.changelog
revset: bookmark revset interprets 'literal:' prefix correctly (issue4329)
unbundle: don't advance bookmarks (issue4322) (BC)
22. Mercurial 3.1 (2014-08-01)
22.1. Core features
- backout: accept '--edit' like other commands creating new changeset
bookmarks: improve the bookmark help (issue4244)
- commit: make commit message shown in text editor customizable by template
config: allow 'user' in .hgrc ui section (issue3169)
- conflict markers: customise local/other name for various command (graft, update, rebase, ...) (BC)
- diff: add nobinary config to suppress git-style binary diffs
- discovery: if a push would create a new head, mention the bookmark name if any
- filemerge: add an internal:tagmerge merge tool
filemerge: add a [ui] mergemarkers option to use detailed merge marker.
- gpg: accept '--edit' like other commands creating new changeset
- help: suggest keyword search when no topic is found
- import: add --partial flag to create a changeset despite failed hunks
resolve: print message when no unresolved files remain (issue4214)
resolve: print warning when no work performed (issue4208)
- templatefilter: add splitlines function
- templatekw: add 'currentbookmark' keyword to show current bookmark easily
- templatekw: add 'subrepos' keyword to show updated subrepositories
- templater: introduce startswith function
- templater: introduce word function
templates: escape NUL bytes in jsonescape (issue4303)
- update: introduce --tool for controlling the merge tool
- update: show message when a bookmark is activated by update
- update: when deactivating a bookmark, print a message
version: show enabled extensions (issue4209)
22.2. Extension features
- convert: detect removal of ".gitmodules" at git source revisions correctly
- convert: drastically speed up git conversions
- convert: mercurial source: convert global tags only - not local tags
- convert: only consider shamap revisions converted if they still exists
- convert: update the transplant, rebase and graft references in 'extra'
- largefiles: show also how many data entities are outgoing at "hg outgoing"
- mergetools.hgrc: add minimal configuration for editmerge
pager: add attend-<command> option
- patchbomb: includes series information in the header
- purge: add options for deleting only files or only directories
- qfold: allow to specify '--message/'--logfile' and '--edit' at the same time
qimport: record imported revs incrementally (issue3874)
- qrefresh: allow to specify '--message/'--logfile' and '--edit' at the same time
- shelve: accept '--edit' like other commands creating new changeset
- shelve: add -l|--list support for bash completion
- strip: drop -b/--backup option (BC)
22.3. Fixes
- bookmarks: avoid deleting primary bookmarks on rebase
- branch: add debug message for branch cache write failure
- bugzilla extension: stop trying to cache setup across hook invocation
- filemerge: use non-minimal conflict marker regions (BC)
help: always show command help with -h (issue4240)
histedit: respect revsetalias entries (issue4311)
- largefiles: avoid unnecessary creation of .hg/largefiles when opening lfdirstate
largefiles: include largefiles when doing log on a directory (issue4241)
- largefiles: use "normallookup", if "mtime" of standin is unset
- log: allow revset for --follow to be lazily evaluated
log: do not use exact matcher for --patch --follow without file (issue4319)
- log: make --patch --follow work inside a subdirectory
p4: accept changesets with no description (issue4282)
- resolve: keep wlock while resolving
revset: maintain ordering when subtracting from a baseset (issue4289)
revset: optimize baseset.sub (issue4313)
strip: remove bookmarks after strip succeed (issue4295)
- vim: use try catch in vim plugin to avoid conflicts
22.4. Experimental features
- bundle2: add pushkey support
- bundle2: fix bundle2 pulling all revs on empty pulls
- bundle2: pull phase data alongside changesets (when enabled)
- bundle2: use bundle2 to push phases (when enabled)
22.5. Mercurial project
- build: initial support for in-tree autobuilding recipes
- buildrpm: include release version in .tar.gz name
- make: add a basic osx mpkg target
- packaging: move output directory from build/ to packages/
- setup: fixed for Pythons which don't have a CFLAGS
- setup: make Xcode 5.1 check less specific
23. Mercurial 3.0.2 (2014-07-01)
This is a regularly-scheduled bugfix release.
- cmdutil: add copy-filtering support to duplicatecopies
hgweb: avoid initialization race (issue4280)
- keyword: suppress keyword expansion for internal merge
- match: make glob '**/' match the empty string
- parsers.c: fix a couple of memory leaks
push: restore contents of HG_URL for hooks (issue4268)
rebase: fix bug that caused transitive copy records to disappear (issue4192)
- repoview: do not crash when localtags refers to non existing revisions
24. Mercurial 3.0.1 (2014-06-01)
This is a regularly-scheduled bugfix release.
- alias: change return code of bad definition to 255
- alias: fix loss of non-zero return code in command aliases
- alias: handle shlex error in command aliases
- bookmarks: properly align multi-byte characters
bugzilla: support Bugzilla 4.4.3+ API login token authentication (issue4257)
- bundle2: fix bundle2 pulling all revs on empty pulls
- bundle2: fix configuration name mismatch
- changelog: ensure changelog._delaybuf is initialized
color: don't fail on error messages when no curses (issue4237)
- exchange: propagate arguments to the _getbundleextrapart function
localrepo: prevent leak of transaction object (issue4258)
- proxy: remove unneeded _set_hostport for compatibility with Python 2.7.7rc1
setup.py, make: avoid problems with outdated, existing hgext/__index__.py*
- subrepo: avoid sanitizing ".hg/hgrc" in meta data area for non-hg subrepos
- subrepo: invoke "_sanitize()" also after "git merge --ff"
- subrepo: make "_sanitize()" take absolute path to the root of subrepo
- subrepo: make "_sanitize()" work
- subrepo: normalize path in the specific way for problematic encodings
templates: fix ifcontains against sets with length > 1 (issue4259)
- win32: backout 1a9ebc83a74c
25. Mercurial 3.0 (2014-05-01)
This is a regularly-scheduled quarterly feature release. Unlike other 3.0 software releases, this is simply 2.9 + .1, so it should be the usual pain-free upgrade.
25.1. Core features
- cat: support explicit paths in subrepos
- cmdserver: allow starting server without repository
- clone: abort if default destination has no meaningful name (BC)
- clone: put streaming clones in a transaction
color: add debugcolor command (issue4094)
- color: allow color keywords to be used directly in template
- commands: add -T as alternative to --template
commands: hg debuginstall checks missing templates (issue4151)
- commit: --edit/-e allows editing commit message supplied through other means
- config: add initial implementation of --edit (with --global and --local flags)
debuginstall: add Python information to debuginstall output (issue4128)
- demandimport: support HGDEMANDIMPORT=disable to disable demandimport
- hgweb: add metadata to atom and rss feed entries
http: reuse authentication info after the first failed request (issue3567)
- log: change implementation to use graphlog code
push: provide a hint when no paths are configured (issue3692)
- require: provide a link to a wiki page as well as suggesting upgrade
- revset: new implementation with incremental evaluation
- revset: try to handle hyphenated symbols if lookup callback is available
- revset: add 'only()' revset
- sshpeer: only print out 'running ssh' messages in debug mode (BC)
- template: add ifcontains template function
- template: add pad function for padding output
- template: add revset() template function
- template: add shortest(node) template function
- template: add flexible -T option
- win32: improve the performance of win32.unlink() over CIFS
25.2. Extension features
- blackbox: log events related to branch cache
- convert: avoid updating tags when there is nothing new
- convert: compare tags from all heads instead of just one
- convert: replace old sha1s in the description
- extensions: mark win32text deprecated
- extensions: remove interhg
- extensions: remove the inotify extension (BC)
- histedit: select the lowest rev when looking for a root in a revset (BC)
journal: report parsing errors on recover/rollback (issue4172)
- qimport: allow importing URLs
25.3. Fixes
- backout: don't limit ancestry check to a single ancestor
- backout: improve confusing 'cannot backout change on a different branch' abort
- caches: invalidate store caches when lock is taken
cmdserver: forcibly use L channel to read password input (issue3161)
- cmdserver: reload mq on each runcommand request to avoid corruption
diff: use second filename for --stat reporting on git patches (issue4221)
- dirstate: report bad subdirectories as match.bad, not just a warning (BC)
extensions: use normpath to allow trailing '\' on Windows (issue4187)
- fncache: clean up fncache during strips
- largefiles: changed overridelog to work with graphlog
- largefiles: don't prompt when one side of merge was changed but didn't change
largefiles: remove directories emptied after their files are moved (issue3515)
parsers: fail fast if Python has wrong minor version (issue4110)
- phases: apply publishing enforcement for "serve" source
revlog: deal with chunk ranges over 2G on Windows (issue4215)
- setup.py: fix C extension compilation issue with OS X 10.9 and Xcode 5.1
subrepo: check return code for git push (issue4223)
25.4. Experimental features
- bundle2: experimental support for bundle2
- merge: experimental implementation of bid merge
- merge: tell when .ancestor picks one of multiple common ancestors heads
26. Mercurial 2.9.2 (2014-04-01)
This is a regularly-scheduled bugfix release.
- amend: save commit message into ".hg/last-message.txt"
backout: correct commit status of no changes made (BC) (issue4190)
- backout: document return code of merge conflict
- commit: create new amend changeset as secret correctly for "--secret" option
commit: propagate --secret option to subrepos (issue4182)
- convert: more clear documentation of the 'include' default of a 'include .'
dispatch: only do import(debugger) when a debugger is requested
log: solves bug regarding hg log -r 0:null (issue4039)
hg: introduce "wirepeersetupfuncs" to setup wire peer by extensions (issue4109)
hg: use "os.path.join()" to join path components which may be empty (issue4203)
- histedit: save manually edited commit message into ".hg/last-message.txt"
- localrepo: save manually edited commit message as soon as possible
merge: fix lack of "%s" in format string causing TypeError at runtime
paper: overlapping of section title on help pages (issue4051)
- phase: say "Returns 0" instead of "Return 0" like other command help
- qfold: save manually edited commit message into ".hg/last-message.txt"
- qnew: save manually edited commit message into ".hg/last-message.txt"
- rebase: use "commitforceeditor" instead of "ui.edit()" for "--collapse"
- revset: document the regular expression support for tag(name)
- subrepo: add trailing newlines to warnings
- subrepo: convert matched string to integer before comparing Git version
- subrepo: only retrieve the first two components of the Git version
- tag: save manually edited commit message into ".hg/last-message.txt"
- templater: apply "stringify()" on sub expression to get string correctly
- templater: avoid recursive evaluation of string literals completely
- templater: make strings in template expressions be "string-escape"-ed correctly
- templater: raise error for unknown function
27. Mercurial 2.9.1 (2014-03-01)
This is a regularly-scheduled bugfix release.
coal: hgweb style adds extra blank line in file view (issue4136)
hg.openpath: use url.islocal to tell if the path is local (issue3624)
hgweb: hack around mimetypes encoding thinko (issue4160)
- hooks: only disable/re-enable demandimport when it's already enabled
- merge: add "other" file node in the merge state file
- merge: audit the right destination file when merging with dir rename
- merge: don't overwrite file untracked after remove, abort with 'untracked files'
- merge: record the "other" node in merge state
- pathencode: eliminate signed integer warnings
purge: avoid duplicate output for --print (issue4092)
- rebase: do not try to reactivate deleted divergent bookmark
resolve: use "other" changeset from merge state (issue4163)
- verify: do not prevent verify repository containing hidden changesets
28. Mercurial 2.9 (2014-02-01)
This is a regularly-scheduled feature release.
28.1. Core features
- backout: add a message after backout that need manual commit
- bash_completion: add global support for -B|--bookmark
- bash_completion: add global support for -b|--branch
bookmarks: allow push -B to create a new remote head (issue2372)
date: allow %z in format (issue4040)
- hgweb: infinite scroll support for coal, gitweb, and monoblue styles
- patch: add support for git delta hunks
url: added authuri when login information is requested (issue3209)
28.2. Performance improvement
- backout: avoid update on simple case
- branchmap: cache open/closed branch head information
- cat: increase perf when catting single files
- changectx: increase perf of walk function
- strip: add faster revlog strip computation
28.3. Extension features
- bash_completion: add completion for deleting a shelve
convert: use branchmap to change default branch in destination (issue3469)
record: --user/-u now works with record when ui.username not set (issue3857)
- subrepo: check phase of state in each subrepositories before committing
28.4. Fixes
- aliases: make "_checkshellalias()" invoke "findcmd()" with "strict=True"
- bisect: --command without --noupdate should flag the parent rev it tested
clone: do not turn hidden changeset public on publishing clone (issue3935)
- diff: search beyond ancestor when detecting renames
push: properly move phase boundary when no changeset are exchanged (issue3786)
rebase: abort cleanly when we encounter a damaged rebasestate (issue4155)
rebase: do not crash in panic when cwd disapear in the process (issue4121)
- record: re-enable whitespace-ignoring options
relink: abort earlier when on different devices (issue3916)
- subrepo: make it possible to update to hidden subrepo revisions
templater: selecting a style with no templates does not crash (issue4140)
- update: consider successor changesets for a bare update
- update: consider successor changesets when moving active bookmark