Version control is a necessity for most, if not all, software development teams. When you work with a large number of individuals plugging away at the same code you just need some mechanism to channel access and preserve previous known-good states. Version control systems have evolved from simple check-in/check-out systems like Microsoft’s Delta and later SourceSafe to cloud-based peer to peer systems like Subversion and Mercurial, just to name a few. They all share mechanisms intended for a team of people working on code. So quite naturally it contains lots of features and elements that are not necessary for a single user or a two person team. As a matter of fact these features might even get in the way or add overhead for setup and maintenance that simply has no benefit.
So we decided to create a version control software for the single user or a two, maybe three person team. Here are the basic requirements we gave ourselves for this product:
- Native file formats: Files and versions are stored in their native and original format. No databases, no compression, no delta or change only storage. If the software is no longer available or the file has to be retrieved from a backup medium without it, you should be able to do that without any problem. We cannot emphasize enough how important that is. If everything fails, VersionRecall’s storage is just simple files.
- No API: We did not want to create yet another API and tie this version control to only a small handful of IDEs or editors. The software should work whether you use PrimalScript, PowerShell Studio, Notepad, PowerShell ISE, Notepad++, PrimalPad or anything else. Or a mix of these. If you wrote an IDE or editor and you WANT to use an API, of course we have one. But we hope you’d be hard pressed to find a reason to use it.
- Binary files: It should support text files as well binary files. Your images, photoshop files, SQL dumps or icons are just as important as your scripts. You can also setup repositories without versions to act as simple backup sites.
- Automatic: Users should not have to deal with check-in/check-out or submit unless they specifically want to. Auto-submit every 2 hours or everyday at 4:30 should be possible. VersionRecall’s service can run in the background and submit files for you adhering to your schedule. Or you can submit files manually as you need to. Or you can do both.
- Multiple destinations (1): Project A should be stored in a Dropbox folder to be shared with another fellow across the globe whereas Project B is stored to your in-house NAS. Of course you can have both open at the same time. Of course the unattended service works on both copying versions to the right locations of necessary.
- Multiple destinations (2): Where versions are created should be determined by availability, so at work you backup to a NAS and at home to a USB drive. Client site A to this NAS and Client site B to some other network location. If both locations are available and reachable, VersionDepot will update both.
- Preview: When you go through versions of a file your hardly ever know exactly which one you need. So when you open a version history of a script file we’ll show a syntax colored view of the file rather than just a date and a size.
- Merge: Many times you cannot just simply restore to a previous version. Doing so might destroy valuable local code you have already tested. Other sections of a file however need to go back to a previous state. That’s why VersionRecall comes with ScriptMerge, the only merge tool that colors popular script languages, including Windows PowerShell, VBScript, JScript and so forth. You can compare your local copy to any version stored in a repository and re-apply changes to your local copy as you need.
There are of course a number of additional features we didn’t even mention here. So go and check it out. Download a free, time limited community preview version and see if it fits your needs.
If you are at TechEd 2013 in New Orleans, please stop by the SAPIEN booth (2211) and chat with us.