A Scalable, User-Friendly Source Control System.
Go to file
Yuya Nishihara 5ff5d9b38c dispatch: add HGPLAIN=+strictflags to restrict early parsing of global options
If this feature is enabled, early options are parsed using the global options
table. As the parser stops processing options when non/unknown option is
encountered, it won't mistakenly take an option value as a new early option.
Still "--" can be injected to terminate the parsing (e.g. "hg -R -- log"), I
think it's unlikely to lead to an RCE.

To minimize a risk of this change, new fancyopts.earlygetopt() path is enabled
only when +strictflags is set. Also the strict parser doesn't support '--repo',
a short for '--repository' yet. This limitation will be removed later.

As this feature is backward incompatible, I decided to add a new opt-in
mechanism to HGPLAIN. I'm not pretty sure if this is the right choice, but
I'm thinking of adding +feature/-feature syntax to HGPLAIN. Alternatively,
we could add a new environment variable. Any bikeshedding is welcome.

Note that HGPLAIN=+strictflags doesn't work correctly in chg session since
command arguments are pre-processed in C. This wouldn't be easily fixed.
2017-11-23 22:17:03 +09:00
contrib internal-doc: document the config register mechanism 2017-10-27 18:19:07 +02:00
doc build: make install in "/doc" failed if the destination dir contained spaces 2017-10-11 01:19:48 +02:00
hgdemandimport demandimportpy3: update to pass import checker 2017-08-22 14:14:34 -04:00
hgext largefiles: pay attention to dropped standin files when updating largefiles 2017-11-12 23:45:14 -05: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 f1d5a55d6a57 2017-11-21 13:50:25 -02:00
mercurial dispatch: add HGPLAIN=+strictflags to restrict early parsing of global options 2017-11-23 22:17:03 +09:00
tests dispatch: add HGPLAIN=+strictflags to restrict early parsing of global options 2017-11-23 22:17:03 +09:00
.clang-format clang-format: configuration for the clang-format source formatter 2015-01-24 17:04:25 -05:00
.editorconfig mercurial: add editorconfig 2016-04-05 18:10:33 +01:00
.hgignore merge with stable 2017-06-24 15:50:13 -04:00
.hgsigs Added signature for changeset f1d5a55d6a57 2017-11-07 13:15:35 -05: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 dispatch: move initialization of sys.std* files 2017-10-02 07:18:24 +01: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 makefile: put format-c into .PHONY targets 2017-10-26 11:58:55 +08:00
README.rst doc: rename README to README.rst 2017-09-26 08:37:17 +02:00
setup.py setup: filter out devel-warn messages from system hg 2017-10-23 22:13:59 -05: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.