The links to other manpages used both italic and bold text nested
within each other. The \fP (select previous font) macro was used
incorrectly to "reset" the nested fonts resulting in:
<roman> text <italic> <bold> hg <italic> (1) <bold> more text
with no switch back to roman. This stops the bleeding and removes the
ugly italic (underline) from the manpage links.
The synopsis is used as an inline literal when generating the manpage.
There should not be any whitespace on the inside of the quotation
marks in inline literals.
Commands with an empty synopsis (such as tags) produces ``tags `` as
synopsis, which triggers a warning.
This ensures that we catch errors in the reST syntax early and for all
languages. The only change needed in gendoc.py was to correct the
computation of section underlines for Asian languages.
When stdout is redirected to the target file directly, the file is
created as an empty file even when an error occurs. Since the file is
there, 'make' wont try to re-create it in subsequent runs.
This fix is similar to the one in 5c3820db5c29, but it also takes care
of rst2html and gendoc.py.
The rst2man tool has not yet been part of an official Docutils
release, and it is not present in most distributions. This poses a
problem for people who want to install Mercurial from source, or who
want to create a Mercurial package for such a distribution -- how to
specify the build-dependencies?
By including the rst2man.py script with Mercurial people only need a
normal Docutils installation in order to install Mercurial.
docutils uses the .py extension on the commands, and so do their installer.
Distribution packages might strip the .py, but the official name should work too.
When a topic provides a callable method for its text, most likely
this text will be generated from different parts, so it does not
make sense to apply gettext on the whole result, rather the method
should provide translation by itself.
This is the case with the extensions topic, which triggers a double
gettext call, making the ASCII codec fail when it encounters 8 bit
characters, and prevents the documentation from being built.
This exposed a bug in rst2man where it neglects to escape a literal
backslash. A patch has been applied upstream, but not yet packaged in,
say, Debian unstable. A forward-compatible work-around has therefore
been put in place.
The rst2man writer leaves no space between a literal block and the
following paragraph. This patch corrects this.
It has also been applied upstream. This does not conflict with this
change since any number of newlines can be added without effecting the
rendered man page.
The Makefile now requires the rst2html and rst2man programs. Both can
be found in Debian testing or downloaded from the Docutils homepage:
http://docutils.sf.net/http://docutils.sf.net/sandbox/manpage-writer/
The new HTML and man pages no longer contain huge amounts of
un-wrapping literal blocks, thanks to how snippets of reStructuredText
can easily be included inside other reStructuredText documents.
The HTML pages now have anchors for all sections, including the help
topics in hgrc.1 which were missing from the old HTML pages.
This extends the httpshandler with the means to utilise the auth
section to provide it with a PEM encoded certificate key file and
certificate chain file. This works also with sites that both require
client certificate authentication and basic or digest password
authentication, although the latter situation may require the user to
enter the PEM password multiple times.
The intent is to fix many issues involving patching when win32ext is enabled.
With win32ext, the working directory and repository files EOLs are not the same
which means that patches made on a non-win32ext host do not apply cleanly
because of EOLs discrepancies. A theorically correct approach would be
transform either the patched file or the patch content with the
encoding/decoding filters used by win32ext. This solution is tricky to
implement and invasive, instead we prefer to address the win32ext case, by
offering a way to ignore input EOLs when patching and rewriting them when
saving the patched result.
The quotes would go wrong in many places due to differences between
asciidoc version 8.2.7 used by Benoit and 8.4.5 used by me. Between
those versions asciidoc stopped interpreting the content of `quoted
strings`, and so `*` would start bold text in the old version, but do
nothing in the new version.
To complicate things further, `\*` would escape the bold tag in the
old version, but in the new version the backslash was inserted
literally into the output (because the backtick quotes it).
I've now replaced backticks with non-quoting plusses and escaped
backslashes as appropriate.
Now that arguments can be mixed with options we can simplify the
synopsis considerably. Also, highlighting the command name in bold
(instead of italics) seem to be the standard convention.
The man page used to have lines longer than 80 characters, even though
all lines in the hgrc.5.txt file were wrapped nicely. The problem
turned out to be that the indented paragraphs started literal blocks
instead of normal paragraphs. The literal blocks were of course not
wrapped when displayed by man.
In short, the asciidoc rules require lists to be formatted like this:
foo::
Some description of foo.
+
Another paragraph in the description of foo. It *must* start flush
left and the plus is necessary to indicate that this is a list item
continuation.
Lists with nested lists can be formatted correctly using something
called "open blocks". These blocks are used to group the list items
and are marked by a line above and below with two dashes. See the
asciidoc user guide for the gory details...
EOLs in patched files are restored to their original value after
patching. We use the first EOL found in the file, files with
inconsistent EOLs will thus be normalized during this process.
When we try to build manpages with xmlto and sed, but xmlto is
missing fail at the xmlto stage. Otherwise, one may run `cd doc;
make' and miss the warnings like:
xmlto: not found
sed: hg.1: No such file or directory
and end up with empty files installed as manpages.
Allows defining other output formats for profiling.
If an invalid format is given, output a warning and ignore it.
For now, only the standard 'text' value is supported.
hgrc.5.ja.txt probably should include an example like:
[email]
charsets = iso-8859-1, iso-8859-15, windows-1252, iso-8859-2,
windows-1250, iso-2022-jp, iso-2022-jp-ms
When looking up a help topic, the key is now only matched against the
short names for each topic, and not the header. So
hg help 'Environment Variables'
must be replaced with
hg help env
When ui.askusername is set and not username are specified on the command line,
in hgrc or in the variables $HGUSER or $EMAIL, then hg will prompt for the
username.
Feature requested, and documentation provided by Mark Edgington.
Move the "Specifying Single Revisions" and "Specifying Multiple
Revisions" help topics from the manual page into the helptable
so they are available both online and in the manual page.
The helptable is used for helptopics listed in the manual
page, so the order of topics should not be random.
Convert it from a dictionary into a tuple of tuples.
Also reorder helptable entries to keep previous manual
page order.
This works around a bug in old docbook stylesheets.
Remove .*.swp example from hgignore.5.txt.
Diagnosis and workaround thanks to Alexis S. L. Carvalho.
Unix systems usually have a PAGER environment variable set.
If it is set, mercurial will use the pager application to display
output.
Two configuration variables are available to influence the behaviour of the
pager. ui.pager sets the pager application. The pager is
only used if ui.usepager is true. By default ui.usepager is disabled.
63beab327d26 introduced using ui.username before web.contact, but this was
never documented and might cause commit accidents.
- Drop web.author (deprecated since 2005)
- Try ui.username or $EMAIL as a fallback to display something useful.
- Update docs for the fallbacks.
These names were disappearing in the asciidoc output and no form of
escaping seems to help. Let's just add repo/ to make it explicit that
they're in the repository root.
Using the module name was not always helpful. It breaks down
when Mercurial is installed as source and when the Mercurial
libs are used by external applications.
This patch allows Mercurial installers to store the system wide
rcpath in the registry, where it can always be found. HGRCPATH
is a poor option for storing the system wide rcpath, since it
overrides both the system and user rcpaths.
This patch provides character encoding setting in each repository. After this
patch, You can use multi encoding repositories with one mercurial server.
Only printenv was changed, not the actual execution of hooks.
And not setting an empty value might cause problems on platforms
which can't always remove variables from the environment.
This untrusted configparser is a superset of the trusted configparser,
so that interpolation still works.
Also add an "untrusted" argument to ui.config* to allow querying
ui.ucdata.
With --debug, we print a warning when we read an untrusted config
file, and when we try to access a trusted setting that has one value
in the trusted configparser and another in the untrusted configparser.
The list of trusted users and groups is specified in the [trusted]
section of a hgrc; the current user is always trusted; "*" can be
used to trust all users/groups.
Global hgrc files are always read.
On Windows (and other systems that don't have the pwd and grp modules),
all .hg/hgrc files are read.
This is essentially the same patch that was previously applied as
revision f077d29b114d.
The list of trusted users and groups is specified in the [trusted]
section of a hgrc; the current user is always trusted; "*" can be
used to trust all users/groups.
Global hgrc files are always read.
On Windows (and other systems that don't have the pwd and grp modules),
all .hg/hgrc files are read.
With this change, you can set
[web]
stripes=3
to get stripes every three lines (a-la fanfold paper), instead of every
line on source and directory listings. The default behaviour is stripes=1
which generates output similar to current, and you can also turn stripes
off by setting it to 0.
new hgrc entries allow_push, deny_push, push_ssl control push over http.
allow_push list controls push. if empty or not set, no user can push.
if "*", any user (incl. unauthenticated user) can push. if list of user
names, only authenticated users in list can push.
deny_push list examined before allow_push. if "*", no user can push.
if list of user names, no unauthenticated user can push, and no users
in list can push.
push_ssl requires https connection for push. default is true, so password
sniffing can not be done.
to write hook in python, create module with hook function inside.
make sure mercurial can import module (put it in $PYTHONPATH or load it
as extension). hook function should look like this:
def myhook(ui, repo, hooktype, **kwargs):
if hook_passes:
return True
elif hook_explicitly_fails:
return False
elif some_other_failure:
import util
raise util.Abort('helpful failure message')
else:
return
# implicit return of None makes hook fail!
then in .hgrc, add hook with "python:" prefix:
[hooks]
commit = python:mymodule.myhook
Reference: http://www.selenic.com/mercurial/bts/issue166
If the [ui] section of .hgrc contains keys like "ignore" or
"ignore.something", the values corresponding to these keys are
treated as per-user hgignore files. These hgignore files apply to all
repositories used by that user.
Searched in this order: $HGUSER, [ui] section of hgrcs, $EMAIL
and stop searching if one of these is set.
Abort if found username is an empty string to force specifying
the commit user elsewhere, e.g. with line option or repo hgrc.
If not found, use $LOGNAME or $USERNAME +"@full.hostname".
if set, override default hgrc search path.
if empty, only .hg/hgrc of current repo read.
for each element, if directory, all entries in directory with end in
".rc" are added to path. else, element is added to path.
big thing about this change is that user "~/.hgrc" and system hgrc not
longer breaks tests. run-tests makes HGRCPATH empty now.
change name of key in map file from changelog to changeset.
rename command map files to start with map-cmdline.
rename ui.logmap to ui.style in hgrc.
now --style=foo does this:
tries to open foo as file.
tries as map-cmdline.foo in template path.
tries as foo in template path.
rename --map-file to --style.
no more -t alias for --template.
update docs.
rename template entry in map files to changelog.
if --verbose, use changelog_verbose if there, else changelog.
gendoc.py is a script generating a part of the manpage (the commands
help and options) from the docstring in commands.py.
It avoids duplicating the doc between the doc/ directory and the docstrings.
To generate the manpage, 'make doc' will create all the necessary intermediate
files.
mechanism is same as hgweb templates.
old show_changeset code is still used for now if no template given,
because it is faster than template code when verbose or debug.
simple template can be given on command line using -t, --template.
example:
hg log -t '{author|person}\n'
complex template can be put in template map file, given on command line
using --map-file.
we give two example map files:
map-log.compact prints 3 lines of output for every change.
map-log.verbose prints exact same output as default "hg log -v".
map files are searched where user says, then in template path as backup.
example:
hg log --map-file map-log.compact
defaults can be set in hgrc with ui.logtemplate and ui.logmap.
- change the wait keyword from lock.lock to timeout,
a negative timeout of means "wait forever"
- refactor the two lock functions from localrepo.py
- make them use the timeout (default 1024, can be changed
with ui.timeout in the config file
- update the doc
prechangegroup lets you stop push, pull or unbundle before it begins.
pretxnchangegroup lets you inspect changegroup before transaction is
committed, and roll back if you not like it.
hook allows check of changeset after create, but before transaction
is committed. hook failure rolls transaction back.
makes place for local policies like commit message must contain bug id
or reviewer signoff.
change also adds parent changeset ids to commit hook environment,
because is cheap and useful.
now it searches <install dir>/etc/mercurial, /etc/mercurial, and user
hgrc.
this allows site-wide configuration to be shared over automounted nfs
partition, instead of chenging on every system. option of having local
configuration on every system remains.
old code for searching /etc/mercurial/hgrc.d never worked, this code
is tested and works.
The latest asciidoc doesn't have an 'html' backend. 'html' was last valid
with version 6 ( 2005-1-28). Current options are xhtml11, or
html4, with xhtml11 by default.
--- hg.orig/doc/hg.1.txt 2005-09-22 09:40:47.000000000 -0700
+++ hg/doc/hg.1.txt 2005-09-23 18:31:58.000000000 -0700
@@ -802,6 +802,6 @@ http://selenic.com/mailman/listinfo/merc
COPYING
-------
-Copyright (C) 2005 Matt Mackall.
+Copyright \(C) 2005 Matt Mackall.
Free use of this software is granted under the terms of the GNU General
Public License (GPL).
Index: hg/doc/hgmerge.1.txt
===================================================================
--- hg.orig/doc/hgmerge.1.txt 2005-06-30 10:19:51.000000000 -0700
+++ hg/doc/hgmerge.1.txt 2005-09-23 18:31:59.000000000 -0700
@@ -30,6 +30,6 @@ hg(1) - the command line interface to Me
COPYING
-------
-Copyright (C) 2005 Matt Mackall.
+Copyright \(C) 2005 Matt Mackall.
Free use of this software is granted under the terms of the GNU General
Public License (GPL).