Moving PMR to SCM backend

Best practices for svn/git CellML repository

Terms:

Repository – the root of everything

Project – the first level directory of the repository. It can be considered synonymous with workspace (for now anyway). Perhaps even a unit of work.

Model – Could be anything that exists within a project. Could be components themselves.

Best Practices: (?)

  • Repository can have a number of projects, they will be stored as subdirectories of the root of repository

  • Projects subdirectories should have standard directory types (trunk, branch, tag)

  • Projects will have models

  • Models must belong to a project

  • Models within a project is synonymous with source files within a software project

  • Models within a project can import (reference) any other file within the same project with relative paths.

  • Models requiring external components must import them with absolute path including revision number/identifier

  • To make a "release" of a project, the Models (or other files) to be released will be "tagged", or copy to a tag subdirectory of the project (or elsewhere?). All relative internal references should be consistent. All other references within the same repository but external to the project should have existed already.

  • A packaged release may require all dependencies be bundled together into a single file, with references updated to reflect that.

  • References external to the repository will need some more thought, as they cannot be guaranteed to exist.

  • No need for naming convention for projects. Let users choose sensible names (numbers and names of people who wrote the paper alone don't mean much)

  • However, publishing the model to the website may require some sort of naming format.

  • The website will list packages and the location each packages were derived from (which revision from which repository).