This is the instructions for the set of tests that should be 
perfomed before committing changes to the main trunk, or at least before
releases. 

0. Try to make sure you fully understand the prerequisites before making changes which would include finding tutorials on C++, Java, autoconf, subversion, the GNU Makefile, bourne shells (bash), UNIX systems programming (semaphores,sockets etc), and the use of NML, and the diagnostics tools as a normal user before making changes if you are not already an expert in all of those  areas.

1. Find the C++, C, Ada, and Java and whatever language is added in
the future  example/test applications, modify them such that a failure
to communicate any newly added variable, or use any new function, 
or config file option  whether remote/local neutral or
nonneutral will cause make check to report that at least one test fails.
Currently "extras" although we may change that in the future.
 
2. Find the example application that connects to the diagnostics tool
modify it such that when run the application and the diagnostics tool
you can be certain the diagnostics tool is correctly
reporting and modifying any newly added variable.

3. Find the update functions in C,C++, Ada and Java and whatever language
added in the future and hand modify them or manually run the code generator and
then visually inspect the output of the codegenerator. Don't make assumptions.
They are not automatically generated now but maybe in the future they will be.
If you don't know, find proof in the makefile or a build or the output of make
or by examining dates of modified files tha settles the question one way or the
other.  If you do not know what a function your calling does find the source for
it or write a test program to call it verify that it does you expect and
elimitates any ambiguity.


4. Search for references to the data structure you are modifiying the in the
code generator, the diagnotistics tool and potentially through out the library
to see the patterns to how things are updated. Also search for references for
other variables in the structure particularly variables of the same type or just
before or after it in the data structure.

5. Make modifications as necessary.

6. Run make check, if it does not say "All Tests Passed" return to step 3.

7. Run the application connected to diag tool if the variable is not changed or
reported correctly return to step 3.

8. If at any time during this process you modified a file for which you are not
the person who is most familiar with that file who is still alive, get the
person who is most familiar with that file to review your changes before you
commit your change to the head of the trunk.

9. If you changed the binary interface, ie added or subtracted any variable in a
data structure used by end user applications or changed any function return type
or or argument type that end user applications may call the version number
needs to be changed, currently done in configure.ac,Makefile.am, and src/rcsvers.hh. ie changing every occurrence of 2006.May with 2006.May_v2 in all three files. There are multiple places it occurs in several of them.

10. Commit the change.

11. Check the whole thing out in a different directory  and repeat steps 6 and 7
verifying that there was no dependancy on the original build directory, a file
that was never added to subversion, a build that only succeeded because some
object file was never updated etc.

12. Run make dist to generate a tar file and repeat steps 6 and 7 in a directory
extracted from that tar file verifying that any extra files needed in the
archive were added to EXTRA_DISTS.

13. Repeat either 11 or 12, on every important platform likely to be affected.

13. If you actually want users to be able to use it, modify the documentation
in the doc directory, commit that change, if you are not the person most
familiar with that documentation who is still alive, get that person to review
it and then copy the file to /itl/www-isd/projects/rcslib after making sure
the archive in /itl/ftp-isd/pub/rcslib is up to date. If you incremented the 
version number or changed the build instructions modify doc/getrcs.html and copy that to /itl/www-isd/projects/rcslib.

