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 PCB 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 will now have to manually remove the changes and hope that I can remember how the design used to look. I hate my life.
Don’t Be Me, Backup Your Designs
I was an idiot, I didn’t back up my work. I own that. Don’t be like me and back up your work frequently.
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:
- All my work will be in a safe place, that’s priority number one.
- It’s easier to collaborate with other people on my team.
- I can compare versions of files and list the differences between versions, aka diffs.
- I can revert to a previous version of a file, which I dearly wish I could do today.
- I can add comments and labels to explain changes or track the project milestones.
- I can work on different aspects of a design in different branches without worrying that the changes will interfere with each other.
- I can subscribe multiple computers and choose when to sync changes on each one.
- I will have to consider and comment on the changes I’ve made as I check them in.
It’s important to backup your data to an external source, but remember that there is no cloud, it’s just someone else’s computer.
What to Look For in a Version Control System
If you have ever explored the world of version 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 design, 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 repos are generally not well suited for managing the contents of PCB or CAD files since they are primarily made for software. That being said, there are people out there making repos for PCB design.
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!
Version control is like insurance, you don’t know you need it until you need it. If I had been using PCB design software with integrated version control, then I would not be in my current situation. On that note, consider this rant done, I need to go rebuild my design.