Before I know pieces of software called version control, I always make duplicates for changes in my project, mostly only major changes. Something like this :
Yumbaa-2009-07-12.zip
Why? For keeping track stable version of my code. Sometimes I get lost, and it is easier to get started from the latest stable version of my code than to undo the changes I’ve made.
And it is got worse when you need to work with someone else, imagine you need to tell the other person what files you have modified. Well, after 3-5 hours, I just no longer remember what files I’ve modified or added to the project, and it end up with the other person copy all the files in the project. So what will happen if your project get bigger and the network is very slow? Not good at all.
So, here the deal : there is pieces of software called version control or SCM that will handle those problems for you. So, what are you waiting for?
Anyway, what is version control? According wikipedia :
Revision control (also known as version control, source control or (source) code management (SCM)) is the management of changes to documents, programs, and other information stored as computer files. It is most commonly used in software development, where a team of people may be changing the same files. Changes are usually identified by a number or letter code, termed the “revision number”, “revision level”, or simply “revision”. For example, an initial set of files is “revision 1″. When the first change is made, the resulting set is “revision 2″, and so on. Each revision is associated with a timestamp and the person making the change. Revisions can be compared, restored, and with some types of files, merged
Basically, what version control do is tracking your files over time.
So, why we need version control?
- Undo System
You can go back to your latest stable version easier, without manually duplicated your project folder. Or if you mess up and forget the original files, version control can help you restore the files to whichever version you like.
- Synchronization
It’ll help you share the changes you’ve made, and you don’t need to remember what files you have changed. So, everyone in your project can stay up to date with the latest version.
- Tracking
Track changes you and everyone have made. When you make changes, you can put message why that changes happen, and who is the last person changes that files.
- Branching
If you create experimental changes, you can branch the project so it won’t bother the stable version of the project. Or if you want to make major upgrade and call that version 2 of your project, but you still want to support version 1, you can do that easy by branching your project.
List of popular version control :
-
Git is a free & open source, distributed version control system. Designed by Linus Torvalds, and being used in Linux kernel project.

Git resources
-
SVN or Subversion is one of the most popular version control. Google code use subversion for code distribution.

Subversion resources
-
Bazaar is distributed version control system and it is written in Python. Bazaar well known as version control that just work, has many workflow, so it can adapt the way you work.
Projects and organizations using Bazaar, such as : MySQL, Mailman, Launchpad, and the Linux Foundation

Bazaar resources
-
Mercurial is distributed version control and it is mainly implemented using the Python. Initially created to run in linux environment, but now has been ported to another operating system.

Mercurial resources
-
Darcs is distributed version control written in Haskell.

Darcs resources
Other Resources
- What is version control, wikipedia.
- List of version revision software, wikipedia.
Related posts:
- Set Different Settings for Development in Django
- Open Atrium, Open Source Project Management Software with Beauty in Mind
August 29th, 2009 | Comment(1)

There is a german platform http://www.demobereich.de – simple version control by subversion and ticketing by trac for free.
Comment by Robert Kummer — August 30, 2009 @ 5:13 am