============== Design Notes ============== 1. Main Parts: ---------------------------------------------------------------------------------------------------- - Client > PluggableRepository and GUI - PluggableRepository does all its work using pluggin components: Checkin, Checkout, Storage, Version, Ownership, Browser and using parts: MetaData, FileNameEditor, FileSynchronizer, Relationships, TestUtilities ---------------------------------------------------------------------------------------------------- - Server > RepoServer is a container for shared Repository packages ---------------------------------------------------------------------------------------------------- - PluggableCommService > sends messages and files from sender to receiver Uses WCF to build message-passing and file transfer services Each end, client and server, have a Comm class that holds a sender and receiver It uses dispatchers at each receiver to decode messages and invoke their commands ---------------------------------------------------------------------------------------------------- 2. Processing Flow: ---------------------------------------------------------------------------------------------------- - Initialization > load and activate pluggin components and initialize each view ---------------------------------------------------------------------------------------------------- - Navigation > Views source code and metadata partitioned into category folders ---------------------------------------------------------------------------------------------------- - Checkout > extracts dependency tree from root name and moves to StagingStorage ---------------------------------------------------------------------------------------------------- - Checkin > creates versioned metadata from client supplied info in StagingStorage > copies checkin file to versioned file in StagingStorage > moves both to Storage/category folder (category picked from available at checkin) ---------------------------------------------------------------------------------------------------- - Message View > starts comm listener, connects to remote server > monitors message flow ---------------------------------------------------------------------------------------------------- - Admin > adds and removes category directories > refreshes dependencyh relationship cache by traversing metadata files ---------------------------------------------------------------------------------------------------- - Remote View > views files in local storage and in remote server > synchronizes local and remote files with Comm file transfers ----------------------------------------------------------------------------------------------------