Size: 62282
Comment:
|
Size: 37746
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 12: | Line 12: |
(See [[WhatsNew/Archive|archive]] for older versions | (See the [[WhatsNew/Archive|archive]] for older versions) == Mercurial 3.3-rc (2015-1-17) == Preliminary release notes for the 3.3 feature release. === commands === * bookmark: read pending data when appropriate * bookmarks: factor out bookmark file opening for easier extensibility * bookmarks: factor out repository lookup from writing bookmarks file * branchcache: add debug output whenever cache files use truncate * branchcache: introduce revbranchcache for caching of revision branch names * branchcache: make _rbcrevslen handling more safe * branches: deprecate -a * branchmap: add seek() to end of file before calling tell() on append open() * branchmap: use revbranchcache when updating branch map * commit: abort if --addremove is specified, but fails * commit: propagate --addremove to subrepos if -S is specified (Bts:issue3759) * graft: drop cset description from empty commit message * graft: give helpful warning for empty grafts * graft: show hashes in user-facing messages * graft: show more useful status information while grafting * graft: use a real conflict for the tests * help: suggest '-v -e' to get built-in aliases for extensions (Bts:issue4461) * log: use namespace logname and colorname * log: use new namespaces api to display names * patch: add a new function to initialize diffopts by feature * patch: rename diffopts to diffallopts * patchbomb: don't honor whitespace and format-changing diffopts (BC) * push: elevate phase transaction to cover entire operation * push: send highest changegroup format supported by both side * status: cache dirstate status in _dirstatestatus() * status: don't list files as both clean and deleted * status: don't list files as both removed and deleted * status: don't override _buildstatus() in workingcommitctx === core === * filelog: fix backwards comment for 'backrevref' * filelog: remove trailing "form feed" character * filelog: use censored revlog flag bit to quickly check if a node is censored * revlog: add a method to get missing revs incrementally * revlog: add config variable for limiting delta-chain length * revlog: add flags argument to _addrevision, update callers use default flags * revlog: bound based on the length of the compressed deltas * revlog: cache chain info after calculating it for a rev (Bts:issue4452) * revlog: compute length of compressed deltas along with chain length * revlog: define censored flag for revlogng index * revlog: increase I/O bound to 4x the amount of data consumed * revlog: make a predicate clearer with parens * revlog: store fulltext when compressed delta is bigger than it * revlog: switch findmissing* methods to incrementalmissingrevs * revlog: verify censored flag when hashing added revision fulltext * revset-filelog: handle hidden linkrev for file missing for head (Bts:issue4490) * transaction: allow generating files with a suffix * transaction: support cache file in backupentries * transaction: support for callbacks during abort * transaction: use the right location when cleaning up backup file (Bts:issue4479) === extensions === * color: add support for colorizing git subrepo diffs * convert: on svn failure, note libsvn version (Bts:issue4043) * histedit: add a test to show that issue4251 is fixed (Bts:issue4251) * largefiles: align the output messages for a removed file with core methods * largefiles: align the output messages for an added file with core methods * largefiles: avoid printing messages while rebasing by "_lfstatuswriters" * largefiles: avoid printing messages while transplanting by "_lfstatuswriters" * largefiles: avoid redundant "updatelfiles" invocation in "overridetransplant" * largefiles: convert addlargefiles() to vfs * largefiles: don't clobber merge action message with user message * largefiles: don't duplicate 'actions' into 'actionbyfile' * largefiles: don't pop largefile-specific arguments to the add command * largefiles: don't print files as both large and normal in addremove dryruns * largefiles: don't rehash largefiles in updatelfiles if standin hash changed * largefiles: don't unnecessarily sort merge action lists * largefiles: don't use 'r' action for normal file that doesn't exist * largefiles: don't use 'r' action for standin that doesn't exist * largefiles: drop the override for 'fetch' * largefiles: drop the unfiltered repo usage in overridepurge() * largefiles: eliminate a duplicate message when removing files in verbose mode * largefiles: enable subrepo support for add * largefiles: enable subrepo support for forget * largefiles: enable subrepo support for remove * largefiles: ensure that the standin files are available in getlfilestoupload() * largefiles: factor out procedures to update lfdirstate for post-committing * largefiles: factor out procedures to update standins for pre-committing * largefiles: fix unused import * largefiles: get function to write status messages via "getstatuswriter()" * largefiles: introduce "_lfcommithooks" to abstract pre-committing procedures * largefiles: introduce "_lfstatuswriters" to customize status reporting * largefiles: look at unfiltered().lfstatus to allow status() to be filtered * largefiles: make linear update set unsure largefiles normal if unchanged * largefiles: pass a matcher instead of a raw file list to removelargefiles() * largefiles: properly sync lfdirstate after removing largefiles * largefiles: put same 'action' object back in 'newglist' * largefiles: return the list of added files from addlargefiles() * largefiles: rewrite merge code using dictionary with entry per file * largefiles: shortcircuit status code also for non-matching patterns * largefiles: show progress when checking standin hashes in outgoing changesets * largefiles: simplify check for lack of path arguments * largefiles: split the creation of a normal matcher out of its install method * largefiles: start by finding files of interest * largefiles: update comments to refer to the right overridden method * largefiles: update standins only at the 1st commit of "hg rebase --continue" * largefiles: update standins only at the 1st commit of "transplant --continue" * largefiles: use clearer debug messages in actions * largefiles: wrap "rebase.rebase" for functions using it directly * mq: drop updateheader - inserthgheader and insertplainheader is enough * mq: smarter handling of plain headers * rebase: add a 'revtodo' constant * rebase: always store rev in state, also when collapsing * rebase: clarify comment about merge ancestor when rebasing merges * rebase: clarify naming of variables holding node hashes - don't call them rev * rebase: handle revtodo as a special value when storing/restoring state * rebase: improve debug messages while processing the list of rebases * rebase: show more useful status information while rebasing * rebase: show warning when rebase creates no changes to commit * rebase: use '>= 0' to know is a revision was rebased === hgweb === * hgweb: allow viewing diffs against p1 or p2 for merge commits (Bts:issue3904) === unsorted === * add: add back forgotten files even when not matching exactly (BC) * add: pass options via keyword args * 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 * bundle2-push: provide transaction to reply unbundler * bundles: do not overwrite existing backup bundles (BC) * changegroup: introduce "raw" versions of some commands * changelog: handle writepending in the transaction * changelog: register changelog.i.a as a temporary file * changelog: rely on transaction for finalization * changelog: rework the delayupdate mechanism * cmdserver: use given streams as pipe channels like other commands * copyfile: allow optional hardlinking * debugrevlog: fix computing chain length in debugrevlog -d * diff: add a --noprefix option * dispatch: only check compatibility against major and minor versions (BC) * extdiff: avoid unexpected quoting arguments for external tools (Bts:issue4463) * filectx: fix annotate to not directly instantiate filectx * generate-working-copy-states: accept depth arguments on command line * getbundle: send highest changegroup format supported by both side * graphlog: add a way to test the 'groupbranchiter' function * groupbranchiter: allow callers to select the first branch * groupbranchiter: support for non-contiguous revsets * hg.clone: set 'stream' depending on whether --pull was requested or not * hghave: we now support Python 2.7.9's ssl for https * hgk: forward command output to ui.fout consistently * highlight: ignore Unicode's extra linebreaks (Bts:issue4291) * https: support tls sni (server name indication) for https urls (Bts:issue3090) * ignore: resolve ignore files relative to repo root (Bts:issue4473) (BC) * linkrev-filelog: 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) * manifest: add optional recording of clean entries to diff * 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) * readmarkers: use unpacker for fixed header * record: don't honor format-changing diffopts (Bts:issue4459) * remove: support remove with explicit paths in subrepos * share: add option to share bookmarks * share: fix source repo lookup on Windows * subrepo: add full revert support for git subrepos * subrepo: add partial diff support for git subrepos * subrepo: add revert support without backup for git subrepos * subrepo: add status support for ignored files in git subrepos * subrepo: fix git subrepo ui argument * tests: adapt glob pattern to fix test with NetBSD's sh(1) (Bts:issue4484) * tests: run 'cvs init' only on non-existent directories (Bts:issue4482) * transplant: properly skip empty changeset (Bts:issue4423) * win32: fix win32 installers generation * win32: remove Mercurial.ini file from Inno Setup installer (Bts:issue4435) == Mercurial 3.2.4 (2015-1-1) == 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) |
Line 16: | Line 389: |
Preliminary release notes for 3.1. | === Core features === |
Line 19: | Line 392: |
* bash_completion: add -l|--list support for shelve * bookmarks: avoid deleting primary bookmarks on rebase |
|
Line 22: | Line 393: |
* branch: add debug message for branch cache write failure * bugzilla: stop trying to cache setup across hook invocation * build: initial support for in-tree autobuilding recipes * buildrpm: include release version in .tar.gz name * bundle2: add ``pushkey`` support * bundle2: fix bundle2 pulling all revs on empty pulls |
|
Line 30: | Line 395: |
* 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' |
* conflict markers: customise local/other name for various command (graft, update, rebase, ...) (BC) |
Line 37: | Line 398: |
* filemerge: add internal:tagmerge merge tool * filemerge: use 'basic' as the default of '[ui] mergemarkers' for safety * filemerge: use non-minimal conflict marker regions (BC) |
* filemerge: add an internal:tagmerge merge tool * filemerge: add a `[ui] mergemarkers` option to use detailed merge marker. |
Line 41: | Line 401: |
* graft: customize graft conflict markers (BC) * help: always show command help with -h (Bts:issue4240) |
|
Line 44: | Line 402: |
* histedit: respect revsetalias entries (Bts:issue4311) | |
Line 46: | Line 403: |
* largefiles: avoid unnecessary creation of .hg/largefiles when opening lfdirstate * largefiles: include largefiles when doing log on a directory (Bts:issue4241) * largefiles: show also how many data entities are outgoing at "hg outgoing" * 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 * make: add a basic osx mpkg target * merge: add conflict marker formatter (BC) * merge: define conflict marker labels in filemerge() * mergetools.hgrc: add minimal configuration for editmerge * packaging: move output directory from build/ to packages/ * pager: add attend-<command> option * patchbomb: includes series information in the header * pull: when remote supports it, pull phase data alongside changesets * purge: add options for deleting only files or only directories * push: use bundle2 to push phases when available * 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 * rebase: specify custom conflict marker labels for rebase (BC) * resolve: abort when not applicable (BC) * resolve: don't abort resolve -l even when no merge is in progress |
|
Line 71: | Line 405: |
* revset: maintain ordering when subtracting from a baseset (Bts:issue4289) * revset: optimize baseset.__sub__ (Bts:issue4313) * setup: fixed for Pythons which don't have a CFLAGS * setup: make Xcode 5.1 check less specific * shelve: accept '--edit' like other commands creating new changeset * strip: drop -b/--backup option (BC) * strip: remove bookmarks after strip succeed (Bts:issue4295) |
|
Line 86: | Line 413: |
* update: specify custom conflict markers for update (BC) | |
Line 89: | Line 415: |
* version: don't traceback if no extensions to list (Bts:issue4312) | === 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) |
Line 91: | Line 455: |
=== 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 |
|
Line 100: | Line 480: |
* p4: accept changesets with no description (Bts:issue4282) | |
Line 105: | Line 484: |
* resolve: keep wlock while resolving * revlog: hold a private reference to self._cache * revlog: make _chunkcache access atomic |
|
Line 242: | Line 618: |
This is a regularly-scheduled bugfix release. | This is a regularly-scheduled bugfix release. |
Line 306: | Line 682: |
== Mercurial 2.8.2 (2014-01-01) == This is a regularly-scheduled bugfix release. * fileset, revset: do not use global parser object for thread safety * hgweb: avoid initialization race (Bts:issue3953) * mpatch: rewrite pointer overflow checks == Mercurial 2.8.1 (2013-12-01) == This is a regularly-scheduled bugfix release. * bookmarks: consider successor changesets when moving bookmark (Bts:issue4015) * contrib: don't mention obsolete graphlog extension in mercurial.ini * contrib: promote strip extension over MQ in sample.hgrc * contrib: stop mentioning obsolete graphlog extension in sample.hgrc * convert: fix svn crash when svn.ra.get_log calls back with orig_paths=None * help: fix backwards bisect help example * help: use progress instead of mq as in 'hg help config' example * hgk: fix tag list parser (Bts:issue4101) * hgweb: ignore non numeric "revcount" parameter values (Bts:issue4091) * histedit: hold wlock and lock while in progress * largefiles: cache largefiles for update, also without printmessage * largefiles: don't crash on 'local renamed directory' actions * merge: move forgets to the beginning of the action list * minirst: do not interpret a directive as a literal block * minirst: find admonitions before pruning comments and adding margins * obsolete: stop doing membership test on list * parse_index2: fix crash on bad argument type (Bts:issue4110) * phase: better error message when --force is needed * rebase: fix rebase aborts when 'tip-1' is public (Bts:issue4082) * rebase: fix working copy location after a --collapse (Bts:issue4080) * share: fix unshare calling wrong repo.__init__() method * shelve: fix bad argument interaction with largefiles (Bts:issue4111) * shelve: unshelve using an unfiltered repository * strip: fix last unprotected mq reference (Bts:issue4097) * strip: hold wlock for entire duration * subrepo: sanitize non-hg subrepos * templater: fix escaping in nested string literals (Bts:issue4102) * templater: makes branches work correctly with stringify (Bts:issue4108) * templater: only recursively evaluate string literals as templates (Bts:issue4103) * unshelve: add tests for unknown files * unshelve: don't commit unknown files during unshelve (Bts:issue4113) * util: url keeps backslash in paths * util: warn when adding paths ending with \ == Mercurial 2.8 (2013-11-01) == This is a regularly scheduled feature release. === Core features === * hgweb: add revset syntax support to search * hgweb: always run search when a query is entered (BC) * hgweb (paper theme): add infinite scrolling to graph * hgweb: show full date in rfc822 format in tooltips at shortlog page * proxy: allow wildcards in the no proxy list (Bts:issue1821) * pull: for pull --update with failed update, print hint if any * rebase: preserve working directory parent (BC) * sslutil: add a config knob to support TLS (default) or SSLv23 (BC) (Bts:issue4038) * templatefilters: add short format for age formatting * templater: support using templates with non-standard names from map file * update: add error message for dirty non-linear update with no rev * addremove: don't do full walks * log: make file log slow path usable on huge repos * subrepo: let the user choose to merge, keep local or keep remote subrepo revisions === Extension features === * convert-internals: introduce hg.revs to replace hg.startrev and --rev with a revset * convert-internals: update source shamap when using filemap, just as when not using filemap * factotum: clean up keychain for multiple hg repository authentication * histedit: abort if there are multiple roots in "--outgoing" revisions * mq: extract strip function as its standalone extension (Bts:issue3824) * mq: look for modified subrepos when checking for local changes * rebase: remove bailifchanged check from pullrebase (BC) * shelve: add a shelve extension to save/restore working changes === Fixes === * pager: honour internal aliases * patch: ensure valid git diffs if source/destination file is missing (Bts:issue4046) * patch: Fix nullid for binary git diffs (Bts:issue4054) * progress: stop getting stuck in a nested topic during a long inner step * rebase: handle bookmarks matching revset function names (Bts:issue3950) * rebase: preserve active bookmark when not at head (Bts:issue3813) * rebase: preserve metadata from grafts of changes (Bts:issue4001) * rebase: fix selection of base used when rebasing merge (Bts:issue4041) * ui: send password prompts to stderr again (Bts:issue4056) == Mercurial 2.7.2 (2013-10-01) == Regularly scheduled bugfix release. This fixes significant regressions from 2.7 in push/pull performance and SSL negotiation. * bundle: fix performance regression when bundling file changes (Bts:issue4031) * generaldelta: initialize basecache properly * help: use full name of extensions to look up them for keyword search * histedit: abort if there are multiple roots in "--outgoing" revisions * histedit: add more detailed help about "--outgoing" * histedit: suggest "histedit --abort" for inconsistent histedit state * httpclient: apply upstream revision da7579b034a4 to fix SSL problems (Bts:issue4038) * rebase: catch RepoLookupError at restoring rebase state for abort/continue * rebase: catch RepoLookupError at restoring rebase state for summary * repoview: have unfilteredpropertycache using the underlying cache * repoview: make propertycache.setcache compatible with repoview * revset: fix wrong keyword() behaviour for strings with spaces * sslutil: backed out changeset 074bd02352c0 (Bts:issue4038) * strip: set current bookmark to None if stripped == Mercurial 2.7.1 (2013-09-03) == Regularly scheduled bugfix release. * rebase: handle bookmarks matching revset function names (Bts:issue3950) * tags: write tag overwriting history also into tag cache file (Bts:issue3911) == Mercurial 2.7 (2013-08-01) == Regularly scheduled feature release. This release contains an important fix for a merge ancestor calculation regression in the 2.6 series. === Core features === * bookmarks: allow bookmark command to take multiple arguments * commands: add checks for unfinished operations (Bts:issue3955) * commit: enable --secret option * hgweb: run search instead of showing wrong error for ambigious identifier * import: cut commit messages at --- unconditionally (Bts:issue2148) * log: add a log style that is default+phase (Bts:issue3436) * paper: add line wrapping switch to file source view * paper: code selection without line numbers in file source view * paper: highlight line which is linked to in source view * revert: make backup when unforgetting a file (Bts:issue3423) * rollback: mark as deprecated * sslutil: force SSLv3 on Python 2.6 and later (Bts:issue3905) * summary: augment output with info from extensions * templater: add strip function with chars as an extra argument * log: show style list when unknown style specified * tip: deprecate the tip command * update: add tracking of interrupted updates (Bts:issue3113) === Extension features === * churn: split email aliases from the right * histedit: refuse to edit history that contains merges (Bts:issue3962) * convert: improve error handling when parsing splicemap (Bts:issue2084) * convert: support paths with spaces in splicemap (Bts:issue3844) === Fixes === * ancestor: Fix a reference counting bug in the C version (Bts:issue3984) * bookmarks: update only proper bookmarks on push -r/-B (issue 3973) * bookmarks: pull --update updates to active bookmark if it moved (Bts:issue4007) * changegroup: fix fastpath during commit * checklink: work around sshfs brain-damage (Bts:issue3636) * convert: catch empty origpaths in svn gettags (Bts:issue3941) * convert: fix bad conversion of copies when hg.startrev is specified * convert: handle changeset sorting errors without traceback (Bts:issue3961) * hgweb: fix incorrect way to count revisions in log (Bts:issue3977) * histedit: don't clobber working copy on --abort if not on histedit cset * largefiles: overridematch() should replace the file path instead of extending (Bts:issue3934) * progress: respect HGPLAIN * rebase: allow aborting when descendants detected * rebase: continue abort without strip for immutable csets (Bts:issue3997) * rebase: don't clobber wd on --abort when we've updated away (Bts:issue4009) * revlog: handle hidden revs in _partialmatch (Bts:issue3979) == Mercurial 2.6.3 (2013-07-01) == This is a regularly-scheduled bugfix release. * commit: amending with --close-branch (Bts:issue3445) * doc: make it easier to read how to enable extensions * doc: reword "config file" to "configuration file" * docs: change description to synopsis in hgrc.5 * histedit: raise ImportError when demandloading is enabled * pathencode: fix hashmangle short dir limit (Bts:issue3958) * update: remove .hg/graftstate on clean (Bts:issue3970) == Mercurial 2.6.2 (2013-06-01) == This is a regularly-scheduled bugfix release. * amend: complain more comprehensibly about subrepos * blackbox: fix blackbox causing exceptions in tests * blackbox: fix recording exit codes (Bts:issue3938) * dirstate: don't overnormalize for ui.slash * graft: refuse to commit an interrupted graft (Bts:issue3667) * help: fix role/option confusion in RST * help: stop documentation markup appearing in generated help == Mercurial 2.6.1 (2013-05-14) == This is an unscheduled bugfix release to address some minor regressions in the 2.6 release. * convert: fix bug of wrong CVS path parsing without port number (Bts:issue3678) * help/config: note 64-bit Windows registry key used with 32-bit Python * hfs+: rewrite percent-escaper (Bts:issue3918) * hgignore: fix regression with hgignore directory matches (Bts:issue3921) * highlight: fix page layout with empty first and last lines * largefiles: check existence of the file with case awareness of the filesystem * largefiles: check unknown files with case awareness of the filesystem * pathencode: grow buffers to increase safety margin * revert: ensure that copies and renames are honored (Bts:issue3920) * subrepo: open files in 'rb' mode to read exact data in (Bts:issue3926) * windows: check target type before actual unlinking to follow POSIX semantics == Mercurial 2.6 (2013-05-01) == /!\ This release has known issues with some ignore rules (Bts:issue3921) and subrepos on Windows (Bts:issue3926) This is a regularly scheduled feature release. === Core features === * amend: support amending merge changesets (Bts:issue3778) * archive: raise error.Abort if the file pattern matches no files * bash_completion: allow remove to complete normal files * bookmarks: allow (re-)activating a bookmark on the current changeset * bookmarks: don't allow integers as bookmark/branch/tag names * bookmarks: moving the active bookmark deactivates it * bookmarks: resolve divergent bookmarks when moving active bookmark forward * bookmarks: resolve divergent bookmark when moving across a branch * commit: show active bookmark in commit editor helper text * config: discard "%unset" values defined in the other files read in previously * dates: support 'today' and 'yesterday' in parsedate (Bts:issue3764) * date: understand "now" as a shortcut for the current time * dispatch: print 'abort:' when a pre-command hook fails (BC) * dispatch: return status is 1 and a nice error message is printed when a user intervention is required (BC) * export: clobber files with -o (BC) (Bts:issue3652) * export: export working directory parent by default * export: show 'Date' header in a format that also is readable for humans * filesets: add eol predicate * hgweb: generate documentation as HTML (previously as text) * hgweb: teach archive how to download a specific directory or file * merge: apply non-interactive working dir updates in parallel * mergetools: avoid losing the merged version with meld * mergetools: vimdiff issues a warning explaining how to abort * sslutil: abort if peer certificate is not verified for secure use * summary: make "incoming" information sensitive to branch in URL (Bts:issue3830) * summary: make "outgoing" information sensitive to branch in URL (Bts:issue3829) * summary: show active bookmark even if not at current changeset * templatekw: add default styles for hybrid types (Bts:issue3887) * templater: add get() function to access dict element (e.g. extra) * addremove: improve performance * ancestor: a new algorithm that is faster for nodes near tip * dirstate: performance improvements * grep: use re2 if possible * parsers: a C implementation of the new ancestors algorithm * scmutil: rewrite dirs in C, use if available * tags: update tag type only if tag node is updated (Bts:issue3911) === Extension features === * blackbox: new extension * hgk: add support for phases * hgk: don't use fixed format for dates * hgk: update backgroud colour when Ttk is available * histedit: allow "-" as a command file * histedit: handle multiple spaces between action and hash (Bts:issue3893) * histedit: make "hg histedit" sensitive to branch in URL * histedit: properly handle --continue on empty fold * histedit: support editing of the first commit (Bts:issue3767) * interhg: feature integrated in core. Extension removed. * largefiles: don't cache largefiles for pulled heads by default * largefiles: improve reuse of HTTP connections * largefiles: introduce lfpull command for pulling missing largefiles * largefiles: introduce pulled() revset expression for use in --lfrev * largefiles: introduce pull --lfrev option * largefiles: quiet (and document) undefined name errors (Bts:issue3886) * largefiles: stat all largefiles in one batch before downloading * largefiles: use repo.wwrite for writing standins (Bts:issue3909) * mq: comply with filtering when injecting fake tags (Bts:issue3812) * mq: do not inherit settings form base repo in mqrepo (Fixes Bts:issue2358) * rebase: check no-op before checking phase (Bts:issue3891) * rebase: fix --collapse when a file was added then removed * smtp: use 465 as default port for SMTPS * smtp: verify the certificate of the SMTP server for STARTTLS/SMTPS * subrepo: clone of git sub-repository creates incorrect git branch (Bts:issue3870) * subrepo: do not push mercurial subrepos whose store is clean * subrepo: fix exception on revert when "all" option is omitted === Fixes === * annotate: increase refcount of each revision correctly (Bts:issue3841) * applyupdates: assign variable before we try to use it (Bts:issue3855) * bookmarks: allow moving a bookmark forward to a descendant * bookmarks: fix bug that activated a bookmark even with -r passed * case collision: Avoid unexpectd case folding issue during merge that should succeed (Bts: issue3452) * commit: allow closing "non-head" changesets * convert/git: catch errors from modern git-ls-remote (Bts:issue3428) * destroyed: invalidate phraserevs cache in all case (Bts:issue3858) * diff: fix binary file removals in git mode * http: avoid large text dumps when remote url is not a repo * import: don't rollback and unrelated transaction on failed import --exact (Bts:issue3616) * log: fix behavior with empty repositories (Bts:issue3497) * outgoing: fix possible filtering crash in outgoing (Bts:issue3814) * pager: catch ctrl-c on exit (Bts:issue3834) * record: abort on malformed patches instead of crashing * revset: change ancestor to accept 0 or more arguments (Bts:issue3750) * revset: don't abort when regex to tag() matches nothing (Bts:issue3850) * scheme: don't crash on invalid URLs * setup: make error message for missing Python headers more helpful * sshpeer: store subprocess so it cleans up correctly * win32: use explicit path to "python.exe" only if it exists == Mercurial 2.5.4 (2013-04-04) == This fixes an urgent regression in merging with subrepos introduced in 2.5. * applyupdates: assign variable before we try to use it (Bts:issue3855) * setup.py: properly discard trust warning == Mercurial 2.5.3 (2013-04-01) == * hgweb: show correct error message for i18n environment * localrepo: always write the filtered phasecache when nodes are destroyed (Bts:issue3827) * rebase: restore active bookmark after rebase --continue * setup.py: add metadata to register package to PyPI * setup.py: ignore warnings from obsolete * zsh_completion: fix trailing carriage return spoiling tag completion == Mercurial 2.5.2 (2013-03-01) == * bundle: treat branches created newly on the local correctly (Bts:issue3828) * largefiles: avoid rechecking hashes when avoidable * largefiles: don't let update leave wrong largefiles in wd if fetch fails * largefiles: fix off-by-one error on pull --all-largefiles * largefiles: fix download of largefiles from an empty list of changesets * largefiles: missing largefiles should not be committed as removed * mergetools: vimdiff issue a warning explaining how to abort * outgoing: fix possible filtering crash in outgoing (Bts:issue3814) * rebase: fix potential infinite loop in complex rename situation (Bts:issue3843) == Mercurial 2.5.1 (2013-02-08) == This is a non-scheduled bugfix release. * hgk: support the old way of getting the current Ttk theme (Bts:issue3808) * hgweb.cgi: fix internal WSGI emulation (Bts:issue3804) * hgweb: make 'summary' work with hidden changesets (Bts:issue3810) * incoming: fix incoming when a local head is remotely filtered (Bts:issue3805) * largefiles: don't crash when trying to find default dest for url without path * rebase: derive node from target rev (Bts:issue3802) == Mercurial 2.5 (2013-02-01) == This is a regularly-scheduled feature release. === Core features === * branchmap: improved performances * bundle: add revset expression to show bundle contents (Bts:issue3487) * dirstate: implement unix statfiles in C * hgweb: add (Atom) subscribe links to the repository index * hgweb: add "URL breadcrumbs" * hgweb: add branches RSS and Atom feeds * hgweb: secret changeset are excluded from html view (Bts:3614 ) * serve: use chunked encoding in hgweb responses * pathencode: implement both basic and hashed encoding in C * subrepo: append subrepo path to subrepo error messages * validate: check for spurious incoming filelog entries * hgweb: allow hgweb's archive to recurse into subrepos === Changeset Evolution === Major progress toward ChangesetEvolution were done. * hidden changesets are now properly ignored by all commands * a global --hidden flag is added to give access to hidden changesets * rewriting a changeset but not its descendants is now allowed; this leaves unstable changeset behind * we now detect *divergent* changesets. The third and last kind of obsolescence related troubles. `divergent()` revset is added * a `troubled()` revset have been added * branchmap for of *visible* and *served* changeset are now cached on disk. This is a major performance improvements * performance improvements of most evolution related algorithm === Extension features === * color: add template label function * convert: add config option to use the local time zone * convert: add support for converting git submodule (Bts:issue3528) * hgk: use Ttk instead of plain Tk * inotify: don't fall over just because of a dangling symlink * largefiles: fix revert removing a largefile from a merge * largefiles: fix update from a merge with removed files * largefiles: make log match largefiles in the non-standin location too * largefiles: make update with backup files in .hglf slightly less broken * largefiles: rename 'admin' to more descriptive 'lfstoredir * rebase: performance improvements * rebase: rebase set with multiple roots are now handled by the --rev option * record: use patch.diffopts to account for user diffopts * share: always set default path to work with subrepos (Bts:issue3518) * zsh_completion: add completion of branch names === Fixes === * commands: 'hg bookmark NAME' should work even with ui.strict=True * copies: do not track backward copies, only renames (Bts:issue3739) * destroyed: keep the filecache in sync with `__dict__` (Bts:issue3335, Bts:issue3693, Bts:issue3743) * grep: don't search past the end of the searched string * hgweb: properly returns 404 for unknown revision (instead of 500) * histedit: proper phase conservation (Bts:issue3724) * histedit: prevents obsolescence cycle (Bts:issue3681) * hook: disable demandimport before importing hooks * mq: don't fail when removing a patch without patch file from series file * mq: fix qpop of working directory parent patch when not at qtip * zeroconf: use port from server instead of picking port from config (Bts:issue3746) * update: update to current bookmark if it moved out from under us (issue3682) * bookmarks: show active bookmark even if not at working dir * largefiles: let wirestore._stat return stats as expected by remotestore verify * largefiles: adapt verify to batched remote statlfile (issue3780) * largefiles: don't allow corruption to propagate after detection * largefiles: don't verify largefile hashes on servers when processing statlfile * largefiles: allow use of urls with #revision * largefiles: fix commit when using relative paths from subdirectory * largefiles: fix cat when using relative paths from subdirectory * histedit: prevent parent guessed via --outgoing from being a revset (issue3770) * rebase: delete divergent bookmarks on destination (issue3685) * hgwebdir: use web.prefix when creating url breadcrumbs (issue3790) * subrepo: allow skipping courtesy phase sync (issue3781) * merge: .hgsubstate is special as merge destination, not as merge source * merge: improved handling of symlinks == Mercurial 2.4.2 (2013-01-01) == This is a regularly-scheduled bugfix release. * amend: invalidate dirstate in case of failure (Bts:issue3670) * amend: prevent loss of bookmark on failed amend * bookmarks: fix head selection for merge with two bookmarked heads * bundlerepo: don't return the peer without bundlerepo from getremotechanges * dirstate: don't rename branch file if writing it failed * dirstate: remove obsolete comment from setbranch * hgweb: avoid generator exhaustion with branches * hgweb: fix iterator reuse in atom feed generation * hgwebdir: honor web.templates and web.static for static files (Bts:issue3734) * largefiles revert: update lfdirstate with result from first cleanliness check * largefiles status: update lfdirstate with result from cleanliness check * largefiles: commit directories that only contain largefiles (Bts:issue3548) * largefiles: don't walk through all ignored files * paper: sanity-check page feed links * scmutil: don't try to match modes on filesystems without modes (Bts:issue3740) * zeroconf: use port from server instead of picking port from config (Bts:issue3746) == Mercurial 2.4.1 (2012-12-03) == This is a regularly-schedule bugfix release. * amend: force editor only if old message is reused (Bts:issue3698) * grep: don't search past the end of the searched string * hooks: be even more forgiven of non-fd descriptors (Bts:issue3711) * hooks: delay I/O redirection until we actually run a hook (Bts:issue3711) * phases: fix missing "error" module import (Bts:issue3707) * rebase: fix pull --rev options clashing with --rebase (Bts:issue3619) * subrepo: add argument to "diff()" to pass "ui" of caller side (Bts:issue3712) (API) * update: allow update to existing branches with invalid names (Bts:issue3710) * util: make chunkbuffer non-quadratic on Windows == Mercurial 2.4 (2012-11-01) == This is a regularly-scheduled feature release. === Core features === * amend: support for ChangesetEvolution if enabled * bookmarks: deactivate current bookmark if no name is given * bookmarks: teach the -r option to use revsets * bookmarks: disallow bookmarks named 'tip', '.', or 'null' * clone: substantial speedup to clone on repo with a lots of heads (Bts:issue3378) * clone: activate bookmark specified with --updaterev * clone: update to @ bookmark if it exists * log: substantial speedup for untracked files (Bts:issue1340) * revsets: add branchpoint() function * resolve: commit the changes after each item resolve (Bts:issue3638) * subrepo, hghave: use "svn --version --quiet" to determine version number * subrepo: setting LC_MESSAGES only works if LC_ALL is empty or unset * templatefilters: add parameterized date method * templatefilters: add parameterized fill function * templatefilters: avoid traceback caused by bogus date input (Bts:issue3344) * templatekw: add p1rev, p1node, p2rev, p2node keywords * templatekw: add parent1, parent1node, parent2, parent2node keywords * templater: abort when a template filter raises an exception (Bts:issue2987) * templater: add if/ifeq conditionals * templater: add sub() function * templating: make new-style templating features work with command line lists * bookmarks: take ChangesetEvolution into account when updating (Bts:issue3561) * speedup various operation related to ChangesetEvolution * add detection of changeset ''bumped'' by ChangesetEvolution === Extension features === * color: add additional changeset.phase label to log.changeset and log.parent * color: enabled color support for export command (Bts:issue1507) * color: support for all grep fields * contrib: add a commit synthesizer for reproducing scaling problems * histedit: refuse to edit public changeset * histedit: replaces patching logic by merges * histedit: support for ChangesetEvolution if enabled * largefiles: always create the cache and standin directories when cloning * largefiles: distinguish "no remote repo" from "no files to upload" (Bts:issue3651) * largefiles: fix a traceback in lfconvert if a largefile is missing (Bts:issue3519) * mq: improve qqueue message with patches applied (Bts:issue3036) * mq: update bookmarks during qrefresh * notify: support revset selection for subscriptions * rebase: support for ChangesetEvolution if enabled * record: checks for valid username before starting recording process (Bts:issue3456) * record: fix display of non-ASCII names in chunk selection === Fixes === * amend: fix incompatibity between logfile and message option (Bts:issue3675) * amend: wrap all commit operations in a single transaction * bookmarks: abort when incompatible options are used (Bts:issue3663) * bookmarks: avoid redundant creation/assignment of "validdests" in "validdest()" * bookmarks: check bookmark format during rename (Bts:issue3662) * bookmarks: when @ bookmark diverges, don't double the @ sign (BC) * bookmark: prevent crashing when a successor is unknown locally (Bts:issue3680) * clone: activate @ bookmark if updating to it * clone: don't %-escape the default destination (Bts:issue3145) * clone: make sure to use "@" as bookmark and "default" as branch (Bts:issue3677) (BC) * clone: print bookmark name when clone activates a bookmark * commands: don't infer repo for commands like update (Bts:issue2748) * convert: normalize paths in filemaps (Bts:issue3612) * dirstate: handle large dates and times with masking (Bts:issue2608) * dirstate: handle dangling junctions on windows (Bts:issue2579) * filemerge: use util.shellquote when calling merge (Bts:issue3581) * hgweb: make the escape filter remove null characters (Bts:issue2567) * http2: make it possible to connect w/o ssl on port 443 * icasefs: make case-folding collision detection as deletion aware (Bts:issue3648) * largefiles: don't copy largefiles from working dir to the store while converting * largefiles: respect the rev when reading standins in copytostore() (Bts:issue3630) * largefiles: use 'default' instead of 'default-push' when pulling (Bts:issue3584) * mq: fix qrefresh case sensitivity (Bts:issue3271) * patchbomb: respect --in-reply-to for all mails if no intro message is sent * remove: don't return error on directories with tracked files * revset: accept @ in unquoted symbols (Bts:issue3686) * scmutil: add mustaudit delegation to filtervfs (Bts:issue3673) * subrepo: only do clean update when overwrite is set (Bts:issue3276) * subrepo: subrepo isolation, pass baseui when cloning a new subrepo (Bts:issue2904) * update: check for missing files with --check (Bts:issue3595) (BC) * url: use open and not url.open for local files (Bts:issue3624) * verify: fix all doubled-slash sites (Bts:issue3665) * wireproto: fix pushkey hook failure and output on remote http repo == Mercurial 2.3.2 (2012-10-01) == * amend: preserve phase of amended revision (Bts:issue3602) * archival: add "extended-timestamp" extra block for zip archives (Bts:issue3600) * hgweb: avoid bad $$ processing in graph (Bts:issue3601) * hgweb: fix incorrect graph padding calculation (Bts:issue3626) * largefiles: fix return codes for multiple commands * largefiles: don't convert dest=None to dest=hg.defaultdest() in clone command * largefiles: download missing subrepo revs when archiving * largefiles: enable islfilesrepo() prior to a commit (Bts:issue3541) * largefiles: handle commit -A properly, after a --large commit (Bts:issue3542) * largefiles: preserve exit code from outgoing command (Bts:issue3611) * largefiles: restore caching of largefiles with 'clone -U --all-largefiles' * largefiles: restore normal 'clone -u' and 'clone -U' functionality * lock: fixed race condition in trylock/testlock (Bts:issue3506) * mergetools.hgrc: set vimdiff to check=changed * strip: fix revset usage (Bts:issue3604) * subrepo: encode unicode path names (Bts:issue3610) == Mercurial 2.3.1 (2012-09-01) == * clone: don't fail with --update for non-local clones (Bts:issue3578) * commit: normalize filenames when checking explicit files (Bts:issue3576) * fileset: actually implement 'minusset' * fileset: do not traceback on invalid grep pattern * fileset: exclude deleted files from matchctx.existing() * fileset: fix generator vs list bug in fast path * fileset: matchctx.existing() must consider ignored files * fileset: matchctx.existing() must consider unknown files * largefiles: adjust localstore to handle batch statlfile requests (Bts:issue3583) * merge: handle case when heads are all bookmarks * obsolete: import modules within mercurial/ without "from mercurial" * revlog: don't try to partialmatch strings with length > 40 * rollback: write dirstate branch with correct encoding * store: only one kind of OSError means "nonexistent entry" * store: sort the results of fncachestore.datafiles() * strip: fix revset usage (Bts:issue3604) * templater: handle a missing value correctly * verify: do not choke on valid changelog without manifest * wix: bump MSI based installers to use Python 2.7 == Mercurial 2.3 (2012-08-01) == This is a regularly-scheduled feature release with numerous improvements and bugfixes. === Core features === * help: add --keyword (-k) for searching help * hgweb: side-by-side comparison functionality * log: support --graph without graphlog extension * push: accept revset argument for --rev * merge: bookmarks will no longer automatically merge with unnamed heads or other bookmarks. Instead it picks heads with diverging bookmarks. * introduce ChangesetsObsolescence concept ''(experimental)'' * bookmarks: allow existing remote bookmarks to become heads when pushing * bookmarks: pull new bookmarks from remote by default '''(backward incompatible change)''' * bookmarks: delete divergent bookmarks on merge * bisect: set HG_NODE when runing a command * graft: allow -r to specify revisions * graft: implement --log (Bts:issue3438) * graft: remark on empty graft * hooks: print out more information when loading a python hook fails * identity: show trailing '+' for dirty subrepos (Bts:issue2839) * incoming/outgoing: handle --graph in core * merge: warn about file deleted in one branch and renamed in other (Bts:issue3074) * Mercurial can now identify third-party extensions as sources of tracebacks * outgoing: accept revset argument for --rev * performance improvement on branchy repo: incrementaly update branchcache * performance improvement on huge file tree: add a C function to pack the dirstate * performance improvement for huge .hgignore: process regex with re2 bindings if available * revset: add "diff" field to "matching" predicate * revset: add "converted" predicate to find converted changesets * revset: add "origin" and "destination" predicates, to get graft, transplant or rebase origins or destinations. * revset: add "extra" predicate to match changesets extra fields (Bts:issue2767) * revset: add pattern matching to "bookmarks/branch/extra/tag/user" predicated === Extension features === * acl: use of "!" prefix in user or group names * children: mark extension as deprecated * convert/svn: handle non-local svn destination paths (Bts:issue3142) * convert: accept Subversion 'file:///c%3A/svnrepo' syntax on Windows * fetch: mark extension as deprecated * graphlog: feature is now into core * histedit: new extension for interactive history editing * hg-ssh: add read-only flag * largefiles: add --all-largefiles flag to pull and clone (Bts:issue3188) * largefiles: improve performance by batching statlfile requests when pushing a largefiles repo (Bts:issue3386) * largefiles: no longer attempt to clone all largefiles to non-local destinations * largefiles: optimize performance when updating (Bts:issue3440) * largefiles: support revsets for cat, outgoing --large and revert * mq: introduce qpush/qpop/qgoto --keep-changes * strip: introduce -B option to remove a bookmark * rebase: allow collapsing branches in place (Bts:issue3111) * rebase: make --dest understand revsets * rebase: drop the infamous --detach option: rebase now behave with --source and --rev as expectable. It may no longer add second parent to rebased changeset '''(backward incompatible change)''' * transplant: handle non-empty patches doing nothing (Bts:issue2806) * transplant: manually transplant pullable changesets with --log === Fixes === * bisect: fix O(n**2) behaviour (Bts:issue3382) * bookmarks: fix push of moved bookmark when creating new branch heads * case insensitive file system can no longer be confused by `-R` on (Bts:issue2167) * copies: one fix related to directory rename detection (Bts:issue3511) * convert: check for failed svn import in debugsvnlog and abort cleanly * convert: ignore svn:executable for subversion targets without exec bit support * convert: keep branch switching merges with ancestors (Bts:issue3340) * convert: make filemap renames consistently override revision renames * debugrevlog: fix a bug with empty repository (Bts:issue3537) * graphlog: don't truncate template value at last \n * httprepo: ensure Content-Type header exists when pushing data * largefiles: fix a traceback when addremove follows a remove (Bts:issue3507) * largefiles: fix a traceback when archiving a subrepo in a subrepo * largefiles: fix addremove when largefile is missing (Bts:issue3227) * largefiles: fix addremove with -R option * largefiles: fix exception hack for i18n (Bts:issue3197) * largefiles: fix path handling for cp/mv (Bts:issue3516) * largefiles: archive -S now store largefiles instead of standins * largefiles: fix hg addremove when already removed largefile exists (Bts:issue3364) * merge: do not warn about copy and rename in the same transaction (Bts:issue2113) * mq: add ".hgsubstate" to patch target list only if it is not listed up yet * mq: create patch file after commit to import diff of ".hgsubstate" at qrefresh * pager: work around bug in python 2.4's subprocess module (Bts:issue3533): * revlog: zlib.error are no longer sent to the user (Bts:issue3424) * tag: don't allow tagging the null revision (Bts:issue1915) == Mercurial 2.2.3 (2012-07-01) == This is a regularly-scheduled bugfix release. * amend: disable hooks when creating intermediate commit (Bts:issue3501) * archive: make progress only show files that are actually archived * bookmarks: correctly update current bookmarks on rebase (Bts:issue2277) * bugzilla: stop bugs always being marked as fixed in xmlrpc (Bts:issue3484) * graft: don't drop the second parent on unsuccessful merge (Bts:issue3498) * hgweb: fixes linebreak location in gitweb filediff.tmpl view * rebase: improve error message on improper phases * record: fix display of non-ASCII names * statichttprepo: don't send Range header when requesting entire file * strip: update help to state that you can strip public changeset * subrepo/svn: make rev number retrieval compatible with svn 1.5 (Bts:issue2968) * subrepo: support Git being named "git.cmd" on Windows (Bts:issue3173) * subrepo: warn user if Git is not version 1.6.0 or higher * update: fix help regarding update to ancestor == Mercurial 2.2.2 (2012-06-01) == This is a regularly-scheduled bugfix release. * addremove: document default similarity behavior (Bts:issue3429) * alias: inherit command optionalrepo flag (Bts:issue3298) * amend: preserve extra dict (Bts:issue3430) * bisect: save current state before running a command * bugzilla: fix transport initialization on python 2.4 * build: fix hgrc manpage building with docutils 0.9 * bundle: make bundles more portable (Bts:issue3441) * changelog: ensure that nodecache is valid (Bts:issue3428) * hg-ssh: exit with 255 instead of -1 on error * hgweb: fix filediff base calculation * largefiles: fix "hg status dir" missing regular files (Bts:issue3421) * largefiles: fix deletion of multiple missing largefiles (Bts:issue3329) * largefiles: follow normal codepath for addremove if non-largefiles repo (Bts:issue3249) * largefiles: in putlfile, ensure tempfile's directory exists prior to creation * largefiles: use wlock for lfconvert (Bts:issue3444) * localrepo: clear _filecache earlier to really force reloading (Bts:issue3462) * match: make 'match.files()' return list object always * mq: add --no-backup for qpush/qpop/qgoto * mq: backup local changes in qpop --force (Bts:issue3433) * mq: backup local changes in qpush --force * mq: qimport need wlock for --push - do that after releasing lock * osutil: handle deletion race with readdir/stat (Bts:issue3463) * pager: check if signal.SIGPIPE exists * pager: preserve Hg's exit code (and fix Windows support) (Bts:issue3225) * pager: remove quiet flag * paper, monoblue: link correctly to lines in annotate view * parsers: fix refcount bug on corrupt index * patch: fix segfault against unified diffs which start line is zero * patch: keep patching after missing copy source (Bts:issue3480) * posix: workaround lack of TIOCGWINSZ on Irix (Bts:issue3449) * revpair: handle odd ranges (Bts:issue3474) * revset: explicitely tag alias arguments for expansion * revset: fix infinite alias expansion detection * revset: fix traceback for bogus revisions in id(rev) * revset: make matching() preserve input revision order * scmutil: seen.union should be seen.update (Bts:issue3476) * subrepo: do not traceback on .hgsubstate parsing errors * subrepo: ignore blank lines in .hgsubstate (Bts:issue3424) * tag: run commit hook when lock is released (Bts:issue3344) * templater: handle !SyntaxError when parsing ui.logtemplate * util: fix bad variable use in bytecount introduced by f0f7f3fab315 * win32: fix encoding handling for registry strings (Bts:issue3467) == Mercurial 2.2.1 (2012-05-03) == This is an unscheduled bugfix release to fix a signficant memory leak in hgweb. * bookmarks: catch the proper exception for missing revisions * help: add reference to template help (Bts:issue3413) * help: added description for the web.collapse setting * largefiles: fix commit of both largefiles and non-largefiles (Bts:issue3354) * parsers: fix refcount leak, simplify init of index (Bts:issue3417) == Mercurial 2.2 (2012-05-01) == This is a regularly-scheduled feature release. The most notable feature is a new safe '--amend' option for commit using our new [[Phases|phases]] infrastructure. There are also a number of signficant performance improvements for large repositories and improvements for case-folding filesystems. See UpgradeNotes for minor compatibility notes. === Core features === * commit: add --amend option * fileset: add "subrepo" fileset symbol * graft: add --dry-run support (Bts:issue3362) * hgweb: add support for branch width and color settings * hgweb: add block numbers to diff regions and related links * hgweb: support multi-level repository indexes by enabling descend and collapse * merge: improve performance with lots of unknown files * parsers: incrementally parse the revlog index in C * plan9: add support for [[https://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs|plan9]] * push/pull: improve performance for partial transfers * push: decompress in larger chunks for better performance on the server * clone: add server config option to prefer uncompressed clone * revert: add support for reverting subrepos * revset: add "matching" keyword * store: speed up read and write of large fncache files * ui: optionally quiesce ssl verification warnings on python 2.5 === Extension features === * bugzilla: add xmlrpcemail submission for Bugzilla 3.6 email interface * bugzilla: allow change comment to mark bugs fixed * bugzilla: extract optional hours from commit message and update bug time * bugzilla: modify access interface to include new bug states * graphlog: add all log options to glog command * patchbomb: add --body flag to send patches as inline message body text * record: allow splitting of hunks by manually editing patches * transplant: permit merge changesets via --parent === Fixes === * alias: fix shell alias documentation (Bts:issue3374) * archive: make it work with svn subrepos (Bts:issue3308) * branchmap: server should not advertise secret changeset in branchmap (Bts:issue3303) * clone: always close source repository (Bts:issue2491) * commit: abort on merge with missing files (BC) * config: discard UTF-8 BOM if found * convert/bzr: convert all branches (Bts:issue3229) (BC) * convert/bzr: expect unicode metadata, encode in UTF-8 (Bts:issue3232) * convert/bzr: handle empty bzr repositories (Bts:issue3233) * convert/bzr: ignore nested repos when listing branches (Bts:issue3254) * convert/svn: do not try converting empty head revisions (Bts:issue3347) * convert/svn: make svn sink work with svn 1.7 * convert: support non-annotated tags in git backend * dirstate: preserve path components case on renames (Bts:issue3402) * export: catch exporting empty revsets (Bts:issue3353) * icasefs: make case-folding collision detection rename aware (Bts:issue3370) * inotify: catch !SignalInterrupt during shutdown (Bts:issue3351) * journal: use tryread helper to backup files (Bts:issue3375) * largefiles: fix cat for largefiles (Bts:issue3352) * largefiles: fix status -S reporting of subrepos (Bts:issue3231) * largefiles: hide .hglf/ prefix for largefiles in hgweb * largefiles: notice dirty large files in a subrepo * largefiles: only update changed largefiles when transplanting * largefiles: optimize update speed by only updating changed largefiles * localrepo: add setparents() to adjust dirstate copies (Bts:issue3407) * mdiff: fix diff header generation for files with spaces (Bts:issue3357) * merge: check for untracked files more precisely (Bts:issue3400) * merge: fix unknown file merge detection for case-folding systems * patch: be more tolerant with "Parent" header (Bts:issue3356) * patch: be more tolerant with EOLs in binary diffs (Bts:issue2870) * patch: fix patch hunk/metdata synchronization (Bts:issue3384) * phase: when phase cannot be reduced, hint at --force and return 1 (BC) * posix: disable cygwin's symlink emulation (BC) * posix: ignore execution bit in cygwin (Bts:issue3301) * pure/osutil: use Python's msvcrt module (Bts:issue3380) * rebase: preserve mq series order, guarded patches (Bts:issue2849) * rebase: skip resolved but emptied revisions * revset: fix O(n**2) behaviour of bisect() (Bts:issue3381) * revset: fix adds/modifies/removes and patterns (Bts:issue3403) * revset: fix alias substitution recursion (Bts:issue3240) * subrepo/svn: abort on commit with missing file (Bts:issue3029) * subrepo/svn: fix checked out rev number retrieval (Bts:issue2968) * subrepo: fix default implementation of forget() (Bts:issue3404) * subrepo: rewrite handling of subrepo state at commit (Bts:issue2403) * templates/filters: extracting the user portion of an email address (BC) * transplant: do not rollback on patching error (Bts:issue3379) * update: fix case-collision with a clean wd and no --clean * update: make --check abort with dirty subrepos * update: use normal update path with --check (Bts:issue2450) * wireprotocol: use visibleheads as reference while unbundling (Bts:issue 3303) |
Release Notes
Features and bugfixes in our latest releases. Please see the Download page for links to source and binaries.
Note that Mercurial follows a time-based release plan with major releases every three months and minor (bugfix) releases on the first of every month (see TimeBasedReleasePlan).
Be sure to read the upgrade notes when upgrading.
Contents
- Mercurial 3.3-rc (2015-1-17)
- Mercurial 3.2.4 (2015-1-1)
- 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.3-rc (2015-1-17)
Preliminary release notes for the 3.3 feature release.
1.1. commands
- bookmark: read pending data when appropriate
- bookmarks: factor out bookmark file opening for easier extensibility
- bookmarks: factor out repository lookup from writing bookmarks file
- branchcache: add debug output whenever cache files use truncate
- branchcache: introduce revbranchcache for caching of revision branch names
- branchcache: make _rbcrevslen handling more safe
- branches: deprecate -a
- branchmap: add seek() to end of file before calling tell() on append open()
- branchmap: use revbranchcache when updating branch map
- commit: abort if --addremove is specified, but fails
commit: propagate --addremove to subrepos if -S is specified (issue3759)
- graft: drop cset description from empty commit message
- graft: give helpful warning for empty grafts
- graft: show hashes in user-facing messages
- graft: show more useful status information while grafting
- graft: use a real conflict for the tests
help: suggest '-v -e' to get built-in aliases for extensions (issue4461)
- log: use namespace logname and colorname
- log: use new namespaces api to display names
- patch: add a new function to initialize diffopts by feature
- patch: rename diffopts to diffallopts
- patchbomb: don't honor whitespace and format-changing diffopts (BC)
- push: elevate phase transaction to cover entire operation
- push: send highest changegroup format supported by both side
- status: cache dirstate status in _dirstatestatus()
- status: don't list files as both clean and deleted
- status: don't list files as both removed and deleted
- status: don't override _buildstatus() in workingcommitctx
1.2. core
- filelog: fix backwards comment for 'backrevref'
- filelog: remove trailing "form feed" character
- filelog: use censored revlog flag bit to quickly check if a node is censored
- revlog: add a method to get missing revs incrementally
- revlog: add config variable for limiting delta-chain length
- revlog: add flags argument to _addrevision, update callers use default flags
- revlog: bound based on the length of the compressed deltas
revlog: cache chain info after calculating it for a rev (issue4452)
- revlog: compute length of compressed deltas along with chain length
- revlog: define censored flag for revlogng index
- revlog: increase I/O bound to 4x the amount of data consumed
- revlog: make a predicate clearer with parens
- revlog: store fulltext when compressed delta is bigger than it
- revlog: switch findmissing* methods to incrementalmissingrevs
- revlog: verify censored flag when hashing added revision fulltext
revset-filelog: handle hidden linkrev for file missing for head (issue4490)
- transaction: allow generating files with a suffix
- transaction: support cache file in backupentries
- transaction: support for callbacks during abort
transaction: use the right location when cleaning up backup file (issue4479)
1.3. extensions
- color: add support for colorizing git subrepo diffs
convert: on svn failure, note libsvn version (issue4043)
histedit: add a test to show that issue4251 is fixed (issue4251)
- largefiles: align the output messages for a removed file with core methods
- largefiles: align the output messages for an added file with core methods
- largefiles: avoid printing messages while rebasing by "_lfstatuswriters"
- largefiles: avoid printing messages while transplanting by "_lfstatuswriters"
- largefiles: avoid redundant "updatelfiles" invocation in "overridetransplant"
- largefiles: convert addlargefiles() to vfs
- largefiles: don't clobber merge action message with user message
- largefiles: don't duplicate 'actions' into 'actionbyfile'
- largefiles: don't pop largefile-specific arguments to the add command
- largefiles: don't print files as both large and normal in addremove dryruns
- largefiles: don't rehash largefiles in updatelfiles if standin hash changed
- largefiles: don't unnecessarily sort merge action lists
- largefiles: don't use 'r' action for normal file that doesn't exist
- largefiles: don't use 'r' action for standin that doesn't exist
- largefiles: drop the override for 'fetch'
- largefiles: drop the unfiltered repo usage in overridepurge()
- largefiles: eliminate a duplicate message when removing files in verbose mode
- largefiles: enable subrepo support for add
- largefiles: enable subrepo support for forget
- largefiles: enable subrepo support for remove
- largefiles: ensure that the standin files are available in getlfilestoupload()
- largefiles: factor out procedures to update lfdirstate for post-committing
- largefiles: factor out procedures to update standins for pre-committing
- largefiles: fix unused import
- largefiles: get function to write status messages via "getstatuswriter()"
- largefiles: introduce "_lfcommithooks" to abstract pre-committing procedures
- largefiles: introduce "_lfstatuswriters" to customize status reporting
- largefiles: look at unfiltered().lfstatus to allow status() to be filtered
- largefiles: make linear update set unsure largefiles normal if unchanged
- largefiles: pass a matcher instead of a raw file list to removelargefiles()
- largefiles: properly sync lfdirstate after removing largefiles
- largefiles: put same 'action' object back in 'newglist'
- largefiles: return the list of added files from addlargefiles()
- largefiles: rewrite merge code using dictionary with entry per file
- largefiles: shortcircuit status code also for non-matching patterns
- largefiles: show progress when checking standin hashes in outgoing changesets
- largefiles: simplify check for lack of path arguments
- largefiles: split the creation of a normal matcher out of its install method
- largefiles: start by finding files of interest
- largefiles: update comments to refer to the right overridden method
- largefiles: update standins only at the 1st commit of "hg rebase --continue"
- largefiles: update standins only at the 1st commit of "transplant --continue"
- largefiles: use clearer debug messages in actions
- largefiles: wrap "rebase.rebase" for functions using it directly
- mq: drop updateheader - inserthgheader and insertplainheader is enough
- mq: smarter handling of plain headers
- rebase: add a 'revtodo' constant
- rebase: always store rev in state, also when collapsing
- rebase: clarify comment about merge ancestor when rebasing merges
- rebase: clarify naming of variables holding node hashes - don't call them rev
- rebase: handle revtodo as a special value when storing/restoring state
- rebase: improve debug messages while processing the list of rebases
- rebase: show more useful status information while rebasing
- rebase: show warning when rebase creates no changes to commit
rebase: use '>= 0' to know is a revision was rebased
1.4. hgweb
hgweb: allow viewing diffs against p1 or p2 for merge commits (issue3904)
1.5. unsorted
- add: add back forgotten files even when not matching exactly (BC)
- add: pass options via keyword args
- 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
- bundle2-push: provide transaction to reply unbundler
- bundles: do not overwrite existing backup bundles (BC)
- changegroup: introduce "raw" versions of some commands
- changelog: handle writepending in the transaction
- changelog: register changelog.i.a as a temporary file
- changelog: rely on transaction for finalization
- changelog: rework the delayupdate mechanism
- cmdserver: use given streams as pipe channels like other commands
- copyfile: allow optional hardlinking
- debugrevlog: fix computing chain length in debugrevlog -d
- diff: add a --noprefix option
- dispatch: only check compatibility against major and minor versions (BC)
extdiff: avoid unexpected quoting arguments for external tools (issue4463)
- filectx: fix annotate to not directly instantiate filectx
- generate-working-copy-states: accept depth arguments on command line
- getbundle: send highest changegroup format supported by both side
- graphlog: add a way to test the 'groupbranchiter' function
- groupbranchiter: allow callers to select the first branch
- groupbranchiter: support for non-contiguous revsets
- hg.clone: set 'stream' depending on whether --pull was requested or not
- hghave: we now support Python 2.7.9's ssl for https
- hgk: forward command output to ui.fout consistently
highlight: ignore Unicode's extra linebreaks (issue4291)
https: support tls sni (server name indication) for https urls (issue3090)
ignore: resolve ignore files relative to repo root (issue4473) (BC)
linkrev-filelog: 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)
- manifest: add optional recording of clean entries to diff
memctx: calculate manifest correctly with newly-removed files (issue4470)
memctx: fix manifest for removed files (issue4470)
obsstore: disable garbage collection during initialization (issue4456)
- readmarkers: use unpacker for fixed header
record: don't honor format-changing diffopts (issue4459)
- remove: support remove with explicit paths in subrepos
- share: add option to share bookmarks
- share: fix source repo lookup on Windows
- subrepo: add full revert support for git subrepos
- subrepo: add partial diff support for git subrepos
- subrepo: add revert support without backup for git subrepos
- subrepo: add status support for ignored files in git subrepos
- subrepo: fix git subrepo ui argument
tests: adapt glob pattern to fix test with NetBSD's sh(1) (issue4484)
tests: run 'cvs init' only on non-existent directories (issue4482)
transplant: properly skip empty changeset (issue4423)
- win32: fix win32 installers generation
win32: remove Mercurial.ini file from Inno Setup installer (issue4435)
2. Mercurial 3.2.4 (2015-1-1)
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
3. 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
4. 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)
5. 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)
6. Mercurial 3.2 (2014-11-01)
This is a quarterly feature release.
6.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
6.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)
6.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)
6.4. hgweb
- hgweb: disable SSLv3 serving (BC)
hgweb: refresh repository using URL not path (issue4323)
7. 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
8. 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)
9. Mercurial 3.1 (2014-08-01)
9.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)
9.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)
9.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
9.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)
9.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
10. 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
11. 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
12. 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.
12.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
12.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
12.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)
12.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
13. 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
14. 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
15. Mercurial 2.9 (2014-02-01)
This is a regularly-scheduled feature release.
15.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)
15.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
15.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
15.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