Difference between revisions of "Using Subversion"

From GNUstepWiki
Jump to navigation Jump to search
m
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Anonymous GNUstep SVN Checkout ==
+
{{delete| gna is obsolete }}
 
 
Simply run:
 
svn co http://svn.gna.org/svn/gnustep/modules
 
 
 
You cannot use SVN+SSH unless you are a developer, and have a username and SSH public key registered at gna.org. See below for more details. You cannot check out <tt>/devmodules</tt> unless you are a developer. <tt>/modules</tt> is the same as <tt>/devmodules</tt>, except the SVN external references work for anonymous SVN checkouts.
 
 
 
== Developer GNUstep SVN Checkout ==
 
 
 
Simply run:
 
svn co svn+ssh://svn.gna.org/svn/gnustep/devmodules
 
 
 
== 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, read below.
 
 
 
=== If you have a different username on your system than on svn.gna.org ===
 
 
 
To get around this problem, you can setup per host SSH settings.  To do this, open ~/.ssh/config
 
and at the end add the lines
 
 
 
Host svn.gna.org
 
      User aeruder
 
 
 
This makes it so that everytime I connect to svn.gna.org with SSH, it will automatically use the username
 
aeruder instead of my unix username.
 
 
 
=== If you are prompted for a private key password ===
 
 
 
This will look something like:
 
 
 
Enter passphrase for key '/home/andy/.ssh/id_dsa':
 
 
 
To get around this you can either setup ssh-agent to cache this password or you can simply turn off the password on your private key.
 
To do the latter, simply type:
 
 
 
ssh-keygen -t dsa -p
 
 
 
and follow the prompts, and when it prompts for a new passphrase, simply hit enter.
 
 
 
== Some background on repository layout ==
 
 
 
To familiarize yourself with the layout, I would recommend looking at the [http://svn.gna.org/viewcvs/gnustep/ 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 ==
 
 
 
* [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://gcc.gnu.org/wiki/SvnSetup GCC's SVN Setup page] - Look especially at the section on [http://gcc.gnu.org/wiki/SSH%20connection%20caching ssh connection caching].
 
* [[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.
 

Latest revision as of 13:55, 28 April 2018