#!/bin/sh
-# $PostgreSQL: pgsql/src/tools/pgcvslog,v 1.33 2007/01/31 22:17:03 momjian Exp $
+# $PostgreSQL: pgsql/src/tools/pgcvslog,v 1.34 2007/10/01 02:59:03 momjian Exp $
# This utility is used to generate a compact list of changes
# for each release, bjm 2000-02-22
-# Usage $0 file
+# Usage: pgcvslog [-h]
+# -h is HTML output
# All branches:
# cvs log -d'>1999-06-14 00:00:00 GMT' . > log
fi |
# mark each line with a datetime and line number, for sorting and merging
+# we are just pre-processing the file at this point
# We don't print anything from the -- or == line and the date:
awk ' BEGIN {html="'"$HTML"'"; lineno = 0;}
{
printf ("%s| %10d|", datetime, lineno++);
if (html != "Y")
- printf ("%s\n", workingfile);
- else printf ("<SMALL><FONT COLOR=\"red\">%s</FONT></SMALL>\n", workingfile);
+ printf ("%s%s\n", workingfile, back_branch);
+ else printf ("<SMALL><FONT COLOR=\"red\">%s%s</FONT></SMALL>\n", workingfile, back_branch);
# output name of committer
# remove semicolon from committers name
}
}
+ # mark back branches
+ $1 == "revision" \
+ {
+ if ($2 ~ /\..*\./ && del == "Y")
+ back_branch=" <back-patch>"
+ else back_branch = ""
+ }
+
/* clear working file */
$0 ~ /^====*$/ {workingfile=""}' |
sort | cut -d'|' -f3 |
# collect duplicate narratives
+# print file names as we get them, then print narrative when a new
+# narrative appears
+# have to save two narratives to compare them
-awk ' BEGIN { slot = 0; oldslot=0; save_working = ""; html="'"$HTML"'"}
+awk ' BEGIN { narr_slot = 0; oldnarr_slot=0; save_working = "";
+ html="'"$HTML"'"}
{
# We have a filename, so we look at the previous
# narrative to see if it is new narrative text.
- if ($0 ~ /^\// || $0 ~ />\//)
+ if ($0 ~ "^/" || $0 ~ ">/")
{
# If there are a different number of narrative
- # lines, they can not possibly be the same.
- if (slot != oldslot)
+ # lines, they cannot possibly be the same.
+ if (narr_slot != oldnarr_slot)
same = "N";
else
{
same = "Y";
- for (i=1; i <= slot; i++)
+ for (i=1; i <= narr_slot; i++)
{
if (oldnarr[i] != narr[i])
{
# dump out the old narrative if it is new
if (same == "N")
{
- if (oldslot)
- for (i=1; i <= oldslot; i++)
+ if (oldnarr_slot)
+ for (i=1; i <= oldnarr_slot; i++)
{
print oldnarr[i];
if (html == "Y" &&
}
# save the current narrative
- for (i=1; i <= slot; i++)
+ for (i=1; i <= narr_slot; i++)
oldnarr[i] = narr[i];
- oldslot = slot;
+ oldnarr_slot = narr_slot;
}
- slot = 0;
+ narr_slot = 0;
# dump out the previous filename
print save_working;
+
if (html == "Y")
print "<BR>";
# we have a narrative line
{
# accumulate narrative
- narr[++slot] = $0;
+ narr[++narr_slot] = $0;
}
}
- END {
- # If there are a different number of narrative
- # lines, they can not possibly be the same.
- if (slot != oldslot)
- same = "N";
- else
+ END \
+ {
+ # If there are a different number of narrative
+ # lines, they can not possibly be the same.
+ if (narr_slot != oldnarr_slot)
+ same = "N";
+ else
+ {
+ same = "Y";
+ for (i=1; i <= narr_slot; i++)
{
- same = "Y";
- for (i=1; i <= slot; i++)
+ if (oldnarr[i] != narr[i])
{
- if (oldnarr[i] != narr[i])
- {
- same = "N";
- break;
- }
+ same = "N";
+ break;
}
}
+ }
- # dump out the old narrative if it is new
- if (same == "N")
- {
- if (oldslot)
- for (i=1; i <= oldslot; i++)
- {
- print oldnarr[i];
- if (html == "Y" &&
- oldnarr[i] != "<HR>" &&
- oldnarr[i] !~ "^<DIV ")
- print "<BR>";
- }
- }
+ # dump out the old narrative if it is new
+ if (same == "N")
+ {
+ if (oldnarr_slot)
+ for (i=1; i <= oldnarr_slot; i++)
+ {
+ print oldnarr[i];
+ if (html == "Y" &&
+ oldnarr[i] != "<HR>" &&
+ oldnarr[i] !~ "^<DIV ")
+ print "<BR>";
+ }
+ }
- # dump out the last filename
- print save_working;
+ # dump out the last filename
+ print save_working;
- if (html == "Y")
- print "<BR>";
+ if (html == "Y")
+ print "<BR>";
- # dump out the last narrative
- for (i=1; i <= slot; i++)
- {
- print narr[i];
- if (html == "Y" &&
- narr[i] != "<HR>" &&
- narr[i] !~ "^<DIV ")
- print "<BR>";
- }
- }' |
+ # dump out the last narrative
+ for (i=1; i <= narr_slot; i++)
+ {
+ print narr[i];
+ if (html == "Y" &&
+ narr[i] != "<HR>" &&
+ narr[i] !~ "^<DIV ")
+ print "<BR>";
+ }
+ }' |
# add HTML wrapper
if [ "$HTML" = "Y" ]