You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by "Gourlay, Colin " <C....@hw.ac.uk> on 2006/12/06 09:20:50 UTC
Linking repositories
I have a situation where I have a main stream of development (the
application being developed) and a component that I see being used in a
variety of different applications because it is so generic.
I am not sure how to manage this in Subversion.
Is it good form to have a repo for the CRM and a different repo for the
application being developed and somehow link them - if that is possible.
Any advice is really appreciated.
Thanks
Re: Linking repositories
Posted by Ulrich Eckhardt <ec...@satorlaser.com>.
On Wednesday 06 December 2006 10:20, Gourlay, Colin wrote:
> I have a situation where I have a main stream of development (the
> application being developed) and a component that I see being used in a
> variety of different applications because it is so generic.
>
>
>
> I am not sure how to manage this in Subversion.
The 'normal' approach is to treat the component as a library and use it in
those other applications. Of course, this requires that the component is
properly versioned and doesn't have a volatile interface whos changes always
break the applications using it.
If you only have a handful of apps and the component is changing a lot, you
could also simply copy the component into the apps. This means that you will
need a "main" store for the component where it is developed and you will
manually have to update projects for those changes to take effect. This is
not the way that scales best, but it definitely is a way to go with few
applications using a common part. For this it is typically better to have
everything in one repository.
> Is it good form to have a repo for the CRM and a different repo for the
> application being developed and somehow link them - if that is possible.
Theoretically, the component and the apps using it can be separate. It isn't
necessary to keep them in separate repositories though. How to connect those
is a different thing: depending on how the component is installed, setting a
path in the application's local setup (using e.g. environment variables)
might be one way, binding it into the app's own source directory using
svn:external (see the book) might be another.
Uli
**************************************************************************************
Visit our website at <http://www.satorlaser.de/>
**************************************************************************************
Diese E-Mail einschließlich sämtlicher Anhänge ist nur für den Adressaten bestimmt und kann vertrauliche Informationen enthalten. Bitte benachrichtigen Sie den Absender umgehend, falls Sie nicht der beabsichtigte Empfänger sein sollten. Die E-Mail ist in diesem Fall zu löschen und darf weder gelesen, weitergeleitet, veröffentlicht oder anderweitig benutzt werden.
E-Mails können durch Dritte gelesen werden und Viren sowie nichtautorisierte Änderungen enthalten. Sator Laser GmbH ist für diese Folgen nicht verantwortlich.
**************************************************************************************
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Re: Linking repositories
Posted by Tim Hill <dr...@comcast.net>.
First, you don't _need_ a distinct repository for the component. In
general, its not necessary to use the repository itself as a unit of
organization; typically distinct repos are used for other reasons,
such as size, performance, separate servers and different security
domains. You can organize the tree of a single repo to support any
number of discrete projects with a little planning.
If you do choose to use a distinct repo then you will have to use
externals to pull the component source into each application. If you
use the same repo, you can just use branches.
There are several solutions to sharing a component, depending upon
how tightly the component is bound to the apps and on your overall
life-cycle process. One way is to use the "vendor branch" model (see
the Subversion book for details), in which the component is a
distinct project with its own release cycle etc. Then, you simply use
a branch to bring the desired version of the component into each
application. This approach has the advantage that you can choose when
each application upgrades to newer versions of the component
independently. However, you have to manually take action in each
dependent app to get the latest version when it released.
Another approach is to integrate at build time. That is, treat the
component as discrete at the source level but integrate during build.
This means that each build always gets the latest component, but also
means that they _must_ get the latest. This is also more suitable for
using externals to integrate the component source.
--Tim
On Dec 6, 2006, at 1:20 AM, Gourlay, Colin wrote:
> I have a situation where I have a main stream of development (the
> application being developed) and a component that I see being used
> in a variety of different applications because it is so generic.
>
> I am not sure how to manage this in Subversion.
>
> Is it good form to have a repo for the CRM and a different repo for
> the application being developed and somehow link them – if that is
> possible.