Recovering Files That You Have Lost - ResidentialSystems.com

Recovering Files That You Have Lost

Have you ever wished you could get back an older version of a file you had been working on? You know, maybe you want to add a paragraph about this or that and you know you already wrote it, but deleted it for some reason and now you'd like to have it back?
Author:
Publish date:

Have you ever wished you could get back an older version of a file you had been working on? You know, maybe you want to add a paragraph about this or that and you know you already wrote it, but deleted it for some reason and now you'd like to have it back?

Maybe your programmer made a change to the program for a particular project, and now it does not work and you would like to get back the old version of the file they changed or perhaps find out what they did to cause the problem. Or maybe you would like to know what your programmer actually did to the project code, but you have no easy way to tell. Or perhaps you would like to have two programmers work on the same project, but they tell you that this can't be done since they both need to get to the same file at the same time.

Well, a tool called version control can solve all of these problems. These tools are abundant and run the gamut from free to extremely expensive. It would behoove you to look into this technology because it can save your butt (and those of your programmers/employees) and it can save you money.

So, what is version control? It is, strictly speaking, automatically maintaining versions of a file. Commonly, in the software development industry, version control gets combined with configuration management, which is managing what versions of files get utilized in a particular build or product.

The benefit of using version control tools is often overlooked, especially by people working on projects where they are the only developer. Regardless of the size of development team, using even the most basic version control tool can help to improve the quality of your software and reduce your time to market. At the very least, version control is an extremely useful safety net.

It is also a software tool that compares changed files to unchanged files and stores the differences. The differences are stored in such a way as to allow the version control tool to re-create older versions by applying changes to the current (newest) version. The automatic nature of the tool means that you can ask it for a file that has been changed hundreds of times, and it can provide you with one very specific version from long ago, without hesitation.

Let's say you've got a file that contains some text. First, you provide this file to the version control tool, and in doing so, the version control system asks you for a comment describing the state of this file. You indicate that this is an "initial version," and the version control tool stores the file for you and remembers its contents as well as the comment. Next, someone changes the file by deleting a line of text and then checks that changed file into version control with the comment "removed line of text." Later, you use the file and notice that the line that they deleted is important, and you would like it back. Consult with the version control tool and it will tell you who changed it, what they say they did and what the change actually was. You can now get the original file you checked in easily, copy what you wanted to resurrect and insert it where it was in the current version. You can check it in and go on about your way, insulated from the changes someone else made.

Imagine this being source code. Imagine being able to identify exactly what changed without having to remember where the old code is, what you called the file, what you thought you changed, where you put it, what someone else may have done, and so on. Version control tools remove all that pain and make it very simple to control versions of files. Furthermore, this same capability can be setup such that you can take advantage of it wherever there is an Internet connection on almost any platform you can think of. Now you're talking control of versions.

So, maybe you're convinced and now wonder what this will cost you? Well, there is a version control tool called CVS (www.cvshome.org) that is, get ready for this, FREE! It is open source (meaning that a consortium of developers all develop code and contribute it back to the same pool of capability so that everyone benefits from their addition) and the only thing you will have to pay for is getting your IT professional to install it on a server, configure it and setup a client on your desktop/laptop. There are many, many other version control tools out there, but CVS is by far the best for what you get. The entry price for a professional off-the-shelf tool seems to start around $5,000 and goes up from there.

Some will tell you that open source is not a good idea because you have no control over what that consortium does, they choose to work on whatever they want to, generally will not fix what you want and they don't have technical support. Compare this with typical office suite software that you probably use everyday: you have no control over what they do, they choose to work on whatever they want to and generally will not fix what you want, and you will have to pay for technical support if you want anything fixed. I don't see the difference. It has been the case that the open-source solution is extremely responsive to requests to add features and resolve problems. Technical support exists (again free) with an e-mail list that is more responsive than almost any organization.

Other version control tools you may want to check into are SourceSafe (www.microsoft.com), Source Integrity (www.mks.com), PVCS (www.merant.com), Subversion (subversion.tigris.org), Arch (www.regexps.com) and CS-RCS Basic (www.componentsoftware.com). There are probably hundreds more, but who needs them now that you know about CVS?

CVS can be configured to lock files so that only one person can change it at a time or not which allows more than one person to work on the same file at the same time. It can even merge changes when more than one person has worked on the same file. You can view the changes and comments about changes from anywhere so you can monitor and verify what is going on. You can even have CVS notify you when a change is made to a file so you'll know what's going on with your projects. With all these features available for just the configuring of a server/client application, why not take advantage of a tool that simplifies your life while improving quality and saving money?

Mark Scovel (mark@axiomdesign.com) is CTO of Axiom Design Inc., an architectural electronic and lighting design firm in Pleasanton, California.

Related