Code Focused

Backup on Build: Source Code Assurance

On VB author Joe Kunk looks into how an automated source code backup utility can provide a vital, extra level of protection in team-based projects.

Living on a lake in Michigan, I saw that most parents consistently required their children to take life jackets with them whenever they went out any kind of boat or watercraft. Many of those children were excellent swimmers; I knew that because I often swam with them. The parents required the life jackets because they wanted that extra assurance that if the unexpected happened, their children would be protected. Some recent events at my workplace made me feel that we really needed source code "life jackets", that is, extra protection for our source code in the event of unexpected mishaps.

Like most software development teams, we actively use source code management (SCM) software in order to share source code and provide a unified repository with regular backups. Our particular SCM software allows multiple developers to concurrently modify a source file, and the changes are merged when committing to or updating from the repository.

As the size of the developer team grew on a significant project, I starting receiving sporadic reports from developers that changes they were certain they had completed were no longer present in the current or prior versions within the source code repository. For a large development project on a tight timeline, this was a major problem. It didn't really matter if there was a problem with the SCM software or if it was just not being used properly, or even if the problem was imagined, we needed to be sure that none of our completed source code would be lost.

The project manager's solution was to instruct the developers to fully backup their entire source code folder before using the repository. I mean no disrespect to project managers or to developers, but honestly my thought on that recommendation was something akin to "Right, they will manually backup the entire application source code folder every time before they access the repository, sure they will...."

It was obvious that to truly ensure that no source code would be lost, we needed a custom utility that would meet the following requirements:

  • Source code should be backed up frequently without any developer interaction.
  • Source code backup of the most critical source files should be fast enough to be transparent.
  • Source code backup of the entire source folder should occur on a regular but less frequent basis.
  • Source code backup should optionally be compressed to minimize disk space usage.
  • Source code backup behavior should vary by project to accommodate the criticality of the particular project.
  • It should be easy to verify that all critical files are included in the most frequent backups.
  • A log of each step of the backup should optionally be available to validate proper operation of the utility.
  • There should be an automated unit test project to validate the backup utility's functionality.

The best way to provide a frequent and transparent backup is to add a post-build command for each project that runs the new backup utility only on a successful build. The backup becomes a "set it and forget it" feature of the project that ensures the source code backup is available when and if you need to recover any possible lost source code. This utility does not replace the need for source code management software; it simply provides an extra layer of protection, i.e., Source Code Assurance.

Tomorrow in Part 2 of this article, I will present the source code that implements all of the above requirements using Visual Basic 2010 and the .NET 4.0 framework. Note that although it is written in Visual Basic 2010, the backup utility can be used to back up any .NET project written in any language in any version of Visual Studio that supports custom post-build commands.

You can download the source code from the CodePlex site.

About the Author

Joe Kunk is a Microsoft MVP in Visual Basic, three-time president of the Greater Lansing User Group for .NET, and developer for Dart Container Corporation of Mason, Michigan. He's been developing software for over 30 years and has worked in the education, government, financial and manufacturing industries. Kunk's co-authored the book "Professional DevExpress ASP.NET Controls" (Wrox Programmer to Programmer, 2009). He can be reached via email at [email protected].

comments powered by Disqus


  • Microsoft's Lander on Blazor Desktop: 'I Don't See a Grand Unified App Model in the Future'

    For all of the talk of unifying the disparate ecosystem of Microsoft-centric developer tooling -- using one framework for apps of all types on all platforms -- Blazor Desktop is not the answer. There isn't one.

  • Firm Automates Legacy Web Forms-to-ASP.NET Core Conversions

    Migration technology uses the Angular web framework and Progress Kendo UI user interface elements to convert ASP.NET Web Forms client code to HTML and CSS, with application business logic converted automatically to ASP.NET Core.

  • New TypeScript 4.2 Tweaks Include Project Explainer

    Microsoft shipped TypeScript 4.2 -- the regular quarterly update to the open source programming language that improves JavaScript with static types -- with a host of tweaks including a way to explain why files are included in a project.

  • What's Top-Paying .NET Skill, In-Demand Language?

    New tech reports reveal the top-paying .NET skills and most in-demand programming languages in the Microsoft-centric developer landscape.

Upcoming Events