User Tools

Site Tools



This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
sedev:svn [Friday, 19 February 2010 : 08:04:12]
dhendriks Updated 'dev' to 'devel'
sedev:svn [Friday, 19 February 2010 : 08:16:08] (current)
dhendriks Updated Subversion website links
Line 1: Line 1:
 +(back to the [[:sedev|SE development page]])
 +====== Subversion ======
 +A lot of articles and documentation are available about the use of Version Control Systems, and Subversion in particular. A few links:
 +  * [[http://​​|Development site of Subversion]]
 +  * [[http://​​|Old development site of Subversion]]
 +  * [[http://​​|Freely available book about Subversion]]
 +Subversion itself is a command line program (called '​svn'​). It is available at the SE Linux systems.
 +There are also graphical clients that you may want to use:
 +  * [[http://​​smartsvn/​index.html|SmartSVN]] (does not understand the UQDS development method)
 +  * [[http://​​|TortoiseSVN]]
 +===== Data store organization =====
 +The central data storage of the project is called //​repository//​ (often abbreviated to //repo//). An important part of the repository is called //trunk//. In this directory, you always have the latest working version of the project data. Other common directories are //​branches//​ and //tags//.
 +Data in the repository can only be accessed using Subversion (svn). Each user gets his own copy of (part of) the repository in his own account (for example, a copy of all data in '​trunk'​). Such a copy is called //working copy//. In the working copy, you make modifications to files, run tests, experiments,​ etc.
 +When you are happy with the modifications,​ you can //commit// your changes to the repository. Through the commit mailing list, all other members get an notification of this commit.
 +You can also get new modifications from the central data storage into your working copy (remember, everybody can make changes into the repository, not only you).
 +This is called //update// (you are updating your working copy with new modifications).
 +Each change in the repository is given a unique number, called the //revision number// or just //​revision//​. (The term //version// is normally not used, to prevent confusion with releases (commonly known as versions) of the data files.)
 +With UQDS, a set of rules is used that define how to use trunk and branches (see also the [[sedev:​uqds|UQDS Wiki page]]):
 +  - //trunk// always contains the latest working version. It is never edited directly, you may only change it by merging from a branch.
 +  - //​branches//​ contains sub-directories with copies of trunk (one for each ticket that is being worked on). Here, changes to the data files are being made to fix a problem.
 +  - //tags// contains copies of trunk at an important point in time. For software, bringing out a new release is a common important time point. By convention, once a copy is made here, it is not touched again.
 +  - (optional) //sandbox// is '​play-ground'​ for highly experimental changes (ie not well enough understood to make a ticket, and put changes into trunk). Usually, each developer makes a sub-directory for himself so experiments are somewhat organized.
 +Some important ''​svn''​ commands (since Combinator takes care of branch management, you seldom need the more advanced commands):
 +^ Command ^ Description ^
 +| ''​svn status''​ | Query status of svn-controlled files and directories |
 +| ''​svn update''​ | Update your working copy with changes from the repository (mostly useful in trunk, since nobody but you works in your branches) |
 +| ''​svn commit''​ | Commit your changes to the repository (use [[http://​​trac/​dev/​wiki/​TracWiki|Trac Wiki syntax]] to format your commit messages) |
 +| ''​svn diff'' ​  | Displays the changes between your working copy and the repository |
sedev/svn.txt · Last modified: Friday, 19 February 2010 : 08:16:08 by dhendriks