Hi,
I'm trying to setup a reasonable layout for two main projects that share
different libraries. Each project has its own release cycle and the
libraries are released together with the projects. There is no own
release shedule for the libraries. The libraries are developed together
with the projects, and should contain shareable code between the
projects. Until now, we worked only on one project, and the libraries
where subdirectories of the project:
projectA\
libraryA\
libraryB\
In this scneario we where able to modify project and library very easly.
Now we want to start the next project and we have two possibilities:
1.) share and branch the libraries into the new project
2.) make the libraries top level projects
The first solution will have the repetitive merge problem, while the
second solution requires own release shedules for all libraries, which
in both cases lead to less distribution to the shared libraries, since
there is more overhead and bookeeping involved.
I would like to have a solution, that I can specify a "branch follows
tip" policy for shared libraries. In the early development cycle for
example I set the libraryA in projectA to follow the tip development of
libraryA itself. All commits to the shared libraryA will be done to the
main trunk of libraryA. Later in the project phase, when I focus on
stability for the next release, I would like to freeze libraryA in its
current state and only allow local modifications (the normal branch
szenario) The developer is responsible to merge back the changes to the
main trunk of libraryA.
From reading the documentation of subversion I couldn't find such a
"branch follows tip" policy. Is this possible with subversion. How would
I structure such a repository.
1.) all projects/libraries into one trunk directory:
trunk\
projectA\
projectB\
libraryA\
libraryB\
The developer have to collect all necessary libraries to build a
project:
svn checkout svn:\\trunk\projectA localPath\projectA
svn checkout svn:\\trunk\libraryA localPath\projectA\libraryA
svn checkout svn:\\trunk\libraryB localPath\projectA\libraryB
2.) all libraries into one directory and shared versions of the library
into the project directories: Changes to the libraries must be merged
between the projects and the main trunk of the library
libraries\
libraryA\
libraryB\
projects\
projectA\
libraryA\ // copied from libraries\libraryA
libraryB\ // copied from libraries\libraryB
projectB\
libraryA\ // copied from libraries\libraryA
libraryB\ // copied from libraries\libraryB
The developer can checkout the project and has a complete build system
available, but must merge local changes to the library into the main
trunk.
Thanks for any ideas
Dirk
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Mon Nov 17 16:00:43 2003