Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revisionBoth sides next revision
lirec:version_control_guide [2009-02-04 15:06] davegriffithslirec:version_control_guide [2009-02-04 15:13] davegriffiths
Line 3: Line 3:
 [[:Version control]] is a way to develop software in a scalable way. Even if you are the only person working on a project, it enables you to write code with more confidence, as you know you have every change tracked - no more wondering what you did which broke everything, as you can find out easily. You can also tag points in development for retrieval later on - it's a good idea to do this before working on big structural changes which could cause instability while you work on them. [[:Version control]] is a way to develop software in a scalable way. Even if you are the only person working on a project, it enables you to write code with more confidence, as you know you have every change tracked - no more wondering what you did which broke everything, as you can find out easily. You can also tag points in development for retrieval later on - it's a good idea to do this before working on big structural changes which could cause instability while you work on them.
  
-Version control can be also be used in order to share development between groups of people, up to hundreds of developers. It takes care of merging all the changes together (which often worries people new to version controlbut it generally works well, and if it finds a confusing case (normally where two developers have changed the same line of code) it asks you to confirm what it's doing.+Version control can be also be used in order to share development between groups of people, up to hundreds of developers. It takes care of merging all the changes togetherwhich often worries people new to version control but it generally works well, and if it finds a confusing case (normally where two developers have changed the same line of code) it asks you to confirm what it's doing.
  
 =====Usage pattern===== =====Usage pattern=====
Line 11: Line 11:
 The general idea is that code lives on a remote server, and you keep a local copy of the source on your hard drive. You edit files and compile as normal then 'commit' your changes to the remote server. You also need to periodically update your code to get changes that other people have made.  The general idea is that code lives on a remote server, and you keep a local copy of the source on your hard drive. You edit files and compile as normal then 'commit' your changes to the remote server. You also need to periodically update your code to get changes that other people have made. 
  
-The smaller the changes, and the more frequently you check in code, the less hassle you will cause for yourself and other people. This is an example day's work:+The smaller the changes, and the more frequently you commit code, the less hassle you will cause for yourself and other people in the long run. This is an example day's work:
  
   * First thing, updated to get the latest code   * First thing, updated to get the latest code
Line 28: Line 28:
 =====SVN Basics===== =====SVN Basics=====
  
-I've set up the lirec svn repository with a dummy project called 'sandbox' that you can play with and break to your heart's content. This guide is written for the commandline version of svn, if you use Windows and prefer buttons to press, read through this document anyway and then have a look at [[http://tortoisesvn.tigris.org/|Tortoise SVN]]. I'll update this with a guide for using that as soon as I get myself a Windows install.+I've set up the lirec svn repository with a dummy project called 'sandbox' that you can play with and break to your heart's content. This guide is written for the commandline version of svn, if you prefer buttons to press, read through this document anyway as the concepts are the same, and then have a look at [[http://tortoisesvn.tigris.org/|Tortoise SVN]]. [TODO - update this with a guide for using that.]
  
 Firstly svn likes to know what editor you like to use so it can launch it to ask you to input comments for your code commits. Put this in your .bashrc: Firstly svn likes to know what editor you like to use so it can launch it to ask you to input comments for your code commits. Put this in your .bashrc:
Line 50: Line 50:
 <code>svn commit</code> <code>svn commit</code>
  
-This will pop up the editor you specified earlier. Add a nice informative message (you should always add a message saying why you've made the change). Save the file, and close the editor. If all is well, your change is now on the svn server.+This will pop up the editor you specified earlier. Add a nice informative message, save the file, and close the editor. If all is well, your change is now sent to the svn server. If, as sometimes happens to me, you realise at this point that you've forgotten something, close the editor without saving - svn will then ask you if you want to abort the commit.
  
 ====Adding files==== ====Adding files====
  
 <code>svn add filename</code> <code>svn add filename</code>
-Will add individual files, or recursively add files in a directory.+Will add individual files to the repository, or recursively add files in a directory.
  
-====Directories, moving, removing====+====Adding directories and moving files====
  
 <code>svn mkdir mydirectory</code> <code>svn mkdir mydirectory</code>
  • lirec/version_control_guide.txt
  • Last modified: 2009-02-09 11:01
  • by 81.188.78.24