Mercurial 4.9

Mercurial is a free, distributed source control management tool. It's lightweight and efficiently handles projects of any size with an easy and intuitive interface.

Tags c python version-control distributed-revision-system source-control console developers
License GNU GPL
State stable

Recent Releases

4.902 Feb 2019 21:45 minor feature: archive: use manifest.matches() to simplify and speed up matching. branch: allow changing branch of merge commits with --rev. Branches: add -r option to show branch name(s) of a given rev ( ) graft: abort if --date/user specified with --currentdate/currentuser (BC). graft: introduce --base option for using custom base revision while merging. help: add internals.extensions topic. help: show advanced, experimental and deprecated extensions with --verbose. Log: line wrap on diffstat with -G/--graph ( ) merge: make local file storage in the.hg/merge directory extensible. Pull: inconsistent view of bookmarks during pull ( ) push: add --publish flag to change phase of pushed changesets. push: config option to control behavior when pushing to a publishing server. Resolve: mark-check when a file was deleted on one side ( ) tags: cache 'repo.changelog' access when checking tags nodes. update: edge-case with update.atomic-file and read-only files.
4.8.106 Dec 2018 11:05 minor feature: commandserver: get around ETIMEDOUT raised by selectors2. Graft: do not try to skip rev derived from ancestor more than once ( ) verify: provide unit to ui.makeprogress().
4.803 Nov 2018 08:25 minor feature: add: add a label for messages about added files. addremove: add labels for messages about added and removed files. annotate: pass in wdir rev and node to formatter (BC). annotate: rename line_number to lineno (BC). bookmarks: add explicit option to list bookmarks of the given names. bookmarks: pass in formatter to printbookmarks() instead of opts (API). clone: allow local cloning to create more than one level of directories. decommands: introduce derevlogindex (BC). decommands: use openstorage() in dedata (BC). grep: add MULTIREV support to --allfiles flag. grep: rename line_number to lineno as well (BC). grep: search all commits in allfiles mode. help: adding a proper declaration for shortlist/basic commands (API). help: adding support for command categories. identify: change parents to a list of nodes (BC). identify: show remote bookmarks in 'hg id url -Tjson -B'. log: have changesetformatter fill in wdir() rev and node (BC). Log: respect graphshorten on terminal nodes (collapsing o- to just o ) Merge: improve interactive one-changed one-deleted message ( ) phase: explicitly exclude secret phase and above. phase: expose a '_phase(idx)' revset. phase: handle phase with no command flag. phase: report number of non-public changeset alongside the new range. Push: add "remote" to 'repository changed while pushing' messages ( ) remove: add a label for messages about removed files. rename: return error status if any rename/copy failed. resolve: add a flag for the default behavior of re-merging. resolve: add config to make hg resolve not re-merge by default. resolve: add confirm config option. resolve: add option to warn/abort on -m with unresolved conflict markers. resolve: graduate resolve.mark-check from experimental, add docs. resolve: rename status to mergestatus to not shadow change status (BC). status: advertise --abort instead of 'update -C.' to abort a merge. status: advertise --abort instead of 'update -C.' to abort graft. status: remove "morestat
4.723 Aug 2018 15:45 minor feature: Merge: do not fill manifest of committed revision with pseudo node ( ) Crecord: line number in hunk header ( ) Lazymanifest: don't crash when out of memory ( ) procutil: use unbuffered stdout on Windows.
3.8.302 Jun 2016 09:25 minor feature: Bookmarks: allow pushing active bookmark on new remote head ( ) localrepo: prevent executable-bit only changes from being lost on amend. Strip: invalidate phase cache after stripping changeset ( )
3.8.217 May 2016 22:45 minor feature:
3.7.331 Mar 2016 00:45 minor feature: Mercurial prior to 3.7.3 contained two bounds-checking errors in its binary delta decoder that may be exploitable via clone, push, or pull.
3.7.203 Mar 2016 15:45 minor feature: Bundlerepo: properly handle hidden linkrev in filelog ( ) Bundlerepo: properly handle hidden linkrev in manifestlog ( ) demandimport: add _imp to ignore list. doc: correct example concerning "hg purge" alias in man page "hgrc.5". doc: remove deprecated option from synopsis of command help. fileset: copy/paste in eol() error message. help: typo in backgrounddocumentation. help: hg.intevation.de is new primary name of hg.intevation.de (and new cert). help: update template examples to use reST literal syntax. hg: obtain lock when creating share from pooled repo ( ). Log: order of revisions filtered by multiple OR options ( ) Rebase: update working directory when aborting ( ) Revert: properly revert to ancestor of p2 during merge ( ) Revset: flatten chained 'list' operations (aka function args) ( ) setup: avoid procedure related to hg.exe at setup.py --pure. ui: crash by non-interactive prompt echo for user name. Unionrepo: properly handle hidden linkrev in revlog ( ) zeroconf: forward all arguments passed to ui.configitems() wrapper.
3.703 Feb 2016 04:25 minor feature: Merge: don't try to merge subrepos twice ( ) pull: advance current active bookmark at pull --update correctly. Templater: abort if infinite recursion detected while evaluation ( ) Annotate: add missing period to help. annotate: mention that -n is suppressed in help. Backout: disable --merge with --no-commit ( ) bookmark: deprecate 'bmstore.write' method. bookmarks: hoist getbkfile out of bmstore class. bookmarks: make _readactive safe when readlines raises ENOENT. branch: reword help text. clone: move bookmarks and checkouts before pull help. clonebundles: improve BUNDLESPEC documentation. clonebundles: remove advertisement of feature. commands.summary: switch to mergestate.read(). commands: inline definition of localrepo.parents() and drop the method (API). commands: make backout acquire locks before processing. Commands: make commit acquire locks before processing ( ) commands: use context manager for opened bundle file. Commandserver: drop tell() and seek() from channels ( ) commandserver: reset state of progress bar per command. commit: add a way to return more information from the chunkselector. commit: add amend mode for commit -i. Commit: add some help examples ( ) commit: adjust the quoting in the examples to be Windows friendly. commit: rest syntax of examples. commit: make commit acquire store lock before processing for consistency. commit: preserve extra when amending with commit --amend. Fileset: add missing() predicate ( ) fileset: use set instead of list to mark predicates for efficiency (API). graft: clarify in help that '-r' is not just optional. graft: copy extra (except branch) when copying changesets. graft: hook afterresolvedstates. graft: improve --continue abort message. help: quoting for bundle1 options. import: add word to help text. import: limit scope of msg in tryimportone. import: reorder help text. Log: speed up single file log with hidden revs ( ) log: add 'hg log' example for full hashes. log: help provide sort by date example. log: me
3.6.306 Jan 2016 06:45 minor feature: cmdutil: use crecordmod.checkcurses. copyfile: add an optional parameter to copy other stat data. Crecord: stop raising error.Abort if curses is not found ( ) dirstate: don't write repo.currenttransaction to repo.dirstate if repo. Dockerlib: short form for non-unique uid/gid for CentOS 5 compat ( ) Merge: while checking for unknown files don't follow symlinks ( ) mq: use fallback patch name if no alpha-numeric in summary line ( ). Parsers: parse_dirstate to check len before unpacking header ( ) paths: include #fragment again. Push: restore old behavior of default-push ( ) record: don't dereference symlinks while copying over stat data. Revlog: seek to end of file before writing ( ) ui: try to handle more robustly in prompts ( ).
3.6.204 Dec 2015 20:45 minor feature: Docker: match more version of 'hg docker version' ( ) Localrepo.commit: check all files for resolve state ( ) rebase: add returning value from pullrebase function. Resolve: restore.orig only after merge is fully complete ( ) Share: wrap bmstore._writerepo for transaction sensitivity ( ) tags: create new sortdict for performance reasons.
3.6.110 Nov 2015 18:45 minor feature: changegroup: call 'prechangegroup' hook before setting up write delay. changegroup: the scope of a try finally. clonebundles: typo s/comand/command/. demandimport: level passed to loader of sub-modules. dirstate: filefoldmap incosistency on file delete. Dockerlib: allow non-unique uid and gid of DBUILDUSER ( ) Exchange: do not attempt clone bundle if local repo is non-empty ( ) hooks: always include HG_PENDING. Hooks: hooks not firing if prechangegroup was set ( ) parsers: width of datalen variable in fm1readmarkers. posix: test-permissions regression. posix: retry on symlink race in checklink. Templatefilters: try round-trip utf-8 conversion by json filter ( ) Wireproto: move clonebundles command from extension ( ) wix: style-coal.css has been renamed.
3.602 Nov 2015 17:05 minor feature: bookmark: do not crash when active bookmark is forward and --date is used. Bookmarks: don't deactivate on no-op update ( ) Clone: updaterev to update to latest branch changeset ( ) clonebundles: support for seeding clones from pre-generated bundles. commit: abort when a committemplate is not changed (BC). Help: distinguish sections when multiple match ( ) help: pass around ui to doc loader (API). help: pass around ui to rewriter hooks (API). merge: perform all premerges before any merges (BC). Merge: abort on file/directory case folding collisions ( ) Phases: return zero for no-op operations ( ) (BC) resolve: perform all premerges before performing any file merges (BC).
3.5.203 Oct 2015 00:45 minor feature: Hgweb: use latest mtime for caching tag ( ) Largefiles: restore archiving largefiles with hgweb ( ) Localrepo: recreate phasecache if changelog was modified ( ) monoblue: page subtitle on help pages. unbundle: cleanly abort on unknown bundle2 feature.
3.5.102 Sep 2015 22:05 minor feature: convert: git copy file content conversions. filesets: ignore unit case in size() predicate for single value. Help: typo familar - gt; familiar help: typo in scripting documentation. hg: avoid auto sharing when the clone destination is remote. hgweb: trust of templates path (BC). histedit: backout ebb5bb9bc32e. largefiles: ensure lfutil.getstandinmatcher() only matches standins. Match: a case-only rename + explicit path commit on icasefs ( ) parsers: memory leak in compute_phases_map_sets. rebase: lock the repo during the full rebase operation. revset: prevent crash caused by empty group expression while optimizing "and". revset: prevent crash caused by empty group expression while optimizing "or". strip: use the 'finally: tr.release' pattern during stripping. update: wlock the repo for the whole 'hg update' command. wix: avoid an abort with 'hg help -k foo'.
3.502 Aug 2015 23:25 minor feature: bookmark: informs of failure to upgrade a bookmark. bookmark: remove the "touch changelog" hack. bookmarks: abort the whole push if bookmarks fails to update (BC). bookmarks: change bookmark within a transaction. bookmarks: clear active bookmark on non-linear update. bookmarks: mark internal-only config option. bookmarks: mark internal-only option. bookmarks: name label for active bookmark correctly. bookmarks: remove unused updatecurrentbookmark function (API). bookmarks: rename bookmarkcurrent to activebookmark (API). bookmarks: rename current to active in variables and comments. bookmarks: rename readcurrent to readactive (API). bookmarks: rename setcurrent to activate (API). bookmarks: rename unsetcurrent to deactivate (API). bookmarks: simplify iscurrent to isactivewdirparent (API). bookmarks: use try/except/finally. branch: don't warn about branches if repository has multiple branches already. commands: use the optional badfn argument when building a matcher. commands: use try/except/finally. commit: add ui.allowemptycommit config option. commit: avoid match.files() in conditions. commit: improve --close-branch documentation. commit: mark internal-only option. commit: no longer allow empty commit with the 'force' argument (API). config: give it an includepaths option for looking for config files. files: recurse into subrepos automatically with an explicit path. import-checker: add xargs like mode. import-checker: don't treat modules as relative one if not found. import-checker: exclude mercurial packages installed into the system path. import-checker: loop to get list of locally defined modules at first. import: cross-reference patch.fuzz option from 'hg help import'. import: cross-reference ui.patch option from 'hg help import'. import: use ui.allowemptycommit to allow empty commits. log: add a status template. patch: add 'extra' argument to makememctx. patch: add fuzz config flag (). phases: abort the whole push if phases fail to update (BC). phases: fix bug
3.4.202 Jul 2015 22:25 minor feature: changegroup: properly compute common base in changeggroupsubset () crecord: fix a typo introduced when moving crecord to core. crecord: fix three typos introduced while moving crecord into core. hgwebdir: avoid redundant repo and directory entries when 'web.name' is set. hgwebdir: don't allow the hidden parent of a subrepo to show as a directory. parsers: do not cache RevlogError type (). pull: avoid race condition with 'hg pull --rev name --update' (). templater: do not preprocess template string in "if" expression (). templater: evaluate arguments passed to diff() appropriately. templater: parse "... " as string for 2.9.2-3.4 compatibility (). transplant: only pull the transplanted revision (). transplant: update test to use hash for remote transplant.
3.4.102 Jun 2015 06:45 minor feature: archive: always use portable path component separators with subrepos. commands: hide formatter option as EXPERIMENTAL, not as DEPRECATED. context: don't complain about a matcher's subrepo paths in changectx.walk(). convert: properly pass null ids through.hgtags (). extensions: clear aftercallbacks after execution (). hgweb: bring back infinite scroll in shortlog of paper style. histedit: fix --continue when rules are finished. histedit: fix --edit-plan. histedit: fix keep during --continue. histedit: fix serializing of None backupfile. histedit: fix test-histedit-edit on vfat. localrepo: pass hook argument txnid to pretxnopen hooks. localrepo: rename hook argument from TXNID to txnid (BC). localrepo: use correct argument name for pretxnclose hooks (BC). match: explicitly naming a subrepo implies always() for the submatcher. mergecopies: avoid slowdown from linkrev adjustment (). rebase: check that the bookmark is still valid when restoring (). rebase: clear merge when aborting before any rebasing (). revbranchcache: return uncached branchinfo for nullrev (). revset: drop magic of fullreposet membership test (). revset: id() called with 40-byte strings should give the same results as for short strings. revset: map postfix ' ' to only() to optimize operand recursively (). ssh: capture output with bundle2 again (). templatekw: compare target context and its parent exactly (). templater: do not process -escapes at parsestring() (). templater: fix crash by passing invalid object to date() function. templater: strictly parse leading backslashes of ' ' () (BC). transaction: really fix _addbackupentry key usage (). transaction: separate calculating TXNID from creating transaction object. transaction: use the proper variable in '_addbackupentry' (). util.checkcase: don't abort on broken symlinks.
3.402 May 2015 04:45 major feature: annotate: add option to annotate working-directory files . annotate: always prepare ancestry context of base fctx (issue4600). annotate: always adjust linkrev before walking down to parents (issue4623). annotate: prepare ancestry context of workingfilectx . bookmarks: add incoming() to replace diff() for incoming bookmarks . bookmarks: add outgoing() to replace diff() for outgoing bookmarks . bookmarks: check @pathalias suffix before available @number for efficiency . bookmarks: enhance test of showing detail about incoming/outgoing bookmarks . bookmarks: prevent divergent bookmark from being updated unexpectedly . bookmarks: reuse @number bookmark, if it refers changeset referred remotely . bookmarks: rewrite comparing bookmarks in commands.summary() by compare() . bookmarks: show detailed status about incoming/outgoing bookmarks . clone: add progress support to hardlink clones (issue3059). commands.import: accept a prefix option . commands.push: abort when revisions evaluate to empty set (BC) . commands: add ui.statuscopies config knob . debuginstall: expand the editor path before searching for it (issue4380). files: split reusable implementation into cmdutil for subrepo support . files: use ctx object to access dirstate . graft: allow creating sibling grafts . graft: record intermediate grafts in extras . log: display closing-branch nodes as "_" (BC) . log: fix --follow null parent not to include revision 0 . log: make -fr show complete history from the given revs . log: prefer 'wctx' over 'pctx' for working context . patch.internalpatch: accept a prefix parameter . patch.internalpatch: add a default value for prefix . patch: rename pathstrip to pathtransform . pull: print "pulling from foo" before accessing the other repo . push: acquire local 'wlock' if "pushback" is expected (BC) (issue4596). resolve: silence warning of unknown pats for -l/--list (BC) . revert: evaluate filesets against working directory (issue4497). revert: fix --interactive on local modifica
3.3.302 Apr 2015 17:25 minor feature: adjustlinkrev: handle 'None' value as source . adjustlinkrev: prepare source revs for ancestry only once. amend: check for directory renames for both merge parents. annotate: reuse ancestry context when adjusting linkrev. dirstate: don't require exact case when adding dirs on icasefs. dirstate: make sure rootdir ends with directory separator. filemerge: clean up language in mergemarkertemplate help. forget: cleanup the output for an inexact case match on icasefs. hgweb: prevent loading style map from directories other than specified paths. mergecopies: reuse ancestry context when traversing file history. templates: fix "log -q" output of default style . templates: fix "log -q" output of phases style. win32: 'raise ctypes.WinError' - gt; 'raise ctypes.WinError()'.
3.3.203 Mar 2015 14:45 minor feature: Transaction: really disable hardlink backups.
3.302 Feb 2015 09:05 minor feature: add: add back forgotten files even when not matching exactly (BC) addremove: add back forgotten files (BC) addremove: add support for the -S flag addremove: print relative paths when called with -I/-X (BC) addremove: support addremove with explicit paths in subrepos backout: add --commit option commit: abort if --addremove is specified, but fails commit: remove reverse search for copy source when not in parent (issue4476) commit: propagate --addremove to subrepos if -S is specified (issue3759) graft: show more useful status information while grafting
3.2.402 Jan 2015 11:45 minor feature: demandimport: blacklist distutils.msvc9compiler (issue4475) largefiles: backout f72d73937853 - linear updates handle m - gt; 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.2.319 Dec 2014 20:45 minor feature: 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
3.2.202 Dec 2014 07:25 minor feature: 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" amp; "more" links in paper style (issue4460)
3.2.112 Nov 2014 03:16 minor feature: 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)
3.203 Nov 2014 03:17 minor feature: 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
3.1.203 Oct 2014 03:17 minor feature: 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
3.105 Aug 2014 22:42 major feature: backout: accept '--edit' like other commands creating new changeset bash_completion: add -l --list support for shelve bookmarks: avoid deleting primary bookmarks on rebase bookmarks: improve the bookmark help (issue4244) 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 commit: make commit message shown in text editor customizable by template config: allow 'user' in .hgrc ui section (issue3169) 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' 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 internal:tagmerge merge tool filemerge: use 'basic' as the default of ' ui mergemarkers' for safety filemerge: use non-minimal conflict marker regions (BC) gpg: accept '--edit' like other commands creating new changeset graft: customize graft conflict markers (BC) help: always show command help with -h (issue4240) help: suggest keyword search when no topic is found histedit: respect revsetalias entries (issue4311) import: add --partial flag to create a changeset despite failed hunks largefiles: avoid unnecessary creation of .hg/largefiles when opening lfdirstate largefiles: include largefiles when doing log on a directory (issue4241) largefiles: show also how many data entities are outgoing at "hg outgoing" largefiles: use "normallookup", if "mtime" of standin is