Rosie

Rosie is a tool for managing Rose suite configurations which is included in Rose. The purpose of Rosie is to facilitate suite development, management and collaboration. Rosie:

  • Adds version control to Rose suite configurations.

  • Updates a database to keep track of Rose suite configurations.

Warning

This tutorial does not require specific FCM knowledge but basic version control awareness is important. For more information on FCM version control see the FCM User Guide.

Rosie Suites

A Rosie suite is a Rose suite configuration which is managed by the Rosie system.

Rosie suites can be created by the command:

rosie create
  • Create a new suite.

  • Create a new suite, starting with the content of another suite. (rosie copy is an alias that extends rosie create)

By default Rosie creates the working copy (local copy) of new suites in the ~/roses directory though Rosie working copies can be created elsewhere.

Version Control

In Rosie suites the run directory is added to version control using FCM.

FCM is a SVN (Subversion) wrapper which provides a standard working practice for SVN projects. FCM implements all of the SVN commands as well as additional functionality. See the FCM User Guide for more information.

Suite Naming

Each Rosie suite is assigned a unique name made up of a prefix followed by a hyphen and then an identifier made up of two characters and three numbers, e.g:

graph Example { ranksep=0 node [shape="plaintext", fontsize="11"] edge [style="invis"] a1 [label="u", fontsize=20] a2 [label="Prefix", fontcolor="#707070"] b1 [label="-", fontsize=20] b2 [label="", fontcolor="#707070"] c1 [label="aa001", fontsize=20] c2 [label="Unique Identifier", fontcolor="#707070"] a1 -- a2 b1 -- b2 c1 -- c2 }

The prefix denotes the repository in which the suite is located. Prefixes are site specific and are configured by the rose.conf[rosie-id]prefix-location.PREFIX setting.

Within the Rose user community the u prefix is typically configured to point at the https://code.metoffice.gov.uk repository.

The rose-suite.info File

All Rosie suites require a rose-suite.info file. This file provides information about the suite for use in the suite management and version control systems. The rose-suite.info file uses the Rose Configuration Format. The main settings are:

title

A short title for the suite.

owner

The user who has control over the suite (i.e. their username).

project

The project to which this suite belongs (can be an arbitrary name).

access-list

An optional list of users who have permission to commit to the trunk of the suite.

Managing Suites

Rosie provides commands for managing suites, including:

rosie checkout

Creates a local copy of a suite.

rosie ls

Lists all locally checked-out suites.

rosie lookup

Searches the suite database (using information from suite’s rose-suite.info files).

Practical

In this practical we will add the weather-forecasting suite from the previous practical to a rosie repository, make some changes, and commit them to the repository.

Note

For brevity this practical uses the abbreviated version of SVN commands, e.g. svn st is the abbreviated form of svn status. FCM supports both the full and abbreviated names.

  1. Create A New Rosie Suite.

    First, create a blank Rosie suite in an appropriate repository. You will probably want to use a “testing” repository if one is available to you.

    You can specify the repository to use with the --prefix command-line option. For instance to use the (internal) Met Office Testing Repository supply the command line argument --prefix=mot.

    rosie create --prefix=<prefix>
    

    You will then be presented with a rose-suite.info file open in a text editor. For the title field type “Dummy Weather Forecasting Suite” and for the project enter “tutorial”. Save the file and close the editor.

    Tip

    If the text editor does not appear you may have to press enter on the keyboard.

    Rosie will create the new suite in the ~/roses directory and the exact location will appear in the command output. Move into the suite directory:

    cd ~/roses/<name>
    
  2. Add Files To The Suite.

    Add the files from the Weather Forecasting Suite by running:

    rose tutorial rose-weather-forecasting-suite .
    

    We now need to add these files to version control. First check the SVN status by running:

    fcm st
    

    You should see a list of files with the ? symbol next to them, as well as rose-suite.conf with an M symbol beside it. ? means the files marked are untracked (not version controlled), whereas M indicates files which have been modified. Add all untracked files to version control by running:

    fcm add --check .
    

    Answer yes (“y”) where prompted. Now check the status again:

    fcm st
    

    You should see a list of files with the A character, meaning “added”, next to them. Finally commit the changes by running:

    fcm ci
    

    A text editor will open. Add a message for your commit, save the file and close the editor. You will then be prompted as to whether you want to make the commit. Answer yes.

    You have now added the Weather Forecasting Suite to version control. Open the Trac browser to see your suite:

    fcm browse
    

    A web browser window will open, showing the Trac page for your Rosie suite.

  3. Checkout The Suite.

    Now that the suite is in the Rosie repository a working copy can be checked out on any machine with access to the repository by executing:

    rosie checkout <name>
    

    Test this by deleting the working copy then checking out a new one:

    cd ~/roses
    rm -rf <name>
    rosie checkout <name>
    

Practical Extension

  1. Make Changes In A Branch.

    Next we will make a change to the suite. Rather than making this change in the “trunk” (referred to as “master” in git terminology) we will work in a new “branch”.

    Create a new branch called “configuration-change” by running:

    fcm bc configuration-change
    

    Provide a brief commit message of your choosing when prompted and enter yes (“y”).

    You can list all branches by running:

    fcm bls
    

    Switch to your new branch:

    fcm sw configuration-change
    

    Next, either using the Rose 2019 rose config-edit GUI or a text editor, change the RESOLUTION setting in the rose-suite.conf file to 0.1.

    Check the status of the project:

    fcm st
    

    You should see the rose-suite.conf file with a M, meaning modified, next to it. Commit the change by running:

    fcm ci
    

    Again you will need to provide a commit message and answer yes to the prompt.

  2. Merge The Branch.

    Switch back to the trunk then merge your change branch into the trunk:

    fcm sw trunk
    fcm merge configuration-change
    

    Check the status (you should see the M symbol next to the rose-suite.conf file) then commit the merge:

    fcm st
    fcm ci