2

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?

Juan
  • 655
  • 6
  • 14
  • 3
    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 01 '11 at 09: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 02 '11 at 02:19

2 Answers2

11

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.

Newtopian
  • 7,201
  • 3
  • 35
  • 52
3

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.