= '''Working with SVN''' [[PageOutline(2-3)]] Last edited at '''[[Wikinfo(changed_ts)]]''' by '''[[Wikinfo(changed_by)]]''' == '''Howtos with SVN''' === 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 }}} === 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' }}} === Commit Extract with `svn+http` protocol or see section '[#Switchfromusertodeveloper Switch from user to developer]'. {{{#!sh svn co svn+ssh://'your_forge_login'@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/branches/dev_001_SBC }}} ==== Commit message #commitmessage {{{#!div class="notice system-message" __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 {{{#!sh # 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' }}} === 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" }}} === 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 \ }}} === Update of a 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: {{{#!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 }}} === Information about the sources 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 === 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' }}}