Getting back into the flow after a business trip is never easy, but my return this week has been particularly challenging. We have a time critical contract with our client, so everyone on the project is operating at >100%. I was staying on track until I opened my Board design software and saw that someone had made changes to my layout. They removed two of the four tines from my smart fork. These were significant changes. Bad changes. I felt my brain crash and was left with the mental equivalent of the blue screen of death.
Why the breakdown? Well, we were rushing to meet deadlines and had not set up any sort of change or version control. Instead, we were saving our files on a company file share, so the changes made overwrote any copy I had of the working design. No problem, I thought, we can go to a backup from a week ago and get the original version. Yeah, so IT had not been notified of the project share, and no backups were made. There is no record of the working design.
I was in a hurry and didn’t back up my PCB layout. Don’t be like me.
So, what is the best way to manage changes to a project? Sure, I can make manual copies of my design file from time to time. I can also ask IT to make regular backups of the entire project share, or I can automate backups with free or online tools. There are many options, unfortunately, none of them are that great for PCB designers.
In an ideal world, the best option would be to put the design into a version control system, and here’s why:
If you have ever explored the world of PCB version source control you know there are many solution providers to choose from including Git, Subversion, Mercurial and more. Some are more established than others, but most offer the same set of core features and provide the benefits listed above. Here’s the issue, the majority were originally designed for the software world, and aren’t great for hardware design programs.
For PCB layout, it is important that you find a system that will allow you to track changes between files and be able to view their differences as graphics. This site makes it pretty clear that tracking PCB design changes visually is superior to comparing lines of code. Here’s the catch, if you want this sort of version control, you’re going to have to export your designs as PDFs and use a PDF Diff program to track any changes. This means that you can kiss your metadata (material specs, layer specs, etc.) goodbye. Granted, this is better than having to start from scratch, but re-entering this data is a time sink. Even worse, if you weren’t the one who initially set the specifications, you’ll have to spend additional time tracking that person down.
In the software world, you can simply add and remove files from a repository, or "repo." Once a file is added to the repo any changes to it have to be checked in, or ‘committed’. As expected, these repository setups are generally not well suited for managing the contents of PCB or CAD files since they are primarily made for software.
If you’re like me and want to keep things easy, the simplest and most effective option is to choose PCB design software that comes with integrated version control. This will save you the time of having to bodge your way through ill-suited version control. PCB software, such as Altium Designer®, integrate version control into their software, which makes it easy enough for a mechanical engineer to use. Out of the box, it supports Subversion, CVS and other systems that provide the standard Microsoft SCC interface. Honestly, I need all the help I can get, so I’ve also started using Altium Vault® . My original designs might be long gone, but hey, at least my components are up-to-date!
PCB version control is like insuranc--you don’t know you need it until you need it. If I had been using PCB design software with PCB version control, then I would not be in my current situation.
Check out Altium Designer in action...
Version Control