Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I've just released my application to the public, and I'm working on an updated version, but I really think I should keep track of ALL the code changes. In case some functionality suddenly starts failing, with a history of all the changes I made it would be a lot easier to figure out where I messed it up, in case the problem wasn't already there.

The ideal would be to have a super fast computer with a huge hard drive and an application that automatically saves a backup of the whole project every time I change a line in the code, with some file comparison tool that would show me every difference between any two backed up projects, but that's not really possible for now.

So, do you know any application that makes it easy for a programmer to keep track of the changes made to the source code?

share|improve this question
I find it remarkable you've got to the point of releasing an application to the public and you don't seem to have heard of source control! – ozz Mar 1 '11 at 9:15
The first company I worked for after coming out of school had many products released for a few years in health care no less and were still managing source without SCM tools. That did not last long though after they hired me (and 3 or 4 of my class mates). Once started with proper SCM working without it feels like riding a race motorcycle with nothing more than a bathing suit. All is fine until your first crash. SCM will then feel like a full face helmet and thick leather overalls. – Newtopian Mar 2 '11 at 2:19
up vote 11 down vote accepted

any good Source Code Management system will do. Some also integrate work-item tracking such as bugs, issues, features etc. Take your pick...

Work item tracking

Many of these tools are integrated directly in the IDE making it seamless. If you are working with Eclipse check out Mylyn, usually ships with Eclipse directly. All you need is to configure access points to your code and work items and voila...

If you find too bothersome to configure these tools yourself there are many good online providers that will provide the services.

These lists are by no means exhaustive or best of breed, look around, try them, you'll eventually find one that suits your need.

If however you are looking for a proper logbook well depending on your field you may be stuck with a pen and paper system as it is sometimes the only legal way to do it. This said, it does not necessarily exclude other tools.

share|improve this answer

Yes, managing source code and keeping a history of changes is extremely important.

You should always be able to rebuild the last released version of the system, even while you're working on the next release version.

The classic example goes like this:

  • You release version 1.0 of your system
  • You are working on new features for version 1.1
  • A serious bug is found in version 1.0. You have to fix the bug and release a version 1.0a as soon as possible. To do this, you want to have the source code for 1.0 to work on, and not the development version heading for 1.1.
  • After you've released the bug fix, you want to return to work leading to version 1.1
  • When you have implemented the new features and you're ready to release 1.1, you want to be sure that the fix implemented in version 1.0a is there in the 1.1 code as well.

The tools that you need to manage these sorts of problems are called "revision control" or "version control" systems. See the Wikipedia article on revision control for more on revision control. Wikipedia also has a list of revision control software that will give you some options.

I would not want anything to track changes to every line of code as I write it. What I do want is to track every completed, tested change to achieve a particular defined goal. That's what revision control systems give you. After you've finished a particular task, you "check in" or "commit" your changes to the revision control system.

I am a huge fan of Mercurial. Many newer revision control systems, including Mercurial, are using a distributed approach where every developer has a copy of the repository and you can sychronise between them when you choose to. Once you get used to the idea, it's very powerful and I wouldn't be without it.

Do not waste any time on Microsoft Sourcesafe. It's close to dead. Team System is replacing it.

share|improve this answer

Your Answer


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.