How does the repository/workspace combination work?

Eric Rizzo

The repository/workspace relationship is a database/view relationship. The repos is the database where all source code is stored, including all versions of all methods, classes, packages, and Projects. All the versions are there. The workspace is the view of that database. At any time, you can have in your view (workspace) any one version of any of these entities (methods, classes, packages, Projects). As you might suspect, it is possible to maintain multiple views of the database (that is what VAJ Enterprise is doing with the EMSRV shared repository server - each connected user has his/her own view of the same repository).

You modify your "view" by adding entities to your workspace from the repository, deleting them, and replacing them with other versions (and, of course, by importing or writing source code). The workspace is a dynamic thing, always changing. The repository is additive only - you don't delete things from it, only add to it. (It is possible to "purge" items with the Repository Explorer in VAJ, but that is only a "mark" for removal if you later do a "Repository Compact". And the Repository Compact is not actually a removal of anything - it just copies all the versioned things that are not purged into a new repository).

With Professional, VAJ can usually recover and reload the appropriate entities after a crash or "ungraceful" shutdown. On rare occasions you may notice that what gets loaded into the workspace is not the version that was there before the crash. In that case you just have to replace with the edition/version you want. If you're using VAJ Enterprise, it is more likely that this appearance of losing the latest version will happen. That is because Enterprise Edition has the notion of a "released" edition of classes, packages, and Projects. If you had an un-released edition of a class or package in your workspace and had a crash or "bad" shutdown, VAJ Enterprise will always load the Released version of everything when it rebuilds the workspace. You can always go replace those with the more recent unreleased versions, but the way to avoid it is to not work with unreleased versions very often (though sometimes it is necessary and proper when working in a team setting).