Version 42 (modified by nicolasmartin, 7 years ago) (diff) |
---|
SubVersioN basics customized for NEMO
Last edited at Wikinfo(changed_ts)? by Wikinfo(changed_by)?
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 workplan. For branch naming conventions, see Developers/DevelopingCodeChanges.
svn copy trunk branches/'Current_year'/'Name_of_the_new_branch'
Mirror a different branch (hazardous)
Your working copy was based on your initial dev. branch and you want to update to a different branch, conflicts are unavoidable and will be pretty complicated to resolve.
svn sw 'URL[@PEGREV] [PATH]'
Manage versioned items
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, F90, h90}'
Add a new item / Remove a [remote] item
svn add 'PATH...' svn del '{PATH...,URL...}'
Manage versioned properties on items
svn:keywords for commit infos on routines
If the svn:keywords property is not defined on a NEMO routine, set it in order to get the functionality of $Id keyword replacement in all committed files with the commit informations (URL, author, date and revision)
svn pset svn:keywords Id 'PATH...'
svn:mime-type for syntax highlighting and merging process
Most of versioned files
If you want to apply a specific
svn:executable for access permissions of shell scripts
svn {pset,pdel} svn:executable 'PATH...'
svn:externals for defining external sources
Revert local changes
svn revert [--depth {empty,files,immediates,infinity}] 'PATH...'
Merging sources
Apply the differences between two sources to a working copy path
svn merge 'sourceWCPATH1@REV1 sourceWCPATH2@REV2 [WCPATH]'
Commit changes to the repository
svn co [-m 'log message in one line'] items
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'
Push modified external items from a working copy
Use explicit option with SVN commit command, think that no revision has to be set on related ext def (equivalent to @HEAD)
svn ci --include-externals ...
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
With the new layout of the repository, some may encounter downloading or updating issues with
svn co -r REV URL
Use instead the more robust syntax
svn co URL@PEG (REV ~ PEG)
See http://svnbook.red-bean.com/en/1.7/svn.advanced.pegrevs.html for more.