annotate doc/runrst @ 51181:dcaa2df1f688

changelog: never inline changelog The test suite mostly use small repositories, that implies that most changelog in the tests are inlined. As a result, non-inlined changelog are quite poorly tested. Since non-inline changelog are most common case for serious repositories, this lack of testing is a significant problem that results in high profile issue like the one recently fixed by 66417f55ea33 and 849745d7da89. Inlining the changelog does not bring much to the table, the number of total file saved is negligible, and the changelog will be read by most operation anyway. So this changeset is make it so we never inline the changelog, and de-inline the one that are still inlined whenever we touch them. By doing that, we remove the "dual code path" situation for writing new entry to the changelog and move to a "single code path" situation. Having a single code path simplify the code and make sure it is covered by test (if test cover that situation obviously) This impact all tests that care about the number of file and the exchange size, but there is nothing too complicated in them just a lot of churn. The churn is made "worse" by the fact rust will use the persistent nodemap on any changelog now. Which is overall a win as it means testing the persistent nodemap more and having less special cases. In short, having inline changelog is mostly useless and an endless source of pain. We get rid of it.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 11 Dec 2023 22:27:59 +0100
parents 6000f5b25c9b
children 2a875530a023
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45830
c102b704edb5 global: use python3 in shebangs
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43691
diff changeset
1 #!/usr/bin/env python3
10971
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
2 #
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
3 # runrst - register custom roles and run correct writer
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
4 #
46819
d4ba4d51f85f contributor: change mentions of mpm to olivia
Raphaël Gomès <rgomes@octobus.net>
parents: 45830
diff changeset
5 # Copyright 2010 Olivia Mackall <olivia@selenic.com> and others
10971
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
6 #
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
7 # This software may be used and distributed according to the terms of the
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
8 # GNU General Public License version 2 or any later version.
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
9
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
10 """usage: %s WRITER args...
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
11
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
12 where WRITER is the name of a Docutils writer such as 'html' or 'manpage'
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
13 """
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
14
39472
4e4fae1dda5c doc: use modern import style in runrst
Yuya Nishihara <yuya@tcha.org>
parents: 28076
diff changeset
15
10971
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
16 import sys
43691
47ef023d0165 black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43690
diff changeset
17
11707
13d79a7bf5b7 runrst: try to be more helpful if docutils is not installed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10974
diff changeset
18 try:
39472
4e4fae1dda5c doc: use modern import style in runrst
Yuya Nishihara <yuya@tcha.org>
parents: 28076
diff changeset
19 import docutils.core as core
4e4fae1dda5c doc: use modern import style in runrst
Yuya Nishihara <yuya@tcha.org>
parents: 28076
diff changeset
20 import docutils.nodes as nodes
4e4fae1dda5c doc: use modern import style in runrst
Yuya Nishihara <yuya@tcha.org>
parents: 28076
diff changeset
21 import docutils.utils as utils
4e4fae1dda5c doc: use modern import style in runrst
Yuya Nishihara <yuya@tcha.org>
parents: 28076
diff changeset
22 import docutils.parsers.rst.roles as roles
11707
13d79a7bf5b7 runrst: try to be more helpful if docutils is not installed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10974
diff changeset
23 except ImportError:
43691
47ef023d0165 black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43690
diff changeset
24 sys.stderr.write(
47ef023d0165 black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43690
diff changeset
25 "abort: couldn't generate documentation: docutils "
47ef023d0165 black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43690
diff changeset
26 "module is missing\n"
47ef023d0165 black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43690
diff changeset
27 )
47ef023d0165 black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43690
diff changeset
28 sys.stderr.write(
47ef023d0165 black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43690
diff changeset
29 "please install python-docutils or see "
47ef023d0165 black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43690
diff changeset
30 "http://docutils.sourceforge.net/\n"
47ef023d0165 black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43690
diff changeset
31 )
11707
13d79a7bf5b7 runrst: try to be more helpful if docutils is not installed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 10974
diff changeset
32 sys.exit(-1)
10972
0a2c6948f5f4 doc, minirst: support hg interpreted text role
Martin Geisler <mg@aragost.com>
parents: 10971
diff changeset
33
43691
47ef023d0165 black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43690
diff changeset
34
43690
15cccbacd5ce doc: don't use mutable default arguments
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39472
diff changeset
35 def role_hg(name, rawtext, text, lineno, inliner, options=None, content=None):
10974
854ac04d712c doc: make links for hg role
Martin Geisler <mg@aragost.com>
parents: 10972
diff changeset
36 text = "hg " + utils.unescape(text)
854ac04d712c doc: make links for hg role
Martin Geisler <mg@aragost.com>
parents: 10972
diff changeset
37 linktext = nodes.literal(rawtext, text)
854ac04d712c doc: make links for hg role
Martin Geisler <mg@aragost.com>
parents: 10972
diff changeset
38 parts = text.split()
854ac04d712c doc: make links for hg role
Martin Geisler <mg@aragost.com>
parents: 10972
diff changeset
39 cmd, args = parts[1], parts[2:]
28075
63eae465095e doc: translate from :hg:`help config` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 15314
diff changeset
40 refuri = "hg.1.html#%s" % cmd
10974
854ac04d712c doc: make links for hg role
Martin Geisler <mg@aragost.com>
parents: 10972
diff changeset
41 if cmd == 'help' and args:
28075
63eae465095e doc: translate from :hg:`help config` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 15314
diff changeset
42 if args[0] == 'config':
63eae465095e doc: translate from :hg:`help config` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 15314
diff changeset
43 # :hg:`help config`
63eae465095e doc: translate from :hg:`help config` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 15314
diff changeset
44 refuri = "hgrc.5.html"
28076
18c6b271579b doc: translate from :hg:`help config.SECTION` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28075
diff changeset
45 elif args[0].startswith('config.'):
18c6b271579b doc: translate from :hg:`help config.SECTION` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28075
diff changeset
46 # :hg:`help config.SECTION...`
18c6b271579b doc: translate from :hg:`help config.SECTION` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28075
diff changeset
47 refuri = "hgrc.5.html#%s" % args[0].split('.', 2)[1]
28075
63eae465095e doc: translate from :hg:`help config` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 15314
diff changeset
48 elif len(args) >= 2 and args[0] == '-c':
63eae465095e doc: translate from :hg:`help config` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 15314
diff changeset
49 # :hg:`help -c COMMAND ...` is equivalent to :hg:`COMMAND`
63eae465095e doc: translate from :hg:`help config` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 15314
diff changeset
50 # (mainly for :hg:`help -c config`)
63eae465095e doc: translate from :hg:`help config` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 15314
diff changeset
51 refuri = "hg.1.html#%s" % args[1]
63eae465095e doc: translate from :hg:`help config` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 15314
diff changeset
52 else:
63eae465095e doc: translate from :hg:`help config` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 15314
diff changeset
53 refuri = "hg.1.html#%s" % args[0]
43691
47ef023d0165 black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43690
diff changeset
54 node = nodes.reference(rawtext, '', linktext, refuri=refuri)
10972
0a2c6948f5f4 doc, minirst: support hg interpreted text role
Martin Geisler <mg@aragost.com>
parents: 10971
diff changeset
55 return [node], []
0a2c6948f5f4 doc, minirst: support hg interpreted text role
Martin Geisler <mg@aragost.com>
parents: 10971
diff changeset
56
43691
47ef023d0165 black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43690
diff changeset
57
10972
0a2c6948f5f4 doc, minirst: support hg interpreted text role
Martin Geisler <mg@aragost.com>
parents: 10971
diff changeset
58 roles.register_local_role("hg", role_hg)
10971
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
59
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
60 if __name__ == "__main__":
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
61 if len(sys.argv) < 2:
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
62 sys.stderr.write(__doc__ % sys.argv[0])
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
63 sys.exit(1)
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
64
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
65 writer = sys.argv[1]
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
66 del sys.argv[1]
cbe400a8e217 doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff changeset
67
39472
4e4fae1dda5c doc: use modern import style in runrst
Yuya Nishihara <yuya@tcha.org>
parents: 28076
diff changeset
68 core.publish_cmdline(writer_name=writer)