Creating Major Release Notes
From PostgreSQL wiki
Jump to navigationJump to search
- find branch date with query
pggit show --summary $(pggit merge-base REL_19_STABLE master)
- 01raw
read src/tools/git_changelog
run src/tools/git_changelog
src/tools/git_changelog --master-only --brief --oldest-first --since='start-date'
- 02trim
add "[DOC]" text to indicate commits that changed documentation using:
awk -F'[\\[\\]]' '
BEGIN {doc = "";}
{
if ($0 ~ /^20[[:digit:]]{2}-[[:digit:]]{2}-[[:digit:]]{2} \[/ &&
system("aspg pggit show --name-only --oneline " $2 " | grep -q \"^diff.*/doc/\"") == 0)
doc = "[DOC]";
# Put label on empty line so the first commit text is always in
# the same place.
if (doc != "" && $0 == "")
{
print doc;
doc = "";
}
else
print $0;
}' "$@"
add "AS OF" date
load relnote macro
ESC-X, source pg.mac
use editor macro F7 to delete each commit
F3/F4 for back/forward commits | F7 delete commit | F8 delete commit detail below cursor
delete commit with cursor anywhere in the commit text
check 01raw for missing items
check for missed incompatibilities
- 03comments
replace "[DOC]" with a blank line
sed 's/^\[DOC\] *$//'
add comments around commit tags
remove leading spaces on commit text
- 04reword
reword items
- 05tags
update for current git
spellcheck
remove <>&
grep '^[^<-][^:]*[<>&]'
remove lines with only spaces
remove double-blank lines
add </listitem><listitem>
add </para><para>
fix double-paras
- 06groups
copy previous major release notes to 06groups
Release date YYYY-??-??
add "AS OF" date
make groups using ema
remove text between <listitem>
remove acknowledgement <member>
chown
cat 05tags >> 06groups
use gedit text editor
add line numbers in editor
use Colbalt colors so current line is clearly highlighted
display overview map
^G to go to last search, search for "-----"
use triple-click to select whole lines
move items into groups
move items into incompatibilities
- 07order
order inside of groups
most important items first in each section
group similar items together
ideally the last item in a group will relate to the first item in the next group
- 08spell
2nd pass of spellcheck
remove HTML comments, authors
cat 08spell | grep -Ev '^(20[12][0-9]-|Author: )|commit_baseurl;[0-9a-f]*' | sed 's/ (.\+//g' > /tmp/x; ispell -H /tmp/x
add space between double dashes in XML comments
in ema, search for '^202.*--'
check contributor names for consistency
grep '([^(]*)$' 08spell | sed 's/^[^(]*(//' | tr -d ')'| sed 's/,/\n/g' | sed 's/^[( ]\+//g' | sort -u > /tmp/first
names spelled first/last and last/first
awk '{print $1,$2; print $2,$1}' /tmp/first | sort | uniq -c | sort -nr | awk '$1>1' > /tmp/last
install in /pgsgml
run src/tools/add_commit_links.pl
check PDF output for invalid characters
- 09links
run make postgres-US.pdf and look for non-output character warning
Post release note URL to pgblog
DO THIS AFTER COMMUNITY FEEDBACK
because
editing text with markup is hard
finding text with markup is hard
only the first mention gets a link, and reordering would mess that up
add markup, see doc/src/sgml/release.sgml
add links by tag
add only to first mention in adjacent item list
get tag list from release.sgml
use "<xref" for varname, applications
use "<xref" for command where text is only the command name
the rest need "<link linkend"
use "<link linkend" for struct
go over all items for general links
check invalid for "section", "chapter", and "???" text
use pipe to mark commit paras
indentation
<sect4 is indented by four spaces
use pipe to prefix <ulink> & </para>
indent itemizedlist
use ESC-tab to indent paras and word wrap
outdent para tags
word wrap
recheck contributor names for consistency
update TODO list