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