= '''Working with SVN and tickets''' [[PageOutline(2)]] Last edited at '''[[Wikinfo(changed_ts)]]''' by '''[[Wikinfo(changed_by)]]''' == How to get permissions for committing on the SVN repository First and foremost, if you don't already have a user account then you have to '''[/register create it]'''. === For NEMO consortium members If you have a user account or had a developer account before, see with your local NEMO Officer. === For external users Submit your contribution to the NEMO System Team by creating a [/newticket?type=Enhancement 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 {{{#!sh svn propset svn:keywords Id New_routine.f90 }}} === How to make a branch For branch naming conventions, see wiki:Developers/DevelopingCodeChanges {{{#!sh 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: {{{#!sh 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 {{{#!sh 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 : {{{#!sh # 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' # or directly from the command line of the shell session svn ci -m 'log message with ticket link #.... and so on' 'files list' }}} === How to make a tag {{{#!sh 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 {{{#!sh # (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: {{{#!sh 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 {{{#!sh cd ./NEMO && svn info }}} To get all commits/''revision'' performed/''associated'' on/''to'' your working repository since its creation {{{#!sh 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. {{{#!sh 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 {{{#!sh svn switch http://forge.ipsl.jussieu.fr/nemo/svn/trunk/NEMOGCM }}} Comments: takes some time and asks if conflicts === How to delete a branch {{{#!sh 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" }}}