Systems, clients, servers, methods, and computer-readable media of varying
scope are described that maintain versions of data related to projects. Included
in the system is a visual interface, a source repository and a project database.
The source repository maintains versions of source code associated with a software
development project. The project database maintains project data associated with
the project. The project database maintains versions of the project data. The visual
interface provides a mechanism for reading and updating the project data. As project
data is updated a method is invoked in which a current version of the data is located.
The current version is determined by examining which data structure has an end-time
value that is blank or null. The current version's end-time is set to the current
time (i.e. the time of the update), thereby turning the current version into a
previous version of the project data. A new data structure is created that contains
the updated value. The end-time value for the new data structure is set to blank
or null, indicating that it is the current version.