
Upgrading From Previous Version of GNATS (QuickStart)
=====================================================

   The GNATS index changed in release 3.106 and again in release
   3.107.  The following steps will help update you. They assume that
   your GNATS_ROOT is /usr/local/share/gnats/gnats-db and you've built
   the sources in /usr/local/src/gnats/gnats-3.107-beta. Change for
   own own situation.

   Run these steps logged in as the GNATS_USER!!!

   From any prior version of GNATS prior to 3.106 (even the ancient
   3.2) to GNATS 3.107 (see gen-closed-date notes below):

        $ cd /usr/local/share/gnats
        $ cp -pR gnats-db gnats-db.BACKUP
        $ cd gnats-db/gnats-adm
        $ /usr/local/src/gnats/gnats-3.107-beta/gnats/gen-closed-date --test
        $ /usr/local/src/gnats/gnats-3.107-beta/gnats/gen-closed-date
        $ gen-index > index

   From GNATS 3.106 to GNATS 3.107:

        $ cd /usr/local/share/gnats/gnats-db/gnats-adm
        $ mv index index-3.106
        $ gen-index > index

   From GNATS 3.107 to 3.108

        The GNATS lock files for PR's being edited are now all placed
        into /usr/local/share/gnats/gnats-db/gnats-adm/locks/ instead
        of the directory where the PR is stored. No attempt is made
        by the installation to move any existing locks to this directory.

Notes to Script and Front-End Client Writers
============================================

   The following changes should be noted by anybody writing scripts
   that access GNATS files, or developing gnats clients.

   These notes are not complete. Please read the BETA and Changelog
   files carefully.

   GNATS 3.109

   - Added delete-pr and check-db programs.

   GNATS 3.106

   - Configurable states and classes.

   - New fields: Release-Note (multitext) and Closed-Date. Closed-Date
     is managed by GNATS; no need to parse the Audit-Trail for close 
     dates.

   - SQL query output: two fields added: Last-Modified and Closed-Date.

   GNATS 3.107

   - GNATS index expanded to include all non-multitext fields, and the
     separator character changed from ":" to "|".

   - Multiple database support and user access control.

   GNATS 3.108

   - Previously, gnatsd (and npr-edit) always unlocked PRs when an
     update was attempted, but pr-edt (edit-pr) didn't. Now neither 
     one does and the client must do the unlock.

   - Previously, gnatsd and npr-edit returned the full text of the PR
     when locking it, but pr-edit did not. Now they all do.

   - Previously, gnatsd and npr-edit didn't attempt to lock the entire 
     database when locking a PR, but edit-pr did. Now none of these do.

   - gnatsd now escapes single dots on a line when sending multitext 
     fields across the network (by adding another dot), and removes
     the escapes when receiving all data across the network. npr-edit
     and nquery-pr are updated to handle this.

   - gnatsd LOCK and FULL now both properly terminate the PR text with
     "\r\n.\r\n". npr-edit is updated to handle this.

   - Edit lock files are now all kept in gnats-adm/locks.

   - gnatsd commands HELP and DBLA are now unrestricted. DBLS is set to
     "admin" access level.

   - new gnatsd command CHEK to check PRs before submitting for edit/update.
     npr-edit uses this new function, which uses the same code as pr-edit.

   - new gnatsd command MLRS to get the mailing address of a person in
     the responsible file. This is the gnatsd equivalent of pr-addr,
     used by the new program npr-addr.

   - new program npr-addr for network functionality of pr-addr.

"gen-closed-date" for upgrading from versions prior to gnats-3.106
==================================================================

   - run gen-closed-date logged in as the GNATS_USER!!!
   - adds Closed-Date field for all existing PRs, with time set for PRs 
     with a State that is of type "closed".
   - changes the Audit-Trail from "oldstate-newstate" to "oldstate->newstate".
   - it restores the original PR file timestamp after each PR is rewritten.
   - run with "--test" arg to see what it will do without actually making
     any updates.

   Running make will build this program but it doesn't get installed because
   you should only need to run it once. Running it repeatedly does no harm.
   You may decide after running it once that you want the "suspended" state to
   be type "closed". Just update the states file and rerun gen-closed-date.
