A Scalable, User-Friendly Source Control System.
Go to file
Pierre-Yves David 551d0f8ee6 checkheads: upgrade the obsolescence postprocessing logic (issue4354)
The previous logic had many shortcoming (eg: looking at the head only, not
handling prune, etc...), the new logic use a more robust approach:

For each head, we check if after the push all changesets exclusive to this heads
will be obsolete. If they are, the branch considered be "replaced".

To check if a changeset will be obsolete, we simply checks:

* the changeset phase

* the existence of a marker relevant to the "pushed set" that affects the
  changesets..

This fixes two major issues of the previous algorithm:

* branch partially rewritten (eg: head but not root) are no longer detected as
  replaced,

* Prune are now properly handled.

(This implementation was introduction in the evolve extension, version 6.0.0.)

This new algorithm has an extended number of tests, a basic one is provided
in this patch. The others will be introduced in their own changeset for clarity.

In addition, we stop trying to process heads unknown locally, we do not have
enough data to take an informed decision so we should stop pretending we do.
This reflect a test that is now update.
2017-04-15 02:55:18 +02:00
contrib atexit: switch to home-grown implementation 2017-04-11 14:54:12 -07:00
doc ui: factor out ui.load() to create a ui without loading configs (API) 2016-10-22 14:35:10 +09:00
hgext show: make template option actually show up in help 2017-04-13 03:17:53 -07:00
hgext3rd extensions: also search for extension in the 'hgext3rd' package 2016-03-11 10:30:08 +00:00
i18n i18n-pt_BR: synchronized with 11b8e606c473 2017-03-02 11:08:20 -03:00
mercurial checkheads: upgrade the obsolescence postprocessing logic (issue4354) 2017-04-15 02:55:18 +02:00
tests checkheads: upgrade the obsolescence postprocessing logic (issue4354) 2017-04-15 02:55:18 +02:00
.editorconfig mercurial: add editorconfig 2016-04-05 18:10:33 +01:00
.hgignore perf: add asv benchmarks 2016-09-29 10:16:34 +02:00
.hgsigs Added signature for changeset 97cf34b7fc72 2017-04-03 17:34:24 -04:00
CONTRIBUTING contributing: add new file with a pointer to the wiki 2016-10-08 10:39:00 -04:00
CONTRIBUTORS Add note to CONTRIBUTORS file 2007-11-07 21:10:30 -06:00
COPYING COPYING: refresh with current address from fsf.org 2011-06-02 11:17:02 -05:00
hg hg: disable demandimport for py3 2016-05-11 23:24:41 +00:00
hgeditor spelling: trivial spell checking 2015-10-17 00:58:46 +02:00
hgweb.cgi urls: bulk-change primary website URLs 2015-09-30 15:43:49 -05:00
Makefile osx: always purge build/mercurial before starting build 2017-03-20 17:58:44 -04:00
README urls: bulk-change primary website URLs 2015-09-30 15:43:49 -05:00
setup.py statfs: change Linux feature detection 2017-03-24 14:59:19 -07:00

Mercurial
=========

Mercurial is a fast, easy to use, distributed revision control tool
for software developers.

Basic install:

 $ make            # see install targets
 $ make install    # do a system-wide install
 $ hg debuginstall # sanity-check setup
 $ hg              # see help

Running without installing:

 $ make local      # build for inplace usage
 $ ./hg --version  # should show the latest version

See https://mercurial-scm.org/ for detailed installation
instructions, platform-specific notes, and Mercurial user information.