documentation: Use a per-version directory

This way older versions of the documentation are properly archived
in SVN as their own subdirectories, making it easier to examine any
prior build's documentation when necessary.

Change-Id: I15afe13adbe185c8b6ba6fb2002dd67ff04d44e1
Signed-off-by: Shawn O. Pearce <sop@google.com>
This commit is contained in:
Shawn O. Pearce 2010-02-22 08:16:07 -08:00
parent 7401cb068c
commit edd8ed3e14
3 changed files with 100 additions and 54 deletions

19
Documentation/GEN-DOC-VERSION Executable file
View File

@ -0,0 +1,19 @@
#!/bin/sh
V=$(git describe HEAD)
case "$V" in
'')
echo >&2 "fatal: no annotated tags, cannot determine version"
exit 1
;;
*-g*)
echo >&2 "fatal: snapshot $V, cannot determine version"
exit 1
;;
v*)
echo ${V#v}
;;
esac

View File

@ -11,29 +11,55 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
DOC_HTML = $(patsubst %.txt,%.html,$(wildcard *.txt))
ASCIIDOC = asciidoc
ASCIIDOC_EXTRA =
SVN = svn
PUB_ROOT = https://gerrit.googlecode.com/svn/documentation
LOCAL_ROOT = .published
SCRIPTSDIR := $(shell pwd)/javascript
DOC_VERS := $(shell git describe HEAD)
DOC_VMM := $(shell sh -c "echo $(DOC_VERS) | perl -pe 's,^v(\d+\.\d+)[\.-].*\$$,\$$1,'")
PUB_DIR = $(PUB_ROOT)/$(DOC_VMM)
ASCIIDOC ?= asciidoc
ASCIIDOC_EXTRA ?=
SVN ?= svn
PUB_ROOT ?= https://gerrit.googlecode.com/svn/documentation
all: html
clean:
rm -f *.html
rm -rf $(LOCAL_ROOT)
ifeq ($(origin VERSION), undefined)
VERSION := $(shell ./GEN-DOC-VERSION 2>/dev/null)
endif
DOC_HTML := $(patsubst %.txt,%.html,$(wildcard *.txt))
LOCAL_ROOT := .published
SCRIPTSDIR := $(shell pwd)/javascript
COMMIT := $(shell git describe HEAD | sed s/^v//)
PUB_DIR := $(PUB_ROOT)/$(VERSION)
ifeq ($(VERSION),)
REVISION = $(COMMIT)
else
ifeq ($(VERSION),$(COMMIT))
REVISION := $(VERSION)
else
REVISION := $(VERSION) (from v$(COMMIT))
endif
endif
html: $(DOC_HTML)
update: html
-rm -rf $(LOCAL_ROOT)
$(SVN) checkout $(PUB_DIR) $(LOCAL_ROOT)
rm -f $(LOCAL_ROOT)/*.html
cp *.html $(LOCAL_ROOT)
cd $(LOCAL_ROOT) && \
ifeq ($(VERSION),)
./GEN-DOC-VERSION
endif
@-rm -rf $(LOCAL_ROOT)
@echo "Checking out current $(VERSION)"
@if ! $(SVN) checkout $(PUB_DIR) $(LOCAL_ROOT) 2>/dev/null ; then \
p=$$(git describe HEAD^ | perl -lne 'print $$1 if /^v(\d+\.\d+\.\d+)/') && \
echo "Copying $$p to $(VERSION) ..." && \
$(SVN) cp -m "Create $(VERSION) documentation" $(PUB_ROOT)/$$p $(PUB_DIR) && \
$(SVN) checkout $(PUB_DIR) $(LOCAL_ROOT) ; \
fi
@rm -f $(LOCAL_ROOT)/*.html
@cp *.html $(LOCAL_ROOT)
@cd $(LOCAL_ROOT) && \
r=`$(SVN) status | perl -ne 'print if s/^! *//' ` && \
if [ -n "$$r" ]; then $(SVN) rm $$r; fi && \
a=`$(SVN) status | perl -ne 'print if s/^\? *//' ` && \
@ -41,21 +67,17 @@ update: html
$(SVN) add $$a && \
$(SVN) propset svn:mime-type text/html $$a ; \
fi && \
$(SVN) commit -m "Updated documentation $(DOC_VMM) to $(DOC_VERS)"
-rm -rf $(LOCAL_ROOT)
new-docs:
$(SVN) mkdir -m "Create documentation $(DOC_VMM)" $(PUB_DIR)
clean:
rm -f *.html
rm -rf $(LOCAL_ROOT)
echo "Committing $(VERSION) at v$(COMMIT)" && \
$(SVN) commit -m "Updated $(VERSION) documentation to v$(COMMIT)"
@-rm -rf $(LOCAL_ROOT)
$(DOC_HTML): %.html : %.txt $(SCRIPTSDIR)/toc.js
rm -f $@+ $@
$(ASCIIDOC) --unsafe \
-a toc -a 'revision=$(DOC_VERS)' \
@echo "FORMAT $@"
@rm -f $@+ $@
@$(ASCIIDOC) --unsafe \
-a toc \
-a 'revision=$(REVISION)' \
-a 'scriptsdir=$(SCRIPTSDIR)' \
-b xhtml11 -f asciidoc.conf \
$(ASCIIDOC_EXTRA) -o $@+ $<
mv $@+ $@
@mv $@+ $@

View File

@ -11,27 +11,29 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
DOC_HTML = $(patsubst %.txt,%.html,$(wildcard ReleaseNotes*.txt))
ASCIIDOC = asciidoc
ASCIIDOC_EXTRA =
SVN = svn
PUB_ROOT = https://gerrit.googlecode.com/svn/ReleaseNotes
LOCAL_ROOT = .published
ASCIIDOC ?= asciidoc
ASCIIDOC_EXTRA ?=
SVN ?= svn
PUB_ROOT ?= https://gerrit.googlecode.com/svn/ReleaseNotes
DOC_HTML := $(patsubst %.txt,%.html,$(wildcard ReleaseNotes*.txt))
COMMIT := $(shell git describe HEAD | sed s/^v//)
SCRIPTSDIR := $(shell pwd)/../Documentation/javascript
PUB_DIR = $(PUB_ROOT)
LOCAL_ROOT := .published
PUB_DIR := $(PUB_ROOT)
all: html
html: index.html $(DOC_HTML)
update: html
-rm -rf $(LOCAL_ROOT)
$(SVN) checkout $(PUB_DIR) $(LOCAL_ROOT)
rm -f $(LOCAL_ROOT)/*.html
cp *.html $(LOCAL_ROOT)
cd $(LOCAL_ROOT) && \
@-rm -rf $(LOCAL_ROOT)
@echo "Checking out current release notes"
@$(SVN) checkout $(PUB_DIR) $(LOCAL_ROOT)
@rm -f $(LOCAL_ROOT)/*.html
@cp *.html $(LOCAL_ROOT)
@cd $(LOCAL_ROOT) && \
r=`$(SVN) status | perl -ne 'print if s/^! *//' ` && \
if [ -n "$$r" ]; then $(SVN) rm $$r; fi && \
a=`$(SVN) status | perl -ne 'print if s/^\? *//' ` && \
@ -39,32 +41,35 @@ update: html
$(SVN) add $$a && \
$(SVN) propset svn:mime-type text/html $$a ; \
fi && \
$(SVN) commit -m "Updated release notes"
-rm -rf $(LOCAL_ROOT)
echo "Committing release notes at v$(COMMIT)" && \
$(SVN) commit -m "Updated release notes to v$(COMMIT)"
@-rm -rf $(LOCAL_ROOT)
clean:
rm -f *.html
rm -rf $(LOCAL_ROOT)
index.html: index.txt $(SCRIPTSDIR)/toc.js
rm -f $@+ $@
$(ASCIIDOC) --unsafe \
@echo FORMAT $@
@rm -f $@+ $@
@$(ASCIIDOC) --unsafe \
-a toc \
-a 'scriptsdir=$(SCRIPTSDIR)' \
-b xhtml11 -f asciidoc.conf \
$(ASCIIDOC_EXTRA) -o $@+ $<
mv $@+ $@
@mv $@+ $@
$(DOC_HTML): %.html : %.txt $(SCRIPTSDIR)/toc.js
rm -f $@+ $@
v=$$(echo $< | sed 's/^ReleaseNotes-//;s/.txt$$//;') && \
c=$$(git rev-list -1 HEAD -- $<) && \
n=$$(git describe $$c) && \
if [ "X$$n" != "Xv$$v" ]; then v="$$v (from $$n)"; fi && \
$(ASCIIDOC) --unsafe \
@echo FORMAT $@
@rm -f $@+ $@
@v=$$(echo $< | sed 's/^ReleaseNotes-//;s/.txt$$//;') && \
c=$$(git rev-list -1 HEAD -- $<) && \
n=$$(git describe $$c) && \
if [ "X$$n" != "Xv$$v" ]; then v="$$v (from $$n)"; fi && \
$(ASCIIDOC) --unsafe \
-a toc \
-a "revision=$$v" \
-a 'scriptsdir=$(SCRIPTSDIR)' \
-b xhtml11 -f asciidoc.conf \
$(ASCIIDOC_EXTRA) -o $@+ $<
mv $@+ $@
@mv $@+ $@