What are some of the good versioning systems for hardware projects? Is there equivalents of Google Code, CVS and SVN? Are such version control systems suitable for hardware projects involving PCB files, schematics..(even firmware code)?
|
|
Basically, all VCS systems can handle text & binary files gracefully. Of course you cannot merge binary ones. So as long as you are not using obsolete things like CVS you will be good with ANY system. |
|||||||||||||||
|
|
I've used Subversion with Altium before. It worked successfully, but at the time the lack of a diff tool made it less useful than version control is with code. I still think it was worth doing, even without diff capability. For firmware, Subversion or Git are both great. If you haven't used Git before, try Subversion first (even though it will make learning Git later harder). Altium has recently introduced a diff tool for schematics and PCBs, so I expect that Subversion would now be great, modulo the usual insanity that EDA vendors manage to build into their products. I've been meaning to try this out with the new diff tool; if I do, I'll try to remember to post a link to the repo here as an example. Update I tried this out, and I have to say that I'm a little underwhelmed with the Altium diff tool. It's functional, but the changes between board revs are substantial enough that it's not that useful, at least for me. Having seen this, I've decided to forget about the diff tool and just use Github. Here's the repo if you're interested: https://github.com/rascalmicro/pcb |
|||||||||||||||
|
|
I use VisualSVN Server + TortoiseSVN client, and it works just fine |
|||||
|
|
I use Google Code to host Super OSD, an electronics project of mine. I exclusively use the gEDA suite to manage my schematics and PCBs. Usefully, gEDA produces text files (which are mostly human readable, although it's difficult to interpret them) for the schematics, instead of binary blobs, like Eagle. For example, this is a diff between two schematics, one about 5 days old and one I just pushed. It's not particularly useful as you can't actually see much changes in text files, but it can show relative change - i.e. massive rework, vs. single component change - and it does let you go back to prior versions. |
|||||
|
|
Why not just use Google Code or a SVN repo? As this is a revision control system. There is no defined use for it. It is just incredibly useful for multiple developers and monitoring changes in source code. |
|||||||||||||||||||
|
|
The trick is to use something that works well with binaries. If you are using binaries a lot and sharing with others, it might be beneficial to implement a locking mechanism on those binary files. We've run into lots of issues with using Subversion with binary files and sharing with others that arose due to a lack of locking semantics and over-writing/merging binary files together. Adding a locking mechanism on those files removes human error in communication on who edited/changed the binary file. If you haven't used version control before, I recommend reading up on the different ways they work, and select one to meet your needs that you and/or your team can be comfortable with. Distributed version control systems provide many benefits over client-server systems, but tend to be more complicated to work with. |
|||
|
|
|
This is indeed a very good question. Since FPGAs fall into the category of "hardware", you might be interested in a version-control friendly project structure I propose for FPGA projects: http://www.saardrimer.com/fpgaproj/ I think the ideas and concepts could easily be applies to other hardware projects, and in general. (Comments on this proposal are very welcome, btw.) |
||||
|
|
|
Not a real version control system but Dropbox handles also revision of files an makes them available for different people on different OSes. - poor mans version control system ;) |
|||
|
|
|
I was at the Maker Faire in San Mateo this past weekend and met some reps from a new (to me) company called Up-Verter. They are basically building an electrical CAD tool that runs in "the cloud" (i.e. in your browser) and is conceptually built around collaboration, so should deal with merge/diff and the usual versioning stuff. I haven't tried it yet, and it looks a little bit green still (don't think you can actually do pcb layout yet, just schematics), but it's kind of intriguing. They claimed they could import Eagle files, which is a plus. I also talked to the Eagle reps at the Element 14 tent, and they indicated that they are moving to an XML format, which is kind of a big step toward making versioning of schematics and layout more plausible... all interesting advancements on this front! |
|||
|
|
I do use SVN with Altium integration for schematic capture: it works well. I must say that the diff viewer is better than having nothing, because my SchDoc files are binary, ie impossible to compare otherwise! I use the SVN client integrated in Altium Designer in parallel with TortoiseSVN with no problem. Altium's client is a bit limited in terms of SVN features. I do my "tags" with Tortoise. My opinion is based on Altium Designer 10 build 27009, and version 13.1 build 27559. |
|||
|
|
|
Avoid git. It doesn't handle large repositories well. And your repositories will get large unless you
|
|||||||||
|
|
I've been using multiple Mercurial (HG) repos (one per project) for this but as most Version Control Systems will experience, the repos are getting larger and larger. |
|||
|
|
|
You should try Boar. It is designed ground-up to handle huge files and repositories. 100 GB or more of binary data is no problem. |
|||
|
|