Version 38 (modified by nicolasmartin, 2 years ago) (diff)

SubVersioN basics

Last edited at 05/18/20 09:05:57 by smasson

Here we assumed that you are working locally with the default development organisation of the NEMO reference (trunk + branches + releases in your working directory), if not browse to Developers homepage

Branching

Create a branch

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 trunk branches/'Current_year'/'Name_of_the_new_branch'

For branch naming conventions, see Developers/Developing Code Changes.

Switch to the trunk (hazardous)

Your working copy was based on a given branch which has been moved to the trunk (conflicts unavoidable and pretty complicated to resolve).

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

Delete a branch

svn del 'Path/to/the/branch/to/delete'

Manage versioned items (file / folder)

Add a new NEMO routine

Use the template from NEMO/trunk/src/OCE/module_example

svn copy trunk/src/OCE/module_example branches/'Current_year'/'dev_branch'/'path/to/the'/new_routine.f90

If the svn:keywords property is not defined, don't forget to set it in order to get the functionality of $Id keyword replacement with the commit informations

svn pset svn:keywords Id 'path/to/the'/new_routine.f90

Add a new file / Remove a file

svn add 
svn del 

Update file between branches

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

Merging

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 \

Commit changes to the repository

svn co [-m 'log message in one line'] items

Recommended syntax to be added in the commit message

  • If the commit is related to one or several tickets, we highly suggest to add the commit message as ticket comment.
    To do so, you can use one of the word in the list addresses re references refs see followed by usual ticket link(s).
    Ex: see #1948 somewhere in the commit message to link with #1948
  • If the commit is a fix for one or several tickets, you can close them with the commit.
    To do so, you can use one of the word in the list close closed closes fix fixed fixes followed by usual ticket link(s).
    Ex: fix #1948 somewhere in the commit message to close #1948 without a browser.

Be careful if you mix the 2.

Then in the appropriate directory

# 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
# Tip: set your editor for SVN for multi-lines commit message
# 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'

Information about the sources

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