Organizing a repository for a relatively large robotics project
I need your advice.
I am not very experienced in managing a source code management system, however I've used CVS, SVN and git for some time.
I am working on a relatively large academic robotics project, and we are going to have a bunch of components and sub-components each of which may have different types of source code files including C, C++, asm, Matlab, PCB boards, Solidworks files, plus LaTex files for papers.
I am given a directory in an existing SVN repository to keep source files there.
The way I am thinking to organize it is:
1) Arrange files/folders hierarchically, replicating the components/sub-components/sub-subcomponent structure. For each component I will have several folders corresponding to the source code, and tests. The following is what I am imagining as a possible sub-tree of this directory structure:
- reports - sources (LATEX) for papers related to the robot as a whole
- v - components of the robot (lower level components)
- base - component 1
- model - matlab and other source code for the robot model
- ros - ROS-code related to the base as a whole
- tests - tests which apply to the base as a whole
- v - components of the base (lower level components)
- hub - files related to the sensor hub (component 1.1)
- mc - C-code for the microcontroller
- tests - tests specific for the hub
- pcb - PCB-design
- ros - ROS driver for for the hub
- motorencoder - component 1.2
- swingencoder - swing encoders (alternative 2)
- motorcontroller- component 1.3
- imu - component 1.4
- arm - component 2
- confernce1- contains source latex files for a paper related to the arm component only
I introduced folder v to distinguish sub-component folders from source folders. For example, without v, model folder which contains MAtLAB model files coresponding to the base component would mix with the hub folder which corresponds to a sub-component of the base.
2) It seems that I cannot keep all the files in the SVN. SolidWorks files being binary should probably go somewhere else along with other similar binary "source" files. I need revision control for these files too. My current plan is to put them in on Dropbox. Datasheets and other relevant not-source fiels would also go there. But I am really unsure that this is a good idea. I would have to replicate the same directory structure in Dropbox as I have in SVN. This seems to be a drawback, as ensuring the consistency would require an extra effort.
It's a several year project and many people are involved. I really want to organize things well. I'd appreciate any advice and/or opinions on this.
PS Sorry for such a huge post.