Using Subversion

From GNUstepWiki

(Difference between revisions)
Revision as of 22:07, 30 January 2006
Aeruder (Talk | contribs)
adding some resources
← Previous diff
Revision as of 22:33, 30 January 2006
Aeruder (Talk | contribs)
adding link to zsh tab completion module
Next diff →
Line 41: Line 41:
* [ Version Control with Subversion] * [ Version Control with Subversion]
* [ Appendix A: Subversion for CVS Users] * [ Appendix A: Subversion for CVS Users]
-* [ GCC's SVN Setup page] (especially the ssh connection caching)+* [ GCC's SVN Setup page] - Look especially at the section on ssh connection caching.
-* [[Subversion_Migration]] (notes on the initial migration)+* [[Subversion_Migration]] - Some initial notes on the layout of the repository.
 +* [ ZSH svn tab completion] - On this page is a tab completion module that can tab complete into subversion repositories. Very handy for ZSH users.

Revision as of 22:33, 30 January 2006

Setting up Subversion for Developer Use

The first thing you will want to do is setup the ssh access to If you cannot type

svn list svn+ssh://

without having to type a password or in some way change the above command, you will need to visit the Svn SSH Setup page (this includes if you have to specify a different user).

Some background on repository layout

To familiarize yourself with the layout, I would recommend looking at the web-access to svn for GNUstep. You will notice that every project is in its own portion of the repository. For example:




This layout is very handy for having a per-project repository. I can easily branch or tag just /libs/gui and it all stays in its own namespace. However, what this DOES mean is that you cannot simply checkout /libs/gui or you will end up with several copies of the source. To get around this, we are using a nifty feature of Subversion called externals. Externals are metadata on a directory that basically tell the svn client to checkout some other url into a subdirectory when it is checked out. So if I type:

svn proplist -v svn+ssh://

It will tell me that the svn:externals property contains:

gui     svn+ssh://
back    svn+ssh://
base    svn+ssh://
make    svn+ssh://

So everytime I checkout /devmodules/core the svn client will automatically go to these URLs and check them out into subdirectories. When I make changes in gui/ and commit them, it will really commit to /libs/gui/trunk. For the most part if you checkout /devmodules, the externals have already been setup such that it will checkout something similar to checking out the whole repository before.

Tips, Tricks, and Resources