When a software system becomes large there may be many hundreds, or even thousands, of packages that make up its source code. Efficient development requires a means for reliably storing, versioning, and viewing each of its parts.
The second project this Spring focuses on building the core capability of a Software Repository. The Repository is intended to manage a, possibly large, collection of source code packages, providing versioning, check-in, check-out, and browsing.
This first stage will consist of a single RepositoryCore process, with an integrated client used for testing. It does not attempt to provide a user the ability to use its features by asynchronous actions. Rather, the client simply provides a programmed set of tests to demonstrate the core capabilities.
We will use the NoSql databased, developed in Project #1, to store metadata about each file in the repository. Version numbers will be appended to file names on check-in. All other information will be contained in metadata, e.g., description, author, check-in status (open or closed), files on which it depends, categories to which the file belongs, and its storage path in the Repository.
In later projects we will build interprocess communication channels and user interfaces to support user interactions from separate client processes.