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 16:16] davegriffithslirec:version_control_guide [2009-02-04 16:25] 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 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. +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. 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. 
  
 It won't do all this magically though. Some usage patterns need to be followed by developers to make sure that they don't tread on each others toes. It won't do all this magically though. Some usage patterns need to be followed by developers to make sure that they don't tread on each others toes.
Line 9: Line 9:
 =====Revision control usage pattern===== =====Revision control usage pattern=====
  
-This usage pattern is common to all revision control systems. You get the most out of version control if you make it part of your daily programming routine. +This usage pattern is common to all revision control systems, languages and types of project. You avoid causing other people problems and get the most out of version control if you make it part of your daily programming routine in this way
  
 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 commit code, the less hassle you will cause for yourself and other people in the long run. This is an example day's work:+The smaller the changes, and the more frequently you commit code, the better. This is an example day's work:
  
   * First thing, update to get the latest code from the server   * First thing, update to get the latest code from the server
   * Build the new code, check it works   * Build the new code, check it works
-  * Start working on a new feature as normal, edit - compile - test+  * Start working on a new feature as normal, edit - compile - test...
   * Finish working on the new feature   * Finish working on the new feature
-  * Update and test the latest code on your machine +  * Update and test the latest code on your machine with your new feature 
-  * Commit your new code with a message explaining what the new feature is+  * Commit your new code with a message explaining what has been added
   * Start working on the next feature   * Start working on the next feature
  
Line 35: Line 35:
   * Commit the new feature   * Commit the new feature
  
-The key point is that everyone is trying to make sure the version of the code on the server works as much of the time as possible. It's not the end of the world if the central version is broken, but it should be a priority to fix it, as it will hold people up from working.+The key point is that everyone is trying to make sure the version of the code on the server works as much of the time as possible. It's not a massive problem if the central version is broken, but it should be a priority to fix it, as it will hold people up from working
 + 
 +If you discover a problem with the current central version, send an email around to all the people working on it, as they should avoid updating until it's been fixed.
  
 =====SVN Basics===== =====SVN Basics=====
  • lirec/version_control_guide.txt
  • Last modified: 2009-02-09 11:01
  • by 81.188.78.24