Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I work with a few different web platforms, and my actual projects are typically quite small, and live within those platforms. The project files are scattered throughout the platform tree, which makes versioning a little awkward. I've been keeping one repository per platform, which gets out of hand quite fast...

The biggest problem I've had is with Eclipse + SVN, and the size of the project keeps growing, despite working with a fairly static platform/library, and only a handful of files for the given project at a time. In order for the project to work, I need them within the platform tree.

I'm wanting to move entirely to Git soon, so I'm just figuring out how I can keep the projects separate, yet keep the development environment working efficiently.

I've been looking into some sort of file sync (rsync, but real time?), since the solution makes sense in my head. I'll keep projects out of the tree, and use a file sync to ensure they are copied in real time. This keeps the projects we work on very small and quick, and keeps the actual platform working properly. However, I've been having troubles finding the correct software to make this work properly. Any suggestions in this area would also be appreciated...

Am I looking at this the wrong way? What are some other possible solutions? It seems like a common problem, yet I can't find much information on how to solve it.

Thanks!

share|improve this question
    
To give any more specific recommendation than what I have offered, I think a more concrete example (even if condensed and pseudo-named) is necessary. –  JustinC Feb 17 '12 at 16:23
add comment

1 Answer

If the app(s} share a common purpose, featureset, and theme; but vary slightly in how they are implemented at the core OS, DB, or other service provider level, it's often common to see source tree layouts organized something similar to this, where dependancies are properly isolated at the lowest sublevels. Certainly you may end up with a deeper or wider heirarchy depending on logical organization and physical components, but this is the gist of it:

  • [App Package]
    • [Platform Agnostic Subpackage]
      • [MSW x86 32 Platform Subpackage]
      • [MSW x64 Platform Subpackage]
      • [HPUX RISC 64 Platform Subpackage]
    • [Common Subpackage]
    • [Data Provider Agnostic Subpackage]
      • [Oracle Db Client Platform Agnostic Subpackage]
        • [Oracle Db Client for MSW x86 32 Subpackage]
        • [Oracle Db Client for MSW x64 Subpackage]
        • [Oracle Db Client for HPUX RISC 64]
      • [MySql Db Package]

With each project 'working copy' and 'build' pulling the parts it needs from source control, and leaving what it doesn't need behind.

share|improve this answer
    
Thanks! While this certainly helps with the big picture, it doesn't quite help me in this case. Additionally, the software (platform) does not cleanly organize sub components into top level directories. –  Adrian Schneider Feb 17 '12 at 1:17
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.