Update pgcvslog to fix problem with duplicate narratives.
authorBruce Momjian
Sat, 13 Jan 2001 01:49:35 +0000 (01:49 +0000)
committerBruce Momjian
Sat, 13 Jan 2001 01:49:35 +0000 (01:49 +0000)
src/tools/pgcvslog

index f40f2c6d645f0b6b43a5346afe1d41c239f24bc7..826f396bf43355379996420aba3f251162d66900 100755 (executable)
@@ -1,14 +1,13 @@
 :
-# This utility is used to generate a compact list of changes for each
-# release, bjm 2000-02-22
+# This utility is used to generate a compact list of changes
+# for each release, bjm 2000-02-22
 
 # Usage $0 file
 
-# no branches: 
-# cvs log -d '>1999-06-14 00:00:00 GMT' . > log
+# no branches: # cvs log -d '>1999-06-14 00:00:00 GMT' . > log
 #
 # pre and post-branch logs:
-# find . -name CVS -type d -exec touch '{}/Entries.Static' \;
+# find . -name CVS -type d -exec touch'{}/Entries.Static' \;
 # cvs log -d'2000-05-08 00:00:00 GMT<2000-05-29 00:00:00 GMT'
 # cvs log -d'>2000-05-29 00:00:00 GMT' -rREL7_0_PATCHES
 # find . -name CVS -type d -exec rm '{}/Entries.Static' \;
@@ -16,8 +15,9 @@
 
 cat "$@" |
 
-# mark each line with a datetime and line number, for sorting and merging
-# we don't print anything from the -- or == line and the date:
+# mark each line with a datetime and line number, for sorting and
+# merging we don't print anything from the -- or == line and the
+# date:
 
 awk '
    $0 ~ /^Working file:/   {workingfile = "/" $3}
@@ -49,49 +49,73 @@ awk '
        if (workingfile != "" && skip == "N")
        {
            gsub(";", "", $5);
-           printf ("%s| %10d|  %70s\n", datetime, NR-2, $5);
-           printf ("%s| %10d|%s\n", datetime, NR-1, workingfile);
-           printf ("%s| %10d|%s\n", datetime, NR, $0);
-           printf ("%s| %10d|%s\n", datetime, NR+1, "");
+           printf ("%s| %10d|%s\n", datetime, NR-2, workingfile);
+           printf ("%s| %10d|%s\n", datetime, NR-1, $0);
+/*         printf ("%s| %10d|%s\n", datetime, NR, "");*/
+           printf ("%s| %10d|  %70s\n", datetime, NR+1, $5);
        }
    }
 
-   $0 ~ /^====*$/          {workingfile=""}' |
+   $0 ~ /^====*$/          {workingfile=""}' |
 
 sort | cut -d'|' -f3 | cat |
 
 # collect duplicate narratives
-awk '  BEGIN   { slot = 0;}
+awk '   BEGIN   { slot = 0; oldslot=0; save_working = ""; }
    {
+       /* filename */
+       /* We have a filename, so we look at the previous */
+       /* narrative to see if it is new narrative text.*/
+       /* */
+       /* If there are a different number of narrative */
+       /* lines, they can not possibly be the same. */
        if ($0 ~ /^\//)
        {
            if (slot != oldslot)
-               same = 0;
+               same = "N";
            else
            {
-               same = 1;
+               same = "Y";
                for (i=1; i <= slot; i++)
                {
                    if (oldnarr[i] != narr[i])
-                       same = 0;
+                   {
+                       same = "N";
+                       break;
+                   }
                }
            }
 
-           if (oldslot && !same)
-               for (i=1; i <= oldslot; i++)
-                   print oldnarr[i];
-           for (i=1; i <= slot; i++)
-               oldnarr[i] = narr[i];
-           oldslot = slot;
+           /* dump out the old narrative if it is new */
+           if (same == "N")
+           {
+               if (oldslot)
+                   for (i=1; i <= oldslot; i++)
+                       print oldnarr[i];
+               /* save the current narrative */
+               for (i=1; i <= slot; i++)
+                   oldnarr[i] = narr[i];
+               oldslot = slot;
+           }
            slot = 0;
+
+           /* dump out the previous filename */
            print save_working;
+
+           /* store the current filename for later printing */
            save_working = $0;
-       }
+       }
        else if ($1 != "date:")
+       {
+           /* accumulate narrative */
            narr[++slot] = $0;
+       }
    }
    END {
+           /* dump out the last filename */
            print save_working;
+
+           /* dump out the last narrative */
            for (i=1; i <= slot; i++)
                print narr[i];
        }'