My two cents on version control (from the perspective of a pcb designer, i was on a panel about this couple of years ago)
1) version control is good
2) version control must be able to show differences between versions. Either textually and or graphically. For example : R3 changed value , c2 changed footprint, s1 was deleted. Q 4 was added. typically cad tools create ECO files to track this. They should be 'absorbed' into vc everytime a commit happens.
3) upon commit : allow to enter textual notes. The vc viewer shows the notes during browse
4) the vc backend must not interfere with the design process. It has to be transparent. What does this mean:
- it has to work off line and on line. Meaning : checkout to local storage, work , check in.
- locking mechanism to bar others from working on a file
- absolutely no external control windows required (there can be external ones, but there MUST be one inside the cad package). The vc must be driven from the cad menu toolbars. Just like you can do 'file-save' in the cad program you can do 'file-commit' and 'file-checkout' and update, and refresh and browse the repo.
It is ok to have an external control window for user settings / permissions and admin tasks, but the basic operations (checkin checkout ,refresh,, lock unlock) must be handled through the cad program
5) the vc 'host' needs to be installed by the cad program. We dont want to deal with it, we do t want to configure it. During install of the cad software show a me u :
Use version control ? Yes
Where do you want the local repository ? There
Where is the central repository ? There
Username ?
Password ?
Done
6) no cloud (or at least the option to toggle cloud or self hosted on a file server under my control.! I may not want my design files 'out there'. If i am contracted by a company to do some design work for them they mahve clauses blocking cloud storage. So i need to be able to connect to cloud or local storage. (This could be as simple as a shared drive on a computer, or a small NAS . Nas boxes are 100$ these days. Mount as drive letter , create folder , create vc trunk. Done.
And here is the big kicker:
If a real piece of vc software is needed : it must come with the cad program. We do not want to end up in 'version hell'. Version x of the cad program only works with version y of the vc. Version y of the vc is dependent on toolkit z ..
It is hell trying to hunt down everything needed to install it. Then all of a sudden there is an update of the vc and that breaks the cad program. We dont want that.
The vc is deployed at installation of the cad program , or the cad manufacturer must host the installers , clearly marked, what version of the cad they work with.
-personal note-
I have been using SVN for a while now and it works pretty well. I uses tortoisesvn to create a trunk in a folder on one of my NAS boxes. SVN can use both local or remote store. So in that aspect it is great.
People may scoff that SVN is old and doesnt offer many functionality , but it has the base pinned down. Checkin checkout locking and refresh is really all that is needed. We are not dealing with sourcecode here. We dont need browsers or editors. Only the cad software can visualise the files anyway. So the cad software has to deal with showing the diffs graphically.