Hi all,

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)
          • solidworks
          • ros

        • motorcontroller- component 1.3
          • ...

        • imu - component 1.4
          • ...

    • arm - component 2
      • v
        • sensor1
          • reports
            • 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.


Thank you!

PS Sorry for such a huge post.