This is the SVN structure:
/trunk
+ ProjectA
+ ProjectB
+ Common
+ ProjectCore
+ References
ProjectA
and ProjectB
will deliver an end product and each can have their own release life cycle. Both projects make use of the same common libs from ProjectCore
.
ProjectCore
will also have its own release life cycle.
In ProjectA
and ProjectB
we want to refer to the libs of ProjectCore
. The ProjectCore-libs were added to SVN after succesful release life cycle of ProjectCore
. The ProjectCore-libs are added to the References
folder.
By doing this we release (freeze) our ProjectCore
builds, as a component which was fully tested. So we have multiple Core-lib releases:
- RLS_Core_1.00
- RLS_Core_1.01
- RLS_Core_2.00
- RLS_Core_3.00
Since we add the released libs (dll's) to SVN, ProjectA
and ProjectB
can refer to them.
What is the best approach to do this?
Approach 1
Add the ProjectCore
-libs to SVN in a new folder under References
named RLS_Core_X_XX
.
In the solution of ProjectA
and ProjectB
we add a reference to this unique folder: ./trunk/Common/References/RLS_Core_X_XX
.
Approach 2
Add the ProjectCore
-libs to SVN under one and the same folder References/Core
. In case there was an "older" version in it it will be a commit.
In the solution of ProjectA
and ProjectB
we add a reference to: ./trunk/Common/References/Core
. We use the SVN externals properties to define which revision of the Core-libs must be used for ProjectA
and ProjectB
.
In both approaches the developer explicitely needs to decide what Core-libs release he wants to use in his project soution. The rule is keep the same Core-libs unless you have to upgrade because of missing functionality. Approach 1: edit in project solution. Approach 2: edit in externals properties.
What approach is preferred?