OSDN Git Service

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

index f40f2c6..826f396 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];
                }'