Hi everyone,
I've been asking, searching, rating and reading for about a week now trying to get a decent source control process up together and my major stumbling block has been references to projects in other repositories and managing third party libraries. This was compounded by conflicting views on whether to store binaries in the source control system
So, here are the main rules that I intend to apply (in no particular order):
- Keep all third-party libraries in a separate source control repository
- Store only the source of the library and checkout and build when you need it. If the source isn't available, just store the binaries
- When you need to use one of these external libraries, make it a part of your build script to checkout and build from source control (add some 'check for file' statements to your build scripts so that the library is only built on first checkout to save build time)
- When referencing a project outside of the current solution (i.e. one of your organisations 'Common' libraries, use the same method as using an external library but ALWAYS checkout a release branch!
- An exception to the above... If you need to add functionality to the common library, create a new branch and include a project reference into your solution. But don't forget to revert to the above method when the changes have been made and accepted back into the trunk
All comments and feedback welcome. Please be harsh! I need to get this right first time!