UM Source Control
Unified Model Repositories
Source code for the UM and related programs is stored under version control using Subversion, with a Trac server providing web access.
NOTE: The following information is for ACCESS 1 and UM versions before UM 10.0. For newer versions, see the MOSRS working practices
The various parts of the UM are stored in the following repositories:
- trunk - Tracks releases from the Met Office
- branches/dev - Branches for individual users
- branches/dev/Share - Branches useful for all users, e.g. branches for each version set up for ACCESS facilities
- branches/dev/Share/VNx.x_local_changes - Individual version branches, to be used as the main path for a run
Creating Branches and Editing Source
The UM uses the program fcm to handle repository management, which is a wrapper around subversion with some extra features useful for the UM's repository structure, such as keywords for important locations. For instance in commands fcm:um will be expanded to the location of the UM repository and fcm:um_br will be expanded to the branches subdirectory. For help with commands run fcm help COMMAND.
To create a branch from an existing version use fcm branch-create. For example, to create your own copy of version 7.5 to edit, run the command
fcm branch-create --branch-of-branch my_vn7.5 fcm:um_br/dev/Share/VN7.5_local_changes
This will create a new branch branches/dev/$USER/r$REV_my_vn7.5, where $USER is your username and $REV the revision of VN7.5_local_changes you created the branch from.
To edit your new branch you need to check it out from the repository, using fcm checkout, eg
fcm checkout fcm:um_br/dev/abc123/r1234_my_vn7.5 my_vn7.5
will create a folder my_vn7.5 containing your branch's source code.
You can now edit existing files, if you create a new file however you'll have to tell subversion about it, e.g. to add the new file foo.f90 run
fcm add foo.f90
Once you've finished making changes run
to get your changes uploaded to the repository. You will be prompted to describe the changes you made, it's helpful here to be descriptive. You can then use your branch as the repository URL within the UMUI, located under FCM Configuration/FCM Extract Directories.
If you want to combine the changes in two branches you can use fcm merge. Checkout the repository that you want to receive the changes, then in that folder to merge in the r2345_extra_wind branch run
fcm merge fcm:um/branches/dev/abc123/r2345_extra_wind
If there are no conflicting changes you can then checkin the branch. If conflicts occur you will have to manually resolve them by going into the conflicting files, conflicts will be indicated by
>>>>>>> old code ======= new code <<<<<<<
Edit what's between the angle brackets then try committing in the change again.