New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Developers/SVN_QuickReference – NEMO
wiki:Developers/SVN_QuickReference

Version 25 (modified by nicolasmartin, 7 years ago) (diff)

--

Working with SVN and tickets

Last edited at Wikinfo(changed_ts)? by Wikinfo(changed_by)?

How to get write permissions to the repository

First and foremost, if you don't already have a user account then you have to create it.

For NEMO consortium members

If you have a user account or had a developer account before, see with your local NEMO Officer.

Error: Failed to load processor SQLTable
No macro or processor named 'SQLTable' found
Error: Failed to load processor SQLTable
No macro or processor named 'SQLTable' found

User Name Email Role Office
( Empty )
Members count: 0

For external users

Submit your contribution to the NEMO System Team by creating a ticket where you will present your proposal.
Keep in mind that, despite the help we can offer, a certain amount of work from you will be need to implement your developments into the source code.

Document your developments before coding

Follow the procedure described at wiki:Developers/DevelopingCodeChanges

How-to with SVN commands

How to create a new routine

Use the template source:trunk/NEMOGCM/NEMO/OPA_SRC/module_example
If not don't forget to set the SVN property of the routine in order to get the functionality of SVN Id keyword replacement

svn propset svn:keywords Id New_routine.f90

How to make a branch

For branch naming conventions, see wiki:Developers/DevelopingCodeChanges

svn copy svn+ssh://'your_forge_login'@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/trunk                  \ 
         svn+ssh://'your_forge_login'@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/branches/dev_r1720_SBC \
         -m 'Create a specific branch for the New Surface Module'

For development branches, we tend to add one level of subdirectory corresponding to the current year, and an additional item in the name corresponding to the work-plan,for instance:

svn copy svn+ssh://'your_forge_login'@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/trunk                               \
         svn+ssh://'your_forge_login'@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/branches/2011/dev_r1720_LOCEAN1_mpp \
         -m "Create a specific branch  for mpp evolution"

How to make a commit

Extract with svn+http protocol

svn co svn+ssh://'your_forge_login'@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/branches/dev_001_SBC

Then in the appropriate directory :

# Tip: set your editor vi, vim, emacs, nano, ...
# for sh  and other related shells, interesting to include it in ~/.profile or ~/.bash_profile)
export SVN_EDITOR='your_favourite_editor' 
# for csh  "    "      "      ""  ,      "      ""    "    "" "" ~/.login                     )
setenv SVN_EDITOR='your_favourite_editor'
# Commit and write the log message (ticket link #.... and so on) in your editor
svn ci files_list # `svn ci` without files list will commit all modified files recursively from the current directory
# or directly from the command line of the shell session
svn ci  -m 'log message' files_list

Commit message syntax

New syntax to add in commit message to enable extended functionalities [command #ticket_number]

  • Add commit message as comment in the ticket: [see #ticket_number]
  • Close a ticket with the commit: [fix #ticket_number]

How to make a tag

svn copy svn+ssh://'your_forge_login'@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/trunk          \
         svn+ssh://'your_forge_login'@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/tags/nemo_v2_3 \
         -m "Tagging nemo_v2_3"

How to make a merge

To get all changes from the revision 746 to the current one (HEAD) on a specific directory

# (you have already downloaded the branch you are working on)
cd ./NEMO/OPA_SRC/IOM
svn merge -r 746:HEAD -m 'Merge my local IOM directory with the trunk repository'                               \
          svn+ssh://'your_forge_login'@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/trunk/NEMO/OPA_SRC/IOM \

How to make an update of a given file between 2 different branches e.g trunk and tags directories

Suppose the downloaded NEMO directory corresponds to the tag nemo_v3 (i.e. from http://forge.ipsl.jussieu.fr/nemo/svn/tags/nemo_v3/NEMO); the current revision number of the file sbcssm.F90 is 1196. To get the new revision (which has been committed on the trunk http://forge.ipsl.jussieu.fr/nemo/svn/trunk/NEMO ) with the revision number 1214:

cd ./modeles/NEMO/OPA_SRC/SBC/
svn merge -r 1196:1214 http://forge.ipsl.jussieu.fr/nemo/svn/trunk/NEMO/OPA_SRC/SBC/sbcssm.F90

How to get information about the sources downloaded

To get information such as the PATH/URL you are working on, .i.e. trunk, branches .. and so on

cd ./NEMO && svn info

To get all commits/revision performed/associated on/to your working repository since its creation

cd ./NEMO && svn log --verbose --stop-on-copy

Switch from user to developer

The following command is set for the trunk, adapt as required for your developing branch.

svn switch --relocate    http://forge.ipsl.jussieu.fr                                       \
                      svn+ssh://'your_forge_login'@forge.ipsl.jussieu.fr/ipsl/forge/projets

Switch from a branch to the trunk (your working copy was based on a given branch which has been moved to the trunk

svn switch http://forge.ipsl.jussieu.fr/nemo/svn/trunk/NEMOGCM

Comments: takes some time and asks if conflicts

How to delete a branch

svn del svn+ssh://'your_forge_login'@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/branches/2016/dev_rxxx_branch_name \
        --message 'Delete defunct branch'