Repository Help

Jump to: navigation, search

The Repository Help page is intended for CAVS employees and describes the procedure of checking in codes to the repository.


Overview of the Codes Repository

As part of the DOE-SRCLID project, one of the tasks of the Cyberinfrastructure team is to develop a repository of computational modules contributed and shared by the participants of all SRCLID tasks. The computational modules correspond to material models simulation codes, pre- and/or post-processing data analysis and visualization codes, etc. Management of changes to computer programs and any other electronic information is traditionally done using a version control system, which is able to track changes and avoid general chaos particularly for large, fast-changing projects, possibly with many authors. The Cyberinfrastructure-based repository of material models codes is developed using Subversion (SVN), an open source, version control system.


2.1 Introduction to SVN including hints for Windows and Linux

The online SVN Introduction document gives a brief introduction to SVN for persons new to SVN or revision control of software, with links to more detailed documentation such as the Version Control with Subversion Book.

2.2 SVN for Administrators

The online SVN Administration document gives guidance to the local SVN administrators on setting up the repository and preparing for new projects to be imported to the repository.

Sample Templates for Individual Projects

To achieve and maintain consistency in the repository of codes, we provide two project templates:

  • ‘basicSkeleton’template for small or very small software projects, and
  • 'skeleton' template for larger software projects, with numerous files, possibly of various types.

Both project templates are intended to serve as guidelines for organizing the folder structure of Cyberinfrastructure-based codes repository candidate projects, and suggestions on mapping the project content (documentation, source files, dependence libraries, input/output data, example uses, etc) into the proposed organization structure. The organization structure and content categorization of the two project templates are drawn from common standard practices of software development and software project maintenance. A detailed description of the content of each folder and file can be found in the online documentation.

3.1 Template for simple Individual Projects (download basicSkeleton)

The 'basicSkeleton' template is recommended for small projects that consist of one or two source files and maybe one header file. The tree-like folder structure and the recommended content of each folder of the 'basicSkeleton' project template is shown in the image below. A description of the content of each folder and file can be found in the online documentation.

3.2 Template for large Individual Projects (download skeleton)

For more complex and/or larger projects, we recommend the 'skeleton' template, with the folder organization illustrated in the figure below. Generally, such projects consist of more than one source file (*.c, *.cpp or *.f), several header files (*.h) and a couple of libraries (*.a, *.so or *.dll). It is very likely that such projects require a Makefile, and that the user may need to provide scripts for pre-simulation or post-simulation processing of data. A good practice is organizing these different files into specific directories. A description of the content of each folder and file can be found in the online documentation.

Small project template tree structure
Large project template tree structure

Procedure for checking a new project in the repository

This section describes the procedure and the steps for deploying a new project to the Cyberinfrastructure-based codes repository. The check in procedure will enable the rapid and efficient population of the repository of codes. The steps of this procedure are explained in detail in the online documentation. For your reference, they are also summarized below.

Steps of the check in procedure Illustration of the check in procedure steps
  1. Request for approval to include a new project into the codes repository
  2. Provision of Instructional Package to the User
  3. Organization of the candidate project based on the recommended template (see 3.1 or 3.2 for details)
    1. Verify public access to repository content
    2. Verify intellectual property and licensing
  4. Creation of new project directory in the repository and customization of permissions
  5. New project commitment to the codes repository
  6. Annotation of the project in the codes repository


  1. When deciding upon the content to be included in the Cyberinfrastructure-based codes repository, each user must take note of the following:
  2. It is strongly recommended that content intended to be checked in the Cyberinfrastructure-based codes repository (material models implementations, pre-processing/post-processing scripts or software, libaries, etc.) falling under any form of proprietorship, licensing and export control rules or regulations, must not be deployed to the repository of codes. Therefore, the user bears full responsibility for guaranteeing non violation of any such rules or regulations pertaining and/or applicable to the content intended to be checked in.
Check in procedure

back to the code repository home

Personal tools

Material Models