- hard to for two people to work - you’ll have endless version conflicts
- slower to compile
- slower to find things - I have 281 components just in my LCR library - see attached
- harder to use parameter manager to manage part parameters
- all your eggs are in one basket
Project Directory Structure
When I set up projects, I use the same directory structure for each client:
C:\AltiumDesigns
—Client1
— Project1
— Project2, etc.
— Released (stores tags of all released Altium files)
— ManufacturingPackages (each release to a CM)
When I send files to a CM, I do the following:
a. Check in all the project files (SchDoc, PcbDoc, PrjPcb, OutJob, etc)
b. Verify that nothing is checked in that shouldn’t be there.
c. Tag all the project files into the Released directory
d. Store the manufacturing files into the ManufacturingPackages directory.
Library Directory Structure
For libraries, I use the following directory structure:
C:\AltiumLibraries
— Manufacturer1
— History (created by Altium, SVN ignored)
— Project Outputs for XX (created by Altium, SVN ignored)
— Project Logs for XX (created by Altium, SVN ignored)
— Manufacturer1.LibPkg
— Manufacturer1.SchLib
— Manufacturer1.PcbLib
— STEP (directory, contains STEP files for that manufacturer)
— Manufacturer2, etc.
Version Control
I store all libraries and project files in subversion. This makes it easier to undo changes, and also allows multiple engineers to work on a project. For Subversion, I use a cloud hosting provider, SVNrepository.com, it costs about $72 per year. I have a ton of stuff in subversion - I check in all my hardware, firmware, and software projects. There's also more hardware centric Subversion provider, Assembla, but I don't prefer their approach because they structure the directories like software projects, not hardware projects.