Version Control Guidelines

From ZenWiki

Jump to: navigation, search

The Version Control Guidelines define the expected behaviors in accessing the Subversion repository.

These are just guidelines, not rules. But if they did not provide any guidance, somebody should fix them.

Contents

How to Access

  • TortoiseSVN, a windows shell extension.
    • Download TortoiseSVN from here.
    • Install the program (may require a reboot).
    • Create a new folder with Windows Explorer.
    • Access TortoiseSVN menu by right clicking; select "SVN Checkout...".
    • Enter svn://msesrv1d.mse.cs.cmu.edu as the URL of repository in "Checkout" dialog box; click OK.
    • Try to explore some other functions after you did the first checkout, such as "TortoiseSVN -> Repo-browser".
  • Subclipse, a Subversion Eclipse Plugin
    • Download and install Eclipse, if you have not done so.
    • Select menu "Help -> Software Updates -> Find and Install...".
    • Select "Search for new features to install" on the "Install/Update" dialog box.
    • Click "New Remote Site..." and enter Subclipse for the name and http://subclipse.tigris.org/update_1.2.x for the URL; click OK.
    • Check Subclipse to include it in search; click "Finish".
    • Select Subclipse on the "Search Results" and then click Finish to install the plugin.
    • Select menu "Window -> Open Perspective -> Others... -> SVN Repository Exploring".
    • Select "Add SVN Repository" button on the "SVN Repository" tab.
    • Enter svn://msesrv1d.mse.cs.cmu.edu as the URL; clieck Finish.
    • Explore the tree structure under the created repository.
  • An alternative way to browse the repository is through ViewVC.

Naming Convention

  • Use self-explanatory file name; avoid using acronyms.
  • Use "_" to connect words; avoid using blank spaces.
  • Avoid using "date" in the file name. If you think you need to have a date in your file name, think again whether the file really needs be placed under version control.
  • Avoid using version number in the file name; use tags (as described in the coming section) to mark significant release.
  • Naming of the source code should follow the coding standards.

Repository Layout

The repository has the trunk/branches/tags structure that is recommended in the Subversion documentation.

  • trunk contains the official development code. Please do not checkin any code on trunk that is untested, or that breaks the test suite.
  • branches: contain experimental branches that need longer time to be stable before merging back to trunk.
  • tags: contain the releases in each iteration.

The top-level structure is divided three parts according to the implementation view of the architecture. Each part then contains the trunk/branches/tags structure. The second-level directories described here are belonged to the trunk.

Common

  • common: the source code common for ZEN Client and ZEN Server
    • database: the database schema and API code which is common across the ZEN Client and ZEN Server
      • edu.cmu.sei.smart.zen.common.datamodel: package name for database access code
      • load: database schema files will reside here
      • load.data: database data files (SQL files with insert statements) will reside here
    • reporting: the source code and reporting design files which is common across the ZEN Client and ZEN Server
      • edu.cmu.sei.smart.zen.common.reporting: package name for reporting code
      • rptdesign: reporting design files will reside here
    • communication: the source code for communication which is common across ZEN Client and ZEN server
      • edu.cmu.sei.smart.zen.common.communication: package name for communication

ZEN Client

The layout for ZEN Client takes the Eclipse's plug-in architecture into account.

The full Java package name in each directory will be edu.cmu.sei.smart. + directory name. For example, the package name in zen.client.application will be edu.cmu.sei.smart.zen.client.application.

Image:ZEN-Client-Internal-Deployment-View.png

Key: UML Deployment Diagram

  • client: the source code for ZEN Client
    • zen.client.application: The plug-in that constructs the RCP workbench.
    • zen.client.authentication: The plug-in that provides the authentication.
    • zen.client.interview.feature: The feature that consists of two underlaying plug-ins: zen.client.interview.ui and zen.client.interview.core.
    • zen.client.interview.ui: The plug-in that consists of Eclipse-specific UI components in the interview perspective.
    • zen.client.interview.core: The plug-in that consists of UI-independent components, such as data model and data access, for interview perspective.
    • zen.client.analysis.feature: The feature that consists of two underlaying plug-ins: zen.client.analysis.ui and zen.client.analysis.core.
    • zen.client.analysis.ui: The plug-in that consists of Eclipse-specific UI components in the analysis perspective.
    • zen.client.analysis.core: The plug-in that consists of UI-independent components, such as data model and data access, for analysis perspective.
      • rptdesign: reporting design files will reside here
    • zen.client.admin.feature: The feature that consists of two underlaying plug-ins: zen.client.admin.ui and zen.client.admin.core.
    • zen.client.admin.ui: The plug-in that consists of Eclipse-specific UI components in the administration perspective.
    • zen.client.admin.core: The plug-in that consists of UI-independent components, such as data model and data access, for administration perspective.
    • zen.client.admin.tool: An independent executable that resets username and password.

ZEN Server

  • server: the source code for ZEN Server
    • authentication: the module which handles role management and authentication
      • edu.cmu.sei.smart.zen.server.authentication: package name for authentication
    • smig_maintenance: the module which handles SMIG Maintenance
      • edu.cmu.sei.smart.zen.server.smig_maintenance: package name for SMIG maintenance
      • smig: directory in which SMIG exists (??)
    • reporting: the source code and reporting design files for the ZEN Server
      • edu.cmu.sei.smart.zen.server.reporting: package name for reporting code
      • rptdesign: reporting design files will reside here
    • engagement_setup: the source code for engagement setup
      • edu.cmu.sei.smart.zen.server.engagement_setup: package name for engagement setup
    • communication: the source code for communication
      • edu.cmu.sei.smart.zen.server.communication: package name for communication
    • consolidation: the source code for consolidation
      • edu.cmu.sei.smart.zen.server.consolidation: package name for consolidation
    • database: the database accessing module in ZEN Server
      • edu.cmu.sei.smart.zen.server.datamodel: package name for database access code
      • load: database schema files specific to the server will reside here
      • load.data: database data files (SQL files with insert statements) will reside here
    • user_interface: the GUI module in ZEN Server
      • edu.cmu.sei.smart.zen.server.user_interface: package name for UI code
    • administration: the administration module in ZEN Server
      • edu.cmu.sei.smart.zen.server.administration: package name for administration
    • webserver: web server related code in ZEN server. This might include hooks to Struts
      • edu.cmu.sei.smart.zen.server.webserver: package name for webserver

Documents

  • documents: artifacts produced during development
    • architecture: artifacts on architecture
    • build:
    • client: artifacts given by the client to the team for reference/use.
    • design: artifacts on design
    • development process: artifacts on ZDM and Change Management Process (the ones on the Wiki are the latest)
    • project_plan: artifacts for planning and tracking
    • quality_assurance: artifacts on quality assurance
    • requirements: artifacts on requirements
    • risks: artifacts on risk
    • user_interface: artifacts on user interface
Personal tools