My situation: I have several components, which sometimes have changes to them, and are shared across a lot of different projects. Each project puts these in a subfolder ca
I believe part of the problem is that the release cycles for the shared components don't necessarily match the release cycles for the projects.
Shared components as described here have their own release cycle. In other words each one could be managed as a separate project (or perhaps the collection of them managed as a separate project) with a release/version number all its own.
Note that the svn:externals
definition can include a specific revision.
This allows each of the projects that makes use of a shared component to be developed against a specific release/revision of that shared component (or the collection of shared components), providing a stable set of dependencies for the project. Changes to the components won't break the projects because each project is looking at a specific revision of the components that isn't necessarily the HEAD
on the trunk
.
While this may seem like more work up front, I believe in the long run this practice provides a better change management process for this type of situation.