[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Hints for the structure of the repository?

From: Jean-Baptiste Maillet <jb.maillet_at_free.fr>
Date: 2006-03-09 16:11:57 CET

See the recent discussion about external properties :

http://subversion.tigris.org/servlets/ReadMsg?list=users&msgNo=46108
And :
http://svnbook.red-bean.com/nightly/en/svn.advanced.props.html#svn.advanced.props.special.externals

Layout your repository like this (I'll skip the repose path/acces method) :

proja/trunk
proja/tags
proja/branches

projb/trunk
projb/tags
projb/branches

libc/trunk
libc/tags
libc/branches

libd/trunk
libd/tags
libd/branches

libe/trunk
libe/tags
libe/branches

In each trunk, put your code.

Now, create what I call "packages". This will just be containers, hodling
the parts that goes into your products. Create empty directries :

svn mkdir pck_proja/trunk
svn mkdir pck_proja/tags
svn mkdir pck_proja/branches

svn mkdir pck_projb/trunk
svn mkdir pck_projb/tags
svn mkdir pck_projb/branches

And now, let's use external properties :

svn co pck_proja/trunk pck_proja
cd pck_proja
svn propedit svn:externals .

This will launch your editor (external prop's should not be seen as files,
but rather metadata of a directory, thus the command svn propedit)
In the editor, type :
pck_proja/main proja/trunk
pck_proja/libc libc/tags/some_known_state
pck_proja/libd libd/tags/some_known_state
(save and exit)
svn ci . -m "Creating pakage proja"

And now for the fun part :
svn up

And this will checkout the trunk of proja + libc + libd in a single working
copy name pck_proja

Later on, let's says that the dev team in charge of libd realeases a new
stable state, that they tag release_2 :
cd pck_proja
svn propedit svn:externals
In the editor, type :
pck_proja/main proja/trunk
pck_proja/libc libc/tags/some_known_state
pck_proja/libd libd/tags/release_2
(save and exit)
svn ci . -m "Inegrating release 2 of libd"
svn up

And "voilą", all users of proja package will retrieve the new lib.

I run a repository holding 6 such packages, retrieving a few dozain of
modules.

You would be wise to play a bit with this on a trial repository/code base
before putting this in production.

(Think that instead of tags, you may use a syntax like :
pck_proja/main proja/trunk
pck_proja/libc -r123 libc/trunk
pck_proja/libd -r456 libd/trunk)

Jean-Baptiste Maillet

Quoting Ingo Maindorfer <Ingo.Maindorfer@sick.de>:

> Hi to all!
>
> We working in a small division and plan to set up subversion for our
> projects.
> Now I'm confused about the users@subversion.tigris.org
> We have some prjects, i.E PorjA and PorjB. The projects use some
> libraries: LibC, LibD and LibE.
> These libs ar coded by us and ProjA und ProjB should linked statically
> again these libs.
> The problem I have is, that PorjA use LibC in rev 1 and ProjB used it in
> rev 2. The same is true fpr LibD and LibE.
>
> Do you have any hints for solving that problem?
>
> Best Regards,
>
> Ingo

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Thu Mar 9 16:42:33 2006

This is an archived mail posted to the Subversion Users mailing list.