A Scalable, User-Friendly Source Control System.
Go to file
FUJIWARA Katsunori e9656a280f rebase: use dirstateguard instead of dirstate.invalidate
Before this patch, "rebase.concludenode()" uses "dirstate.invalidate()"
as a kind of "restore .hg/dirstate to the original status" during a failure.

But it just discards changes in memory, and doesn't actually restore
".hg/dirstate". Then, it can't work as expected, if "dirstate.write()"
is executed while processing.

This patch uses "dirstateguard" instead of "dirstate.invalidate()" to
restore ".hg/dirstate" during a failure even if "dirstate.write()" is
executed before a failure.

This patch also removes "beginparentchage()" and "endparentchange()",
because "dirstateguard" makes them useless.

This is a part of preparations to fix the issue that the recent (in
memory) dirstate isn't visible to external processes (e.g. "precommit"
hook).

After this patch, the changed dirstate becomes visible to external
"precommit" hooks during "hg rebase" in "test-largefiles-misc.t",
because "dirstateguard()" writes it out. But this content isn't yet
correct, because:

  - "normal3" should be marked as "A"(dded) at committing

    It is newly added in the changeset being rebased.

  - but it is marked as "M"(odified)

    The result of "repo.setparents()" after "dirstateguard()" isn't
    yet written out before "precommit". So, merging is still in
    progress for "hg status" in it.

    This causes marking the file newly added on "other" branch as "A".

This will be fixed by subsequent patch.
2015-05-07 12:07:11 +09:00
contrib wix: add new json templates folder to MSI installers 2015-05-09 16:06:04 -05:00
doc spelling: fixes from proofreading of spell checker issues 2015-01-18 02:38:57 +01:00
hgext rebase: use dirstateguard instead of dirstate.invalidate 2015-05-07 12:07:11 +09:00
i18n i18n-ja: synchronized with 0fc13b42416a 2015-04-30 19:12:28 +09:00
mercurial tryimportone: use dirstateguard instead of beginparentchange/endparentchange 2015-05-07 12:07:11 +09:00
tests rebase: use dirstateguard instead of dirstate.invalidate 2015-05-07 12:07:11 +09:00
.hgignore hgignore: ignore the PyCharm workspace folder 2014-10-13 11:46:04 +02:00
.hgsigs Added signature for changeset 2f48f12ba72d 2015-05-01 16:49:15 -05: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: add support for HGUNICODEPEDANTRY environment variable 2014-06-23 09:33:07 -04:00
hgeditor Fixed a bashism with the use of $RANDOM in hgeditor. 2010-05-19 18:06:35 +02:00
hgweb.cgi mq: add a warning about uncommitted changes for qfinish 2011-11-10 15:40:34 -06:00
Makefile dockerdeb: rules to build a debian package using docker 2015-05-06 13:15:39 -04:00
README readme: mention how to run in-place 2012-03-02 21:43:55 +02:00
setup.py setup: hide octal literals inside strings so they're portable (issue4554) 2015-04-12 15:36:10 -04: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 http://mercurial.selenic.com/ for detailed installation
instructions, platform-specific notes, and Mercurial user information.