blob: 719203f482e5e04839df2bf84748c5ff771ee383 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
#!/bin/sh
# "git-doc" is a clone of the git.git repository and has the master
# branch checked out. We update the working tree and prepare
# preformatted documentation pages, and install them in doc-htmlpages
# and doc-manapges subdirectories. When they are updated, they are
# pushed back into their own repositories next to the git.git
# repository.
unset GIT_DIR
: ${TOP=/srv/project/git}
MASTERREPO=$TOP/git.git/
MANREPO=$TOP/git-manpages.git/
HTMLREPO=$TOP/git-htmldocs.git/
target_repo () {
TARGETVAR=$(echo "$1"REPO | tr 'a-z' 'A-Z') &&
eval "echo \$$TARGETVAR"
}
DOCREPO=$(pwd) ;# "git-doc"
exec >:doc.log 2>&1
ID=$(cd "$MASTERREPO" && git rev-parse --verify refs/heads/master) || exit $?
tmp=`pwd`/.doctmp-$$
trap 'rm -f "$tmp".*' 0
(
git pull --ff-only "$MASTERREPO" master &&
git fetch --tags --force "$MASTERREPO"
) || exit $?
test $(git rev-parse --verify refs/heads/master) = "$ID" &&
NID=$(git describe --abbrev=4 "$ID") &&
test -n "$NID" || exit $?
git reset --hard
# Set up subrepositories
for type in man html
do
test -d doc-${type}pages && continue
(
git init doc-${type}pages &&
cd doc-${type}pages || exit
TARGETREPO=$(target_repo $type) &&
git pull "$TARGETREPO" master
) &&
rm -fr doc-$type-inst &&
mkdir -p doc-$type-inst &&
(
cd doc-${type}pages && git archive HEAD
) |
(
cd doc-$type-inst && tar xf -
)
done
# The below used to contain this instead...
# MAN_BASE_URL="http://www.kernel.org/pub/software/scm/git/docs/"
dd='
MAN_BASE_URL="git-htmldocs/"
BLK_SHA1=YesPlease
GNU_ROFF=YesPlease
MAN_BOLD_LITERAL=YesPlease
'
if test -z "$DOC_FROM_SCRATCH"
then
case "$NID" in
?*-g*) ;;
?*) DOC_FROM_SCRATCH=yes ;;
esac
fi
if test -n "$DOC_FROM_SCRATCH"
then
make clean &&
rm -fr doc-html-inst doc-man-inst &&
mkdir doc-html-inst doc-man-inst || exit
fi
DIFF=diff
export DIFF
make \
-C Documentation -j 2 $dd \
WEBDOC_DEST="$DOCREPO/doc-html-inst" install-webdoc || exit
make \
-C Documentation -j 2 $dd \
man1="$DOCREPO/doc-man-inst/man1" \
man5="$DOCREPO/doc-man-inst/man5" \
man7="$DOCREPO/doc-man-inst/man7" \
man1dir="$DOCREPO/doc-man-inst/man1" \
man5dir="$DOCREPO/doc-man-inst/man5" \
man7dir="$DOCREPO/doc-man-inst/man7" install || exit
for type in html man
do
find doc-$type-inst -type f |
while read path
do
it=$(expr "$path" : doc-$type-inst/'\(.*\)') || continue
t="doc-${type}pages/$it"
test -f "$t" && diff -q "$path" "$t" && continue
mkdir -p "$(dirname "$t")" &&
echo ": $t" && rm -f "$t" && ln "$path" "$t" || exit
( cd doc-${type}pages && git add "$it" )
done || exit
find doc-$type-inst -type f |
sed -e 's|^doc-'$type'-inst/||' | sort >"$tmp.1" &&
(cd doc-${type}pages && git ls-files | sort) >"$tmp.2" &&
comm -13 "$tmp.1" "$tmp.2" |
( cd doc-${type}pages && xargs rm -f -- ) || exit
(
cd doc-${type}pages
case "$type" in
html)
TYPE='HTML docs'
rm -f index.html
ln -sf git.html index.html
git add index.html
;;
man)
TYPE='manpages'
;;
esac
if git commit -a -m "Autogenerated $TYPE for $NID"
then
TARGETREPO=$(target_repo $type) &&
git push "$TARGETREPO" master:master
else
echo "* No changes in $type docs"
fi
) || exit
done
echo '
*** ALL DONE ***
'
|