2013-02-01 23:41:14 +04:00
|
|
|
# Guard against environment variables
|
|
|
|
MAN1_TXT =
|
|
|
|
MAN5_TXT =
|
|
|
|
MAN7_TXT =
|
2021-04-09 18:02:44 +03:00
|
|
|
HOWTO_TXT =
|
2021-04-09 18:02:45 +03:00
|
|
|
DOC_DEP_TXT =
|
2014-01-27 21:04:32 +04:00
|
|
|
TECH_DOCS =
|
|
|
|
ARTICLES =
|
|
|
|
SP_ARTICLES =
|
2014-10-11 01:25:36 +04:00
|
|
|
OBSOLETE_HTML =
|
2013-02-01 23:41:14 +04:00
|
|
|
|
2019-04-18 16:16:44 +03:00
|
|
|
-include GIT-EXCLUDED-PROGRAMS
|
|
|
|
|
2013-02-01 23:41:14 +04:00
|
|
|
MAN1_TXT += $(filter-out \
|
2019-04-18 16:16:44 +03:00
|
|
|
$(patsubst %,%.txt,$(EXCLUDED_PROGRAMS)) \
|
2013-02-01 23:41:14 +04:00
|
|
|
$(addsuffix .txt, $(ARTICLES) $(SP_ARTICLES)), \
|
|
|
|
$(wildcard git-*.txt))
|
|
|
|
MAN1_TXT += git.txt
|
|
|
|
MAN1_TXT += gitk.txt
|
|
|
|
MAN1_TXT += gitweb.txt
|
|
|
|
|
2020-08-05 04:19:04 +03:00
|
|
|
# man5 / man7 guides (note: new guides should also be added to command-list.txt)
|
2013-02-01 23:41:14 +04:00
|
|
|
MAN5_TXT += gitattributes.txt
|
|
|
|
MAN5_TXT += githooks.txt
|
|
|
|
MAN5_TXT += gitignore.txt
|
2021-01-12 23:17:45 +03:00
|
|
|
MAN5_TXT += gitmailmap.txt
|
2013-02-01 23:41:14 +04:00
|
|
|
MAN5_TXT += gitmodules.txt
|
|
|
|
MAN5_TXT += gitrepository-layout.txt
|
|
|
|
MAN5_TXT += gitweb.conf.txt
|
|
|
|
|
|
|
|
MAN7_TXT += gitcli.txt
|
|
|
|
MAN7_TXT += gitcore-tutorial.txt
|
2011-12-10 14:31:38 +04:00
|
|
|
MAN7_TXT += gitcredentials.txt
|
2013-02-01 23:41:14 +04:00
|
|
|
MAN7_TXT += gitcvs-migration.txt
|
|
|
|
MAN7_TXT += gitdiffcore.txt
|
2014-10-11 01:25:37 +04:00
|
|
|
MAN7_TXT += giteveryday.txt
|
2020-03-30 14:55:18 +03:00
|
|
|
MAN7_TXT += gitfaq.txt
|
2013-02-01 23:41:14 +04:00
|
|
|
MAN7_TXT += gitglossary.txt
|
|
|
|
MAN7_TXT += gitnamespaces.txt
|
2019-03-26 00:41:36 +03:00
|
|
|
MAN7_TXT += gitremote-helpers.txt
|
2013-02-01 23:41:14 +04:00
|
|
|
MAN7_TXT += gitrevisions.txt
|
2017-06-23 00:01:49 +03:00
|
|
|
MAN7_TXT += gitsubmodules.txt
|
2013-02-01 23:41:14 +04:00
|
|
|
MAN7_TXT += gittutorial-2.txt
|
|
|
|
MAN7_TXT += gittutorial.txt
|
|
|
|
MAN7_TXT += gitworkflows.txt
|
2005-05-11 01:32:39 +04:00
|
|
|
|
2021-04-09 18:02:44 +03:00
|
|
|
HOWTO_TXT += $(wildcard howto/*.txt)
|
|
|
|
|
2021-04-09 18:02:45 +03:00
|
|
|
DOC_DEP_TXT += $(wildcard *.txt)
|
|
|
|
DOC_DEP_TXT += $(wildcard config/*.txt)
|
|
|
|
|
2019-01-07 22:21:12 +03:00
|
|
|
ifdef MAN_FILTER
|
|
|
|
MAN_TXT = $(filter $(MAN_FILTER),$(MAN1_TXT) $(MAN5_TXT) $(MAN7_TXT))
|
|
|
|
else
|
2007-12-10 12:15:57 +03:00
|
|
|
MAN_TXT = $(MAN1_TXT) $(MAN5_TXT) $(MAN7_TXT)
|
2019-01-07 22:21:12 +03:00
|
|
|
MAN_FILTER = $(MAN_TXT)
|
|
|
|
endif
|
|
|
|
|
2013-06-16 21:13:00 +04:00
|
|
|
MAN_XML = $(patsubst %.txt,%.xml,$(MAN_TXT))
|
|
|
|
MAN_HTML = $(patsubst %.txt,%.html,$(MAN_TXT))
|
2017-12-10 01:07:57 +03:00
|
|
|
GIT_MAN_REF = master
|
2007-12-10 12:15:57 +03:00
|
|
|
|
2014-10-11 01:25:37 +04:00
|
|
|
OBSOLETE_HTML += everyday.html
|
2014-10-11 01:25:36 +04:00
|
|
|
OBSOLETE_HTML += git-remote-helpers.html
|
2005-08-31 00:51:01 +04:00
|
|
|
|
2014-01-27 21:04:32 +04:00
|
|
|
ARTICLES += howto-index
|
2006-03-05 12:36:33 +03:00
|
|
|
ARTICLES += git-tools
|
2009-11-08 18:09:47 +03:00
|
|
|
ARTICLES += git-bisect-lk2009
|
2005-08-31 00:51:01 +04:00
|
|
|
# with their own formatting rules.
|
2014-01-27 21:04:32 +04:00
|
|
|
SP_ARTICLES += user-manual
|
2012-12-21 22:05:28 +04:00
|
|
|
SP_ARTICLES += howto/new-command
|
2012-01-18 02:52:24 +04:00
|
|
|
SP_ARTICLES += howto/revert-branch-rebase
|
|
|
|
SP_ARTICLES += howto/using-merge-subtree
|
|
|
|
SP_ARTICLES += howto/using-signed-tag-in-pull-request
|
2012-10-23 21:58:04 +04:00
|
|
|
SP_ARTICLES += howto/use-git-daemon
|
|
|
|
SP_ARTICLES += howto/update-hook-example
|
|
|
|
SP_ARTICLES += howto/setup-git-server-over-http
|
|
|
|
SP_ARTICLES += howto/separating-topic-branches
|
|
|
|
SP_ARTICLES += howto/revert-a-faulty-merge
|
|
|
|
SP_ARTICLES += howto/recover-corrupted-blob-object
|
2013-10-25 11:55:02 +04:00
|
|
|
SP_ARTICLES += howto/recover-corrupted-object-harder
|
2012-10-23 21:58:04 +04:00
|
|
|
SP_ARTICLES += howto/rebuild-from-update-hook
|
|
|
|
SP_ARTICLES += howto/rebase-from-internal-branch
|
2014-05-09 10:08:41 +04:00
|
|
|
SP_ARTICLES += howto/keep-canonical-history-correct
|
2012-10-23 21:58:04 +04:00
|
|
|
SP_ARTICLES += howto/maintain-git
|
2021-03-27 01:12:46 +03:00
|
|
|
SP_ARTICLES += howto/coordinate-embargoed-releases
|
2007-11-25 10:48:04 +03:00
|
|
|
API_DOCS = $(patsubst %.txt,%,$(filter-out technical/api-index-skel.txt technical/api-index.txt, $(wildcard technical/api-*.txt)))
|
|
|
|
SP_ARTICLES += $(API_DOCS)
|
2012-10-23 21:58:04 +04:00
|
|
|
|
2019-05-17 22:07:02 +03:00
|
|
|
TECH_DOCS += MyFirstContribution
|
2019-10-12 02:55:54 +03:00
|
|
|
TECH_DOCS += MyFirstObjectWalk
|
2017-11-13 01:07:18 +03:00
|
|
|
TECH_DOCS += SubmittingPatches
|
2017-09-28 07:43:21 +03:00
|
|
|
TECH_DOCS += technical/hash-function-transition
|
2014-01-27 21:04:32 +04:00
|
|
|
TECH_DOCS += technical/http-protocol
|
2014-01-26 16:57:19 +04:00
|
|
|
TECH_DOCS += technical/index-format
|
2018-01-25 21:53:24 +03:00
|
|
|
TECH_DOCS += technical/long-running-process-protocol
|
2018-11-20 21:04:54 +03:00
|
|
|
TECH_DOCS += technical/multi-pack-index
|
2012-10-23 21:58:04 +04:00
|
|
|
TECH_DOCS += technical/pack-format
|
|
|
|
TECH_DOCS += technical/pack-heuristics
|
|
|
|
TECH_DOCS += technical/pack-protocol
|
2021-04-19 22:53:35 +03:00
|
|
|
TECH_DOCS += technical/parallel-checkout
|
2018-08-15 01:28:46 +03:00
|
|
|
TECH_DOCS += technical/partial-clone
|
2012-10-23 21:58:04 +04:00
|
|
|
TECH_DOCS += technical/protocol-capabilities
|
|
|
|
TECH_DOCS += technical/protocol-common
|
2018-03-15 20:31:19 +03:00
|
|
|
TECH_DOCS += technical/protocol-v2
|
2012-10-23 21:58:04 +04:00
|
|
|
TECH_DOCS += technical/racy-git
|
2020-05-20 20:36:10 +03:00
|
|
|
TECH_DOCS += technical/reftable
|
2012-10-23 21:58:04 +04:00
|
|
|
TECH_DOCS += technical/send-pack-pipeline
|
|
|
|
TECH_DOCS += technical/shallow
|
2016-06-17 10:46:08 +03:00
|
|
|
TECH_DOCS += technical/signature-format
|
2012-10-23 21:58:04 +04:00
|
|
|
TECH_DOCS += technical/trivial-merge
|
|
|
|
SP_ARTICLES += $(TECH_DOCS)
|
2007-11-25 10:48:04 +03:00
|
|
|
SP_ARTICLES += technical/api-index
|
2005-08-31 00:51:01 +04:00
|
|
|
|
2019-01-07 22:21:12 +03:00
|
|
|
ARTICLES_HTML += $(patsubst %,%.html,$(ARTICLES) $(SP_ARTICLES))
|
|
|
|
HTML_FILTER ?= $(ARTICLES_HTML) $(OBSOLETE_HTML)
|
|
|
|
DOC_HTML = $(MAN_HTML) $(filter $(HTML_FILTER),$(ARTICLES_HTML) $(OBSOLETE_HTML))
|
2005-08-30 10:09:22 +04:00
|
|
|
|
2019-01-07 22:21:12 +03:00
|
|
|
DOC_MAN1 = $(patsubst %.txt,%.1,$(filter $(MAN_FILTER),$(MAN1_TXT)))
|
|
|
|
DOC_MAN5 = $(patsubst %.txt,%.5,$(filter $(MAN_FILTER),$(MAN5_TXT)))
|
|
|
|
DOC_MAN7 = $(patsubst %.txt,%.7,$(filter $(MAN_FILTER),$(MAN7_TXT)))
|
2005-05-22 21:44:15 +04:00
|
|
|
|
2013-06-16 21:13:00 +04:00
|
|
|
prefix ?= $(HOME)
|
|
|
|
bindir ?= $(prefix)/bin
|
|
|
|
htmldir ?= $(prefix)/share/doc/git-doc
|
2013-06-16 21:13:01 +04:00
|
|
|
infodir ?= $(prefix)/share/info
|
2013-06-16 21:13:00 +04:00
|
|
|
pdfdir ?= $(prefix)/share/doc/git-doc
|
|
|
|
mandir ?= $(prefix)/share/man
|
|
|
|
man1dir = $(mandir)/man1
|
|
|
|
man5dir = $(mandir)/man5
|
|
|
|
man7dir = $(mandir)/man7
|
|
|
|
# DESTDIR =
|
2005-07-15 05:21:57 +04:00
|
|
|
|
2012-09-19 21:06:37 +04:00
|
|
|
ASCIIDOC = asciidoc
|
2007-02-14 02:15:05 +03:00
|
|
|
ASCIIDOC_EXTRA =
|
2014-10-12 03:37:35 +04:00
|
|
|
ASCIIDOC_HTML = xhtml11
|
|
|
|
ASCIIDOC_DOCBOOK = docbook
|
|
|
|
ASCIIDOC_CONF = -f asciidoc.conf
|
2014-10-27 03:13:42 +03:00
|
|
|
ASCIIDOC_COMMON = $(ASCIIDOC) $(ASCIIDOC_EXTRA) $(ASCIIDOC_CONF) \
|
2019-09-16 22:00:26 +03:00
|
|
|
-amanversion=$(GIT_VERSION) \
|
|
|
|
-amanmanual='Git Manual' -amansource='Git'
|
2014-10-27 03:13:42 +03:00
|
|
|
TXT_TO_HTML = $(ASCIIDOC_COMMON) -b $(ASCIIDOC_HTML)
|
|
|
|
TXT_TO_XML = $(ASCIIDOC_COMMON) -b $(ASCIIDOC_DOCBOOK)
|
2009-03-27 09:43:58 +03:00
|
|
|
MANPAGE_XSL = manpage-normal.xsl
|
2012-09-19 21:06:37 +04:00
|
|
|
XMLTO = xmlto
|
2009-03-27 09:44:05 +03:00
|
|
|
XMLTO_EXTRA =
|
2013-06-16 21:13:00 +04:00
|
|
|
INSTALL ?= install
|
2007-07-14 21:51:44 +04:00
|
|
|
RM ?= rm -f
|
2011-11-08 22:17:40 +04:00
|
|
|
MAN_REPO = ../../git-manpages
|
|
|
|
HTML_REPO = ../../git-htmldocs
|
2005-07-15 05:21:57 +04:00
|
|
|
|
2013-06-16 21:13:00 +04:00
|
|
|
MAKEINFO = makeinfo
|
|
|
|
INSTALL_INFO = install-info
|
|
|
|
DOCBOOK2X_TEXI = docbook2x-texi
|
|
|
|
DBLATEX = dblatex
|
2013-10-03 23:17:32 +04:00
|
|
|
ASCIIDOC_DBLATEX_DIR = /etc/asciidoc/dblatex
|
2017-01-22 05:41:55 +03:00
|
|
|
DBLATEX_COMMON = -p $(ASCIIDOC_DBLATEX_DIR)/asciidoc-dblatex.xsl -s $(ASCIIDOC_DBLATEX_DIR)/asciidoc-dblatex.sty
|
2007-12-01 05:36:34 +03:00
|
|
|
ifndef PERL_PATH
|
|
|
|
PERL_PATH = /usr/bin/perl
|
|
|
|
endif
|
2007-08-06 14:22:57 +04:00
|
|
|
|
2006-09-01 02:31:08 +04:00
|
|
|
-include ../config.mak.autogen
|
2007-02-28 23:57:42 +03:00
|
|
|
-include ../config.mak
|
2006-09-01 02:31:08 +04:00
|
|
|
|
2016-05-31 19:20:33 +03:00
|
|
|
ifndef NO_MAN_BOLD_LITERAL
|
2009-03-27 09:44:05 +03:00
|
|
|
XMLTO_EXTRA += -m manpage-bold-literal.xsl
|
|
|
|
endif
|
2007-11-14 12:38:46 +03:00
|
|
|
|
2009-12-03 11:06:52 +03:00
|
|
|
# Newer DocBook stylesheet emits warning cruft in the output when
|
2009-12-04 20:53:21 +03:00
|
|
|
# this is not set, and if set it shows an absolute link. Older
|
|
|
|
# stylesheets simply ignore this parameter.
|
2009-12-03 22:12:32 +03:00
|
|
|
#
|
2009-12-04 20:53:21 +03:00
|
|
|
# Distros may want to use MAN_BASE_URL=file:///path/to/git/docs/
|
|
|
|
# or similar.
|
|
|
|
ifndef MAN_BASE_URL
|
|
|
|
MAN_BASE_URL = file://$(htmldir)/
|
2009-12-03 22:12:32 +03:00
|
|
|
endif
|
2009-12-04 20:53:21 +03:00
|
|
|
XMLTO_EXTRA += -m manpage-base-url.xsl
|
2009-12-03 05:45:09 +03:00
|
|
|
|
2009-10-22 12:19:06 +04:00
|
|
|
# If your target system uses GNU groff, it may try to render
|
|
|
|
# apostrophes as a "pretty" apostrophe using unicode. This breaks
|
|
|
|
# cut&paste, so you should set GNU_ROFF to force them to be ASCII
|
|
|
|
# apostrophes. Unfortunately does not work with non-GNU roff.
|
|
|
|
ifdef GNU_ROFF
|
|
|
|
XMLTO_EXTRA += -m manpage-quote-apos.xsl
|
|
|
|
endif
|
|
|
|
|
2017-01-22 05:41:56 +03:00
|
|
|
ifdef USE_ASCIIDOCTOR
|
|
|
|
ASCIIDOC = asciidoctor
|
|
|
|
ASCIIDOC_CONF =
|
|
|
|
ASCIIDOC_HTML = xhtml5
|
Documentation: fix build with Asciidoctor 2
Our documentation toolchain has traditionally been built around DocBook
4.5. This version of DocBook is the last DTD-based version of DocBook.
In 2009, DocBook 5 was introduced using namespaces and its syntax is
expressed in RELAX NG, which is more expressive and allows a wider
variety of syntax forms.
Asciidoctor, one of the alternatives for building our documentation,
moved support for DocBook 4.5 out of core in its recent 2.0 release and
now only supports DocBook 5 in the main release. The DocBoook 4.5
converter is still available as a separate component, but this is not
available in most distro packages. This would not be a problem but for
the fact that we use xmlto, which is still stuck in the DocBook 4.5 era.
xmlto performs DTD validation as part of the build process. This is not
problematic for DocBook 4.5, which has a valid DTD, but it clearly
cannot work for DocBook 5, since no DTD can adequately express its full
syntax. In addition, even if xmlto did support RELAX NG validation,
that wouldn't be sufficient because it uses the libxml2-based xmllint to
do so, which has known problems with validating interleaves in RELAX NG.
Fortunately, there's an easy way forward: ask Asciidoctor to use its
DocBook 5 backend and tell xmlto to skip validation. Asciidoctor has
supported DocBook 5 since v0.1.4 in 2013 and xmlto has supported
skipping validation for probably longer than that.
We also need to teach xmlto how to use the namespaced DocBook XSLT
stylesheets instead of the non-namespaced ones it usually uses.
Normally these stylesheets are interchangeable, but the non-namespaced
ones have a bug that causes them not to strip whitespace automatically
from certain elements when namespaces are in use. This results in
additional whitespace at the beginning of list elements, which is
jarring and unsightly.
We can do this by passing a custom stylesheet with the -x option that
simply imports the namespaced stylesheets via a URL. Any system with
support for XML catalogs will automatically look this URL up and
reference a local copy instead without us having to know where this
local copy is located. We know that anyone using xmlto will already
have catalogs set up properly since the DocBook 4.5 DTD used during
validation is also looked up via catalogs. All major Linux
distributions distribute the necessary stylesheets and have built-in
catalog support, and Homebrew does as well, albeit with a requirement to
set an environment variable to enable catalog support.
On the off chance that someone lacks support for catalogs, it is
possible for xmlto (via xmllint) to download the stylesheets from the
URLs in question, although this will likely perform poorly enough to
attract attention. People still have the option of using the prebuilt
documentation that we ship, so happily this should not be an impediment.
Finally, we need to filter out some messages from other stylesheets that
occur when invoking dblatex in the CI job. This tool strips namespaces
much like the unnamespaced DocBook stylesheets and prints similar
messages. If we permit these messages to be printed to standard error,
our documentation CI job will fail because we check standard error for
unexpected output. Due to dblatex's reliance on Python 2, we may need
to revisit its use in the future, in which case this problem may go
away, but this can be delayed until a future patch.
The final message we filter is due to libxslt on modern Debian and
Ubuntu. The patch which they use to implement reproducible ID
generation also prints messages about the ID generation. While this
doesn't affect our current CI images since they use Ubuntu 16.04 which
lacks this patch, if we upgrade to Ubuntu 18.04 or a modern Debian,
these messages will appear and, like the above messages, cause a CI
failure.
Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-09-16 01:43:32 +03:00
|
|
|
ASCIIDOC_DOCBOOK = docbook5
|
2018-05-06 23:42:25 +03:00
|
|
|
ASCIIDOC_EXTRA += -acompat-mode -atabsize=8
|
2017-01-26 03:13:44 +03:00
|
|
|
ASCIIDOC_EXTRA += -I. -rasciidoctor-extensions
|
2017-01-22 05:41:56 +03:00
|
|
|
ASCIIDOC_EXTRA += -alitdd='&\#x2d;&\#x2d;'
|
|
|
|
DBLATEX_COMMON =
|
Documentation: fix build with Asciidoctor 2
Our documentation toolchain has traditionally been built around DocBook
4.5. This version of DocBook is the last DTD-based version of DocBook.
In 2009, DocBook 5 was introduced using namespaces and its syntax is
expressed in RELAX NG, which is more expressive and allows a wider
variety of syntax forms.
Asciidoctor, one of the alternatives for building our documentation,
moved support for DocBook 4.5 out of core in its recent 2.0 release and
now only supports DocBook 5 in the main release. The DocBoook 4.5
converter is still available as a separate component, but this is not
available in most distro packages. This would not be a problem but for
the fact that we use xmlto, which is still stuck in the DocBook 4.5 era.
xmlto performs DTD validation as part of the build process. This is not
problematic for DocBook 4.5, which has a valid DTD, but it clearly
cannot work for DocBook 5, since no DTD can adequately express its full
syntax. In addition, even if xmlto did support RELAX NG validation,
that wouldn't be sufficient because it uses the libxml2-based xmllint to
do so, which has known problems with validating interleaves in RELAX NG.
Fortunately, there's an easy way forward: ask Asciidoctor to use its
DocBook 5 backend and tell xmlto to skip validation. Asciidoctor has
supported DocBook 5 since v0.1.4 in 2013 and xmlto has supported
skipping validation for probably longer than that.
We also need to teach xmlto how to use the namespaced DocBook XSLT
stylesheets instead of the non-namespaced ones it usually uses.
Normally these stylesheets are interchangeable, but the non-namespaced
ones have a bug that causes them not to strip whitespace automatically
from certain elements when namespaces are in use. This results in
additional whitespace at the beginning of list elements, which is
jarring and unsightly.
We can do this by passing a custom stylesheet with the -x option that
simply imports the namespaced stylesheets via a URL. Any system with
support for XML catalogs will automatically look this URL up and
reference a local copy instead without us having to know where this
local copy is located. We know that anyone using xmlto will already
have catalogs set up properly since the DocBook 4.5 DTD used during
validation is also looked up via catalogs. All major Linux
distributions distribute the necessary stylesheets and have built-in
catalog support, and Homebrew does as well, albeit with a requirement to
set an environment variable to enable catalog support.
On the off chance that someone lacks support for catalogs, it is
possible for xmlto (via xmllint) to download the stylesheets from the
URLs in question, although this will likely perform poorly enough to
attract attention. People still have the option of using the prebuilt
documentation that we ship, so happily this should not be an impediment.
Finally, we need to filter out some messages from other stylesheets that
occur when invoking dblatex in the CI job. This tool strips namespaces
much like the unnamespaced DocBook stylesheets and prints similar
messages. If we permit these messages to be printed to standard error,
our documentation CI job will fail because we check standard error for
unexpected output. Due to dblatex's reliance on Python 2, we may need
to revisit its use in the future, in which case this problem may go
away, but this can be delayed until a future patch.
The final message we filter is due to libxslt on modern Debian and
Ubuntu. The patch which they use to implement reproducible ID
generation also prints messages about the ID generation. While this
doesn't affect our current CI images since they use Ubuntu 16.04 which
lacks this patch, if we upgrade to Ubuntu 18.04 or a modern Debian,
these messages will appear and, like the above messages, cause a CI
failure.
Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-09-16 01:43:32 +03:00
|
|
|
XMLTO_EXTRA += --skip-validation
|
|
|
|
XMLTO_EXTRA += -x manpage.xsl
|
2017-01-22 05:41:56 +03:00
|
|
|
endif
|
|
|
|
|
2009-03-22 16:20:44 +03:00
|
|
|
SHELL_PATH ?= $(SHELL)
|
|
|
|
# Shell quote;
|
|
|
|
SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
|
|
|
|
|
2012-03-31 12:44:53 +04:00
|
|
|
ifdef DEFAULT_PAGER
|
|
|
|
DEFAULT_PAGER_SQ = $(subst ','\'',$(DEFAULT_PAGER))
|
|
|
|
ASCIIDOC_EXTRA += -a 'git-default-pager=$(DEFAULT_PAGER_SQ)'
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifdef DEFAULT_EDITOR
|
|
|
|
DEFAULT_EDITOR_SQ = $(subst ','\'',$(DEFAULT_EDITOR))
|
|
|
|
ASCIIDOC_EXTRA += -a 'git-default-editor=$(DEFAULT_EDITOR_SQ)'
|
|
|
|
endif
|
|
|
|
|
2009-03-27 09:49:38 +03:00
|
|
|
QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir
|
|
|
|
QUIET_SUBDIR1 =
|
|
|
|
|
|
|
|
ifneq ($(findstring $(MAKEFLAGS),w),w)
|
|
|
|
PRINT_DIR = --no-print-directory
|
|
|
|
else # "make -w"
|
|
|
|
NO_SUBDIR = :
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifneq ($(findstring $(MAKEFLAGS),s),s)
|
|
|
|
ifndef V
|
|
|
|
QUIET_ASCIIDOC = @echo ' ' ASCIIDOC $@;
|
|
|
|
QUIET_XMLTO = @echo ' ' XMLTO $@;
|
|
|
|
QUIET_DB2TEXI = @echo ' ' DB2TEXI $@;
|
|
|
|
QUIET_MAKEINFO = @echo ' ' MAKEINFO $@;
|
|
|
|
QUIET_DBLATEX = @echo ' ' DBLATEX $@;
|
|
|
|
QUIET_XSLTPROC = @echo ' ' XSLTPROC $@;
|
|
|
|
QUIET_GEN = @echo ' ' GEN $@;
|
2016-05-05 00:34:23 +03:00
|
|
|
QUIET_LINT = @echo ' ' LINT $@;
|
2009-03-27 09:49:38 +03:00
|
|
|
QUIET_STDERR = 2> /dev/null
|
|
|
|
QUIET_SUBDIR0 = +@subdir=
|
|
|
|
QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \
|
|
|
|
$(MAKE) $(PRINT_DIR) -C $$subdir
|
|
|
|
export V
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2005-05-22 21:44:15 +04:00
|
|
|
all: html man
|
2005-05-11 01:32:39 +04:00
|
|
|
|
|
|
|
html: $(DOC_HTML)
|
|
|
|
|
2007-04-20 07:47:04 +04:00
|
|
|
man: man1 man5 man7
|
2005-05-22 21:44:15 +04:00
|
|
|
man1: $(DOC_MAN1)
|
2007-04-20 07:47:04 +04:00
|
|
|
man5: $(DOC_MAN5)
|
2005-05-22 21:44:15 +04:00
|
|
|
man7: $(DOC_MAN7)
|
2005-05-11 01:32:39 +04:00
|
|
|
|
2007-12-10 12:15:57 +03:00
|
|
|
info: git.info gitman.info
|
2007-08-06 14:22:57 +04:00
|
|
|
|
2008-12-11 01:44:50 +03:00
|
|
|
pdf: user-manual.pdf
|
|
|
|
|
2008-11-02 20:53:03 +03:00
|
|
|
install: install-man
|
|
|
|
|
|
|
|
install-man: man
|
2007-12-01 20:05:40 +03:00
|
|
|
$(INSTALL) -d -m 755 $(DESTDIR)$(man1dir)
|
|
|
|
$(INSTALL) -d -m 755 $(DESTDIR)$(man5dir)
|
|
|
|
$(INSTALL) -d -m 755 $(DESTDIR)$(man7dir)
|
|
|
|
$(INSTALL) -m 644 $(DOC_MAN1) $(DESTDIR)$(man1dir)
|
|
|
|
$(INSTALL) -m 644 $(DOC_MAN5) $(DESTDIR)$(man5dir)
|
|
|
|
$(INSTALL) -m 644 $(DOC_MAN7) $(DESTDIR)$(man7dir)
|
2005-07-15 05:21:57 +04:00
|
|
|
|
2007-08-06 14:22:57 +04:00
|
|
|
install-info: info
|
2007-12-01 20:05:40 +03:00
|
|
|
$(INSTALL) -d -m 755 $(DESTDIR)$(infodir)
|
2007-12-10 12:15:57 +03:00
|
|
|
$(INSTALL) -m 644 git.info gitman.info $(DESTDIR)$(infodir)
|
2007-08-06 14:22:57 +04:00
|
|
|
if test -r $(DESTDIR)$(infodir)/dir; then \
|
|
|
|
$(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) git.info ;\
|
2007-12-10 12:15:57 +03:00
|
|
|
$(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) gitman.info ;\
|
2007-08-06 14:22:57 +04:00
|
|
|
else \
|
|
|
|
echo "No directory found in $(DESTDIR)$(infodir)" >&2 ; \
|
|
|
|
fi
|
2005-11-04 11:06:20 +03:00
|
|
|
|
2008-12-11 01:44:50 +03:00
|
|
|
install-pdf: pdf
|
|
|
|
$(INSTALL) -d -m 755 $(DESTDIR)$(pdfdir)
|
|
|
|
$(INSTALL) -m 644 user-manual.pdf $(DESTDIR)$(pdfdir)
|
|
|
|
|
2007-12-02 08:07:55 +03:00
|
|
|
install-html: html
|
2009-03-22 16:20:44 +03:00
|
|
|
'$(SHELL_PATH_SQ)' ./install-webdoc.sh $(DESTDIR)$(htmldir)
|
2007-12-02 08:07:55 +03:00
|
|
|
|
2010-01-06 11:06:58 +03:00
|
|
|
../GIT-VERSION-FILE: FORCE
|
2009-03-27 09:49:38 +03:00
|
|
|
$(QUIET_SUBDIR0)../ $(QUIET_SUBDIR1) GIT-VERSION-FILE
|
2007-03-25 15:56:49 +04:00
|
|
|
|
2021-10-15 15:39:13 +03:00
|
|
|
ifneq ($(filter-out lint-docs clean,$(MAKECMDGOALS)),)
|
2007-03-25 15:56:49 +04:00
|
|
|
-include ../GIT-VERSION-FILE
|
Documentation/Makefile: conditionally include ../GIT-VERSION-FILE
The 'clean' target is still noticeably slow on cygwin, despite the
substantial improvement made by the previous patch. For example, the
second invocation of 'make clean' below:
$ make clean >/dev/null 2>&1
$ make clean
...
make[1]: Entering directory '/home/ramsay/git/Documentation'
make[2]: Entering directory '/home/ramsay/git'
make[2]: 'GIT-VERSION-FILE' is up to date.
make[2]: Leaving directory '/home/ramsay/git'
...
$
has been timed at 12.364s on my laptop (an old core i5-4200M @ 2.50GHz,
8GB RAM, 1TB HDD).
Notice that the 'clean' target is making a nested call to the parent
Makefile to ensure that the GIT-VERSION-FILE is up-to-date (prior to
the previous patch, there would have been _two_ such invocations).
This is to ensure that the $(GIT_VERSION) make variable is set, once
that file had been included. However, the 'clean' target does not use
the $(GIT_VERSION) variable, directly or indirectly, so it does not
have any affect on what the target removes. Therefore, the time spent
on ensuring an up to date GIT-VERSION-FILE is wasted effort.
In order to eliminate such wasted effort, use the value of the internal
$(MAKECMDGOALS) variable to only '-include ../GIT-VERSION-FILE' when the
target is not 'clean'. (This drops the time down to 10.361s, on my laptop,
giving an improvement of 16.20%).
Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-12-09 01:33:05 +03:00
|
|
|
endif
|
2007-03-25 15:56:49 +04:00
|
|
|
|
2005-11-07 08:30:56 +03:00
|
|
|
#
|
|
|
|
# Determine "include::" file references in asciidoc files.
|
|
|
|
#
|
2013-01-28 04:52:26 +04:00
|
|
|
docdep_prereqs = \
|
|
|
|
mergetools-list.made $(mergetools_txt) \
|
|
|
|
cmd-list.made $(cmds_txt)
|
|
|
|
|
2021-04-09 18:02:45 +03:00
|
|
|
doc.dep : $(docdep_prereqs) $(DOC_DEP_TXT) build-docdep.perl
|
2009-03-27 09:49:38 +03:00
|
|
|
$(QUIET_GEN)$(RM) $@+ $@ && \
|
|
|
|
$(PERL_PATH) ./build-docdep.perl >$@+ $(QUIET_STDERR) && \
|
2005-11-08 05:21:51 +03:00
|
|
|
mv $@+ $@
|
2005-11-07 08:30:56 +03:00
|
|
|
|
Documentation/Makefile: conditionally include doc.dep
The 'clean' target is noticeably slow on cygwin, even for a 'do-nothing'
invocation of 'make clean'. For example, the second 'make clean' below:
$ make clean >/dev/null 2>&1
$ make clean
GIT_VERSION = 2.29.0
...
make[1]: Entering directory '/home/ramsay/git/Documentation'
GEN mergetools-list.made
GEN cmd-list.made
GEN doc.dep
...
$
has been timed at 23.339s, using git v2.29.0, on my laptop (an old core
i5-4200M @ 2.50GHz, 8GB RAM, 1TB HDD).
Notice that, since the 'doc.dep' file does not exist, make takes the
time (about 8s) to generate several files in order to create the doc.dep
include file. (If an 'include' file is missing, but a target for the
said file is present in the Makefile, make will execute that target
and, if that file now exists, throw away all its internal data and
re-read and re-parse the Makefile). Having spent the time to include
the 'doc.dep' file, the 'clean' target immediately deletes those files.
The document dependencies specified in the 'doc.dep' include file,
expressed as make targets and prerequisites, do not affect what the
'clean' target removes. Therefore, the time spent in generating the
dependencies is completely wasted effort.
In order to eliminate such wasted effort, use the value of the internal
$(MAKECMDGOALS) variable to only '-include doc.dep' when the target is
not 'clean'. (This drops the time down to 12.364s, on my laptop, giving
an improvement of 47.02%).
Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-12-09 01:31:44 +03:00
|
|
|
ifneq ($(MAKECMDGOALS),clean)
|
2005-11-08 05:21:51 +03:00
|
|
|
-include doc.dep
|
Documentation/Makefile: conditionally include doc.dep
The 'clean' target is noticeably slow on cygwin, even for a 'do-nothing'
invocation of 'make clean'. For example, the second 'make clean' below:
$ make clean >/dev/null 2>&1
$ make clean
GIT_VERSION = 2.29.0
...
make[1]: Entering directory '/home/ramsay/git/Documentation'
GEN mergetools-list.made
GEN cmd-list.made
GEN doc.dep
...
$
has been timed at 23.339s, using git v2.29.0, on my laptop (an old core
i5-4200M @ 2.50GHz, 8GB RAM, 1TB HDD).
Notice that, since the 'doc.dep' file does not exist, make takes the
time (about 8s) to generate several files in order to create the doc.dep
include file. (If an 'include' file is missing, but a target for the
said file is present in the Makefile, make will execute that target
and, if that file now exists, throw away all its internal data and
re-read and re-parse the Makefile). Having spent the time to include
the 'doc.dep' file, the 'clean' target immediately deletes those files.
The document dependencies specified in the 'doc.dep' include file,
expressed as make targets and prerequisites, do not affect what the
'clean' target removes. Therefore, the time spent in generating the
dependencies is completely wasted effort.
In order to eliminate such wasted effort, use the value of the internal
$(MAKECMDGOALS) variable to only '-include doc.dep' when the target is
not 'clean'. (This drops the time down to 12.364s, on my laptop, giving
an improvement of 47.02%).
Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-12-09 01:31:44 +03:00
|
|
|
endif
|
2005-11-04 11:06:20 +03:00
|
|
|
|
2007-01-19 03:02:13 +03:00
|
|
|
cmds_txt = cmds-ancillaryinterrogators.txt \
|
|
|
|
cmds-ancillarymanipulators.txt \
|
|
|
|
cmds-mainporcelain.txt \
|
|
|
|
cmds-plumbinginterrogators.txt \
|
|
|
|
cmds-plumbingmanipulators.txt \
|
2007-01-19 09:32:38 +03:00
|
|
|
cmds-synchingrepositories.txt \
|
|
|
|
cmds-synchelpers.txt \
|
2020-08-05 04:19:07 +03:00
|
|
|
cmds-guide.txt \
|
2007-01-19 09:32:38 +03:00
|
|
|
cmds-purehelpers.txt \
|
|
|
|
cmds-foreignscminterface.txt
|
2007-01-19 03:02:13 +03:00
|
|
|
|
2007-04-06 09:17:20 +04:00
|
|
|
$(cmds_txt): cmd-list.made
|
|
|
|
|
2007-12-02 10:39:19 +03:00
|
|
|
cmd-list.made: cmd-list.perl ../command-list.txt $(MAN1_TXT)
|
2009-03-27 09:49:38 +03:00
|
|
|
$(QUIET_GEN)$(RM) $@ && \
|
2020-08-05 04:19:06 +03:00
|
|
|
$(PERL_PATH) ./cmd-list.perl ../command-list.txt $(cmds_txt) $(QUIET_STDERR) && \
|
2007-04-06 09:17:20 +04:00
|
|
|
date >$@
|
2005-05-11 01:32:39 +04:00
|
|
|
|
2013-01-28 04:52:26 +04:00
|
|
|
mergetools_txt = mergetools-diff.txt mergetools-merge.txt
|
|
|
|
|
|
|
|
$(mergetools_txt): mergetools-list.made
|
|
|
|
|
|
|
|
mergetools-list.made: ../git-mergetool--lib.sh $(wildcard ../mergetools/*)
|
|
|
|
$(QUIET_GEN)$(RM) $@ && \
|
|
|
|
$(SHELL_PATH) -c 'MERGE_TOOLS_DIR=../mergetools && \
|
|
|
|
. ../git-mergetool--lib.sh && \
|
|
|
|
show_tool_names can_diff "* " || :' >mergetools-diff.txt && \
|
|
|
|
$(SHELL_PATH) -c 'MERGE_TOOLS_DIR=../mergetools && \
|
|
|
|
. ../git-mergetool--lib.sh && \
|
|
|
|
show_tool_names can_merge "* " || :' >mergetools-merge.txt && \
|
|
|
|
date >$@
|
|
|
|
|
2019-03-17 21:36:00 +03:00
|
|
|
TRACK_ASCIIDOCFLAGS = $(subst ','\'',$(ASCIIDOC_COMMON):$(ASCIIDOC_HTML):$(ASCIIDOC_DOCBOOK))
|
|
|
|
|
|
|
|
GIT-ASCIIDOCFLAGS: FORCE
|
|
|
|
@FLAGS='$(TRACK_ASCIIDOCFLAGS)'; \
|
|
|
|
if test x"$$FLAGS" != x"`cat GIT-ASCIIDOCFLAGS 2>/dev/null`" ; then \
|
|
|
|
echo >&2 " * new asciidoc flags"; \
|
|
|
|
echo "$$FLAGS" >GIT-ASCIIDOCFLAGS; \
|
|
|
|
fi
|
|
|
|
|
2005-05-11 01:32:39 +04:00
|
|
|
clean:
|
2008-01-06 06:09:09 +03:00
|
|
|
$(RM) *.xml *.xml+ *.html *.html+ *.1 *.5 *.7
|
2009-03-27 09:49:39 +03:00
|
|
|
$(RM) *.texi *.texi+ *.texi++ git.info gitman.info
|
2011-08-08 12:33:05 +04:00
|
|
|
$(RM) *.pdf
|
2007-11-25 10:48:04 +03:00
|
|
|
$(RM) howto-index.txt howto/*.html doc.dep
|
2012-10-23 21:58:04 +04:00
|
|
|
$(RM) technical/*.html technical/api-index.txt
|
2017-11-13 01:07:18 +03:00
|
|
|
$(RM) SubmittingPatches.txt
|
2013-01-28 04:52:26 +04:00
|
|
|
$(RM) $(cmds_txt) $(mergetools_txt) *.made
|
2009-12-04 20:53:21 +03:00
|
|
|
$(RM) manpage-base-url.xsl
|
2019-03-17 21:36:00 +03:00
|
|
|
$(RM) GIT-ASCIIDOCFLAGS
|
2005-05-11 01:32:39 +04:00
|
|
|
|
2019-04-16 13:28:09 +03:00
|
|
|
$(MAN_HTML): %.html : %.txt asciidoc.conf asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS
|
2009-03-27 09:49:38 +03:00
|
|
|
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
2014-10-27 03:13:42 +03:00
|
|
|
$(TXT_TO_HTML) -d manpage -o $@+ $< && \
|
2007-03-25 15:56:49 +04:00
|
|
|
mv $@+ $@
|
2005-05-11 01:32:39 +04:00
|
|
|
|
2019-04-16 13:28:09 +03:00
|
|
|
$(OBSOLETE_HTML): %.html : %.txto asciidoc.conf asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS
|
2013-02-01 01:59:50 +04:00
|
|
|
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
2014-10-27 03:13:42 +03:00
|
|
|
$(TXT_TO_HTML) -o $@+ $< && \
|
2013-02-01 01:59:50 +04:00
|
|
|
mv $@+ $@
|
|
|
|
|
2009-12-04 20:53:21 +03:00
|
|
|
manpage-base-url.xsl: manpage-base-url.xsl.in
|
2018-08-29 18:47:20 +03:00
|
|
|
$(QUIET_GEN)sed "s|@@MAN_BASE_URL@@|$(MAN_BASE_URL)|" $< > $@
|
2009-12-04 20:53:21 +03:00
|
|
|
|
2019-02-27 21:17:52 +03:00
|
|
|
%.1 %.5 %.7 : %.xml manpage-base-url.xsl $(wildcard manpage*.xsl)
|
2009-03-27 09:49:38 +03:00
|
|
|
$(QUIET_XMLTO)$(RM) $@ && \
|
2012-09-19 21:06:37 +04:00
|
|
|
$(XMLTO) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $<
|
2005-05-11 01:32:39 +04:00
|
|
|
|
2019-04-16 13:28:09 +03:00
|
|
|
%.xml : %.txt asciidoc.conf asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS
|
2009-03-27 09:49:38 +03:00
|
|
|
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
2014-10-27 03:13:42 +03:00
|
|
|
$(TXT_TO_XML) -d manpage -o $@+ $< && \
|
2007-03-25 15:56:49 +04:00
|
|
|
mv $@+ $@
|
2005-08-15 04:24:36 +04:00
|
|
|
|
2019-04-16 13:28:09 +03:00
|
|
|
user-manual.xml: user-manual.txt user-manual.conf asciidoctor-extensions.rb GIT-ASCIIDOCFLAGS
|
2010-04-22 05:18:21 +04:00
|
|
|
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
2017-01-02 19:03:57 +03:00
|
|
|
$(TXT_TO_XML) -d book -o $@+ $< && \
|
2010-04-22 05:18:21 +04:00
|
|
|
mv $@+ $@
|
2007-01-08 03:23:49 +03:00
|
|
|
|
2007-11-25 10:48:04 +03:00
|
|
|
technical/api-index.txt: technical/api-index-skel.txt \
|
|
|
|
technical/api-index.sh $(patsubst %,%.txt,$(API_DOCS))
|
2009-03-22 16:20:44 +03:00
|
|
|
$(QUIET_GEN)cd technical && '$(SHELL_PATH_SQ)' ./api-index.sh
|
2007-11-25 10:48:04 +03:00
|
|
|
|
2012-06-08 01:03:23 +04:00
|
|
|
technical/%.html: ASCIIDOC_EXTRA += -a git-relative-html-prefix=../
|
2019-03-17 21:36:00 +03:00
|
|
|
$(patsubst %,%.html,$(API_DOCS) technical/api-index $(TECH_DOCS)): %.html : %.txt \
|
|
|
|
asciidoc.conf GIT-ASCIIDOCFLAGS
|
2014-10-27 03:13:42 +03:00
|
|
|
$(QUIET_ASCIIDOC)$(TXT_TO_HTML) $*.txt
|
2007-11-25 10:48:04 +03:00
|
|
|
|
2017-11-13 01:07:18 +03:00
|
|
|
SubmittingPatches.txt: SubmittingPatches
|
|
|
|
$(QUIET_GEN) cp $< $@
|
|
|
|
|
2007-07-24 11:46:35 +04:00
|
|
|
XSLT = docbook.xsl
|
2020-12-01 12:50:37 +03:00
|
|
|
XSLTOPTS =
|
|
|
|
XSLTOPTS += --xinclude
|
|
|
|
XSLTOPTS += --stringparam html.stylesheet docbook-xsl.css
|
|
|
|
XSLTOPTS += --param generate.consistent.ids 1
|
2007-03-03 21:33:48 +03:00
|
|
|
|
2010-08-21 10:21:22 +04:00
|
|
|
user-manual.html: user-manual.xml $(XSLT)
|
2010-04-22 05:18:21 +04:00
|
|
|
$(QUIET_XSLTPROC)$(RM) $@+ $@ && \
|
|
|
|
xsltproc $(XSLTOPTS) -o $@+ $(XSLT) $< && \
|
|
|
|
mv $@+ $@
|
2007-01-08 03:23:49 +03:00
|
|
|
|
2007-12-13 00:31:02 +03:00
|
|
|
git.info: user-manual.texi
|
2009-03-27 09:49:38 +03:00
|
|
|
$(QUIET_MAKEINFO)$(MAKEINFO) --no-split -o $@ user-manual.texi
|
2007-12-10 12:15:57 +03:00
|
|
|
|
2007-12-13 00:31:02 +03:00
|
|
|
user-manual.texi: user-manual.xml
|
2009-03-27 09:49:38 +03:00
|
|
|
$(QUIET_DB2TEXI)$(RM) $@+ $@ && \
|
2009-03-27 09:49:39 +03:00
|
|
|
$(DOCBOOK2X_TEXI) user-manual.xml --encoding=UTF-8 --to-stdout >$@++ && \
|
|
|
|
$(PERL_PATH) fix-texi.perl <$@++ >$@+ && \
|
|
|
|
rm $@++ && \
|
2007-12-10 12:15:57 +03:00
|
|
|
mv $@+ $@
|
|
|
|
|
2008-12-11 01:44:50 +03:00
|
|
|
user-manual.pdf: user-manual.xml
|
2009-03-27 09:49:38 +03:00
|
|
|
$(QUIET_DBLATEX)$(RM) $@+ $@ && \
|
2017-01-22 05:41:55 +03:00
|
|
|
$(DBLATEX) -o $@+ $(DBLATEX_COMMON) $< && \
|
2008-12-11 01:44:50 +03:00
|
|
|
mv $@+ $@
|
|
|
|
|
Documentation: add XSLT to fix DocBook for Texinfo
There are two ways to create a section in a reference document (i.e.,
manpage) in DocBook 4: refsection elements and refsect, refsect2, and
refsect3 elements. Either form is acceptable as of DocBook 4.2, but
they cannot be mixed. Prior to DocBook 4.2, only the numbered forms
were acceptable.
docbook2texi only accepts the numbered forms, and this has not generally
been a problem, since AsciiDoc produces the numbered forms.
Asciidoctor, on the other hand, uses a shared backend for DocBook 4 and
5, and uses the unnumbered refsection elements instead.
If we don't convert the unnumbered form to the numbered form,
docbook2texi omits section headings, which is undesirable. Add an XSLT
stylesheet to transform the unnumbered forms to the numbered forms
automatically, and preprocess the DocBook XML as part of the
transformation to Texinfo format.
Note that this transformation is only necessary for Texinfo, since
docbook2texi provides its own stylesheets. The DocBook stylesheets,
which we use for other formats, provide the full range of DocBook 4 and
5 compatibility, and don't have this issue.
Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2017-01-22 05:41:54 +03:00
|
|
|
gitman.texi: $(MAN_XML) cat-texi.perl texi.xsl
|
2009-03-27 09:49:38 +03:00
|
|
|
$(QUIET_DB2TEXI)$(RM) $@+ $@ && \
|
Documentation: add XSLT to fix DocBook for Texinfo
There are two ways to create a section in a reference document (i.e.,
manpage) in DocBook 4: refsection elements and refsect, refsect2, and
refsect3 elements. Either form is acceptable as of DocBook 4.2, but
they cannot be mixed. Prior to DocBook 4.2, only the numbered forms
were acceptable.
docbook2texi only accepts the numbered forms, and this has not generally
been a problem, since AsciiDoc produces the numbered forms.
Asciidoctor, on the other hand, uses a shared backend for DocBook 4 and
5, and uses the unnumbered refsection elements instead.
If we don't convert the unnumbered form to the numbered form,
docbook2texi omits section headings, which is undesirable. Add an XSLT
stylesheet to transform the unnumbered forms to the numbered forms
automatically, and preprocess the DocBook XML as part of the
transformation to Texinfo format.
Note that this transformation is only necessary for Texinfo, since
docbook2texi provides its own stylesheets. The DocBook stylesheets,
which we use for other formats, provide the full range of DocBook 4 and
5 compatibility, and don't have this issue.
Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2017-01-22 05:41:54 +03:00
|
|
|
($(foreach xml,$(sort $(MAN_XML)),xsltproc -o $(xml)+ texi.xsl $(xml) && \
|
|
|
|
$(DOCBOOK2X_TEXI) --encoding=UTF-8 --to-stdout $(xml)+ && \
|
|
|
|
rm $(xml)+ &&) true) > $@++ && \
|
2009-03-27 09:49:39 +03:00
|
|
|
$(PERL_PATH) cat-texi.perl $@ <$@++ >$@+ && \
|
|
|
|
rm $@++ && \
|
2007-12-10 12:15:57 +03:00
|
|
|
mv $@+ $@
|
|
|
|
|
|
|
|
gitman.info: gitman.texi
|
2009-03-27 09:49:38 +03:00
|
|
|
$(QUIET_MAKEINFO)$(MAKEINFO) --no-split --no-validate $*.texi
|
2007-12-10 12:15:57 +03:00
|
|
|
|
|
|
|
$(patsubst %.txt,%.texi,$(MAN_TXT)): %.texi : %.xml
|
2009-03-27 09:49:38 +03:00
|
|
|
$(QUIET_DB2TEXI)$(RM) $@+ $@ && \
|
|
|
|
$(DOCBOOK2X_TEXI) --to-stdout $*.xml >$@+ && \
|
2007-12-10 12:15:57 +03:00
|
|
|
mv $@+ $@
|
2007-08-06 14:22:57 +04:00
|
|
|
|
2021-04-09 18:02:44 +03:00
|
|
|
howto-index.txt: howto-index.sh $(HOWTO_TXT)
|
2009-03-27 09:49:38 +03:00
|
|
|
$(QUIET_GEN)$(RM) $@+ $@ && \
|
2021-04-09 18:02:44 +03:00
|
|
|
'$(SHELL_PATH_SQ)' ./howto-index.sh $(sort $(HOWTO_TXT)) >$@+ && \
|
2005-08-25 11:28:18 +04:00
|
|
|
mv $@+ $@
|
|
|
|
|
2005-08-31 00:51:01 +04:00
|
|
|
$(patsubst %,%.html,$(ARTICLES)) : %.html : %.txt
|
2014-10-27 03:13:42 +03:00
|
|
|
$(QUIET_ASCIIDOC)$(TXT_TO_HTML) $*.txt
|
2005-08-25 11:28:18 +04:00
|
|
|
|
|
|
|
WEBDOC_DEST = /pub/software/scm/git/docs
|
|
|
|
|
2012-06-08 01:03:23 +04:00
|
|
|
howto/%.html: ASCIIDOC_EXTRA += -a git-relative-html-prefix=../
|
2021-04-09 18:02:44 +03:00
|
|
|
$(patsubst %.txt,%.html,$(HOWTO_TXT)): %.html : %.txt GIT-ASCIIDOCFLAGS
|
2009-03-27 09:49:38 +03:00
|
|
|
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
2014-10-12 03:37:35 +04:00
|
|
|
sed -e '1,/^$$/d' $< | \
|
2014-10-27 03:13:42 +03:00
|
|
|
$(TXT_TO_HTML) - >$@+ && \
|
2005-08-30 09:38:12 +04:00
|
|
|
mv $@+ $@
|
|
|
|
|
2005-08-25 11:28:18 +04:00
|
|
|
install-webdoc : html
|
2009-03-22 16:20:44 +03:00
|
|
|
'$(SHELL_PATH_SQ)' ./install-webdoc.sh $(WEBDOC_DEST)
|
2006-12-23 19:26:09 +03:00
|
|
|
|
2013-01-21 23:17:53 +04:00
|
|
|
# You must have a clone of 'git-htmldocs' and 'git-manpages' repositories
|
|
|
|
# next to the 'git' repository itself for the following to work.
|
2011-11-08 22:17:40 +04:00
|
|
|
|
2008-11-02 20:53:03 +03:00
|
|
|
quick-install: quick-install-man
|
|
|
|
|
2011-11-08 22:17:40 +04:00
|
|
|
require-manrepo::
|
|
|
|
@if test ! -d $(MAN_REPO); \
|
|
|
|
then echo "git-manpages repository must exist at $(MAN_REPO)"; exit 1; fi
|
|
|
|
|
|
|
|
quick-install-man: require-manrepo
|
2017-12-10 01:07:57 +03:00
|
|
|
'$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(MAN_REPO) $(DESTDIR)$(mandir) $(GIT_MAN_REF)
|
2011-11-08 22:17:40 +04:00
|
|
|
|
|
|
|
require-htmlrepo::
|
|
|
|
@if test ! -d $(HTML_REPO); \
|
|
|
|
then echo "git-htmldocs repository must exist at $(HTML_REPO)"; exit 1; fi
|
2007-03-25 15:56:49 +04:00
|
|
|
|
2011-11-08 22:17:40 +04:00
|
|
|
quick-install-html: require-htmlrepo
|
2017-12-10 01:07:57 +03:00
|
|
|
'$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(HTML_REPO) $(DESTDIR)$(htmldir) $(GIT_MAN_REF)
|
2008-09-10 00:44:17 +04:00
|
|
|
|
2012-08-09 00:57:52 +04:00
|
|
|
print-man1:
|
|
|
|
@for i in $(MAN1_TXT); do echo $$i; done
|
|
|
|
|
2016-05-05 00:34:23 +03:00
|
|
|
lint-docs::
|
doc lint: fix bugs in, simplify and improve lint script
The lint-gitlink.perl script added in ab81411ced (ci: validate
"linkgit:" in documentation, 2016-05-04) was more complex than it
needed to be. It:
- Was using File::Find to recursively find *.txt files in
Documentation/, let's instead use the Makefile as a source of truth
for *.txt files, and pass it down to the script.
- We now don't lint linkgit:* in RelNotes/* or technical/*, which we
shouldn't have been doing in the first place anyway.
- When the doc-diff script was added in beb188e22a (add a script to
diff rendered documentation, 2018-08-06) we started sometimes having
a "git worktree" under Documentation/.
This tree contains a full checkout of git.git, as a result the
"lint" script would recurse into that, and lint any *.txt file
found in that entire repository.
In practice the only in-tree "linkgit" outside of the
Documentation/ tree is contrib/contacts/git-contacts.txt and
contrib/subtree/git-subtree.txt, so this wouldn't emit any errors
Now we instead simply trust the Makefile to give us *.txt files.
Since the Makefile also knows what sections each page should be in we
don't have to open the files ourselves and try to parse that out. As a
bonus this will also catch bugs with the section line in the files
themselves being incorrect.
The structure of the new script is mostly based on
t/check-non-portable-shell.pl. As an added bonus it will also use
pos() to print where the problems it finds are, e.g. given an issue
like:
diff --git a/Documentation/git-cherry.txt b/Documentation/git-cherry.txt
[...]
and line numbers. git-cherry therefore detects when commits have been
-"copied" by means of linkgit:git-cherry-pick[1], linkgit:git-am[1] or
-linkgit:git-rebase[1].
+"copied" by means of linkgit:git-cherry-pick[2], linkgit:git-am[3] or
+linkgit:git-rebase[4].
We'll now emit:
git-cherry.txt:20: error: git-cherry-pick[2]: wrong section (should be 1), shown with 'HERE' below:
git-cherry.txt:20: '"copied" by means of linkgit:git-cherry-pick[2]' <-- HERE
git-cherry.txt:20: error: git-am[3]: wrong section (should be 1), shown with 'HERE' below:
git-cherry.txt:20: '"copied" by means of linkgit:git-cherry-pick[2], linkgit:git-am[3]' <-- HERE
git-cherry.txt:21: error: git-rebase[4]: wrong section (should be 1), shown with 'HERE' below:
git-cherry.txt:21: 'linkgit:git-rebase[4]' <-- HERE
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-04-09 18:02:47 +03:00
|
|
|
$(QUIET_LINT)$(PERL_PATH) lint-gitlink.perl \
|
|
|
|
$(HOWTO_TXT) $(DOC_DEP_TXT) \
|
|
|
|
--section=1 $(MAN1_TXT) \
|
|
|
|
--section=5 $(MAN5_TXT) \
|
2021-10-15 15:39:11 +03:00
|
|
|
--section=7 $(MAN7_TXT) && \
|
|
|
|
$(PERL_PATH) lint-man-end-blurb.perl $(MAN_TXT) && \
|
|
|
|
$(PERL_PATH) lint-man-section-order.perl $(MAN_TXT)
|
2016-05-05 00:34:23 +03:00
|
|
|
|
2019-01-07 22:21:12 +03:00
|
|
|
ifeq ($(wildcard po/Makefile),po/Makefile)
|
|
|
|
doc-l10n install-l10n::
|
|
|
|
$(MAKE) -C po $@
|
|
|
|
endif
|
|
|
|
|
2010-01-06 11:06:58 +03:00
|
|
|
.PHONY: FORCE
|