Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm new to version control (currently using SVN), but I don't understand how this helps developers. What does version control do that makes it useful in a development environment?

share|improve this question
4  
Just read Eric Sink's excellent Source Control HOWTO-series: ericsink.com/scm/source_control.html. For the rest, there's not much to answer here or discuss. –  Deckard May 9 '11 at 8:33
    
2  
Source control is one of those things that seems pointless until you need it. Then you realize that you can't do without it. Unfortunately, by then it's too late. Sort of like flood insurance, except I find source control to have far greater utility. –  Rein Henrichs May 9 '11 at 17:35
1  
@rahmanisback you want it just after you do File|New Project... you need it as soon as you have >1 developer on the project (my standard line is > 0 developers - and I believe this is more true now than ever) –  Murph May 9 '11 at 21:00
6  
Working without version control is kind of like removing the "Undo" command from the word processor you use to type your essay, or removing all erasers and correction fluids from your desk. –  rwong May 10 '11 at 3:23
show 4 more comments

3 Answers

up vote 19 down vote accepted

VisualSVN and TortoiseSVN are just UI clients for SVN server. SVN server is source / version control system. Version control system is key asset for any real development because it stores versions of you your source codes. When using version control system you keep only local copy of source codes. The main copy is stored on version control system and you commits changes to the system.

SVN allows:

  • easy sharing source codes among whole team through central repository
  • backuping your source codes and other resource files related to the project
  • keeping history how source codes changed
  • you can revert to any version kept in the history
  • you can compare changes between versions
  • you can see who made changes
  • you can lock the file for exclusive access so nobody else can work on the file
  • you can see who is working on any source code file or who locked the file
  • you can merge changes in case of parallel work on the same file
  • you can see comments associated with committed changes
  • with additional tools you can associate committed changes with tasks
  • you can label / tag version to easy find for example production releases
  • you can branch source code - create parallel versions where one branch can be considered as the main one and other can be used to test some special feature or to continue development of the new product version while fixes to the current production version are fixed in the main branch
  • you can merge changes between branches
  • etc.

VisualSVN is extension to Visual Studio which enables you using SVN repository directly from Visual Studio UI. TortoiseSVN is extension to Windows Explorer which enables you using SVN repository directly as you browse folders and files.

share|improve this answer
    
Thanks Sir @Ladislav Mrnka –  john ryan May 9 '11 at 9:35
    
+1. Haaa.. after using VCS for more than a decade, it's kind of really tough to answer 'why'. I mean it's just so obvious - but really hard to articulate really 'why' the way you have done it! Great answer. –  Dipan Mehta Mar 12 '13 at 14:16
    
I believe AnkhSVN makes also a killer job integrating SVN into Visual Studio. –  reno812 Mar 12 '13 at 14:54
add comment

Version control offers a number of things:

  • Archive your software so you can see the state it was in at previous points in time. Very useful for finding where a bug was introduced.
  • Allow multiple developers on the same project to share and coordinate their work while helping to guard against overwriting each others work.
  • Support indicidual and business continuity particularly through a central server that is protected and backed-up.

Its a minimum for any software development work beyond just tinkering to see what happens.

I always warn anybody who is working with a version control system for the first time that avoiding it is only inviting trouble. They WILL run into a problem that when they look back they WILL realize it would not have happened if they used the system.

share|improve this answer
add comment

The most productive developer is alone. A solitary developer never has to worry about coordinating with anyone else. But as soon as the project goes plural, there is overhead. And for every developer added to the team, the overhead gets worse. It is the job of the VCS to help manage this overhead and minimize the effects.

http://www.ericsink.com/vcbe/html/dvcs_private_workspace.html

share|improve this answer
4  
Even a lone developer needs version control. The VCS doesn't just "manage the overhead" as this quote implies. –  alroc Jul 23 '13 at 1:12
2  
Even a lone developer can realize they did something wrong a week ago and want to get the old code back. Even a lone developer might want to try out a large, complex set of refactors without risking the original codebase. –  Steven Burnap Jul 23 '13 at 3:27
    
I think the "backup" and "restore" aspects of version control are obvious to most, but it's not until you realize how version control helps reduce the overhead of collaboration that someone truly understands its value. –  Jace Browning Jul 23 '13 at 4:48
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.