Difference between revisions of "Using Subversion"
(adding some resources) |
(adding link to zsh tab completion module) |
||
Line 41: | Line 41: | ||
* [http://svnbook.red-bean.com Version Control with Subversion] | * [http://svnbook.red-bean.com Version Control with Subversion] | ||
* [http://svnbook.red-bean.com/en/1.1/apa.html Appendix A: Subversion for CVS Users] | * [http://svnbook.red-bean.com/en/1.1/apa.html Appendix A: Subversion for CVS Users] | ||
− | * [http://gcc.gnu.org/wiki/SvnSetup GCC's SVN Setup page] | + | * [http://gcc.gnu.org/wiki/SvnSetup GCC's SVN Setup page] - Look especially at the section on ssh connection caching. |
− | * [[Subversion_Migration]] | + | * [[Subversion_Migration]] - Some initial notes on the layout of the repository. |
+ | * [http://www.aeruder.net/software/misc/softwarelist.html 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 svn.gna.org. If you cannot type
svn list svn+ssh://svn.gna.org/svn/gnustep/devmodules
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:
/libs /libs/gui /libs/gui/trunk /libs/gui/branches /libs/gui/branches/dawn /libs/gui/branches/... /libs/gui/tags /libs/gui/tags/alex_last_semistable /libs/gui/tags/...
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://svn.gna.org/svn/gnustep/devmodules/core
It will tell me that the svn:externals property contains:
gui svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk back svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk base svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk make svn+ssh://svn.gna.org/svn/gnustep/tools/make/trunk
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
- Version Control with Subversion
- Appendix A: Subversion for CVS Users
- GCC's SVN Setup page - Look especially at the section on ssh connection caching.
- 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.