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

Re: One repository but partial components

From: Ryan Schmidt <subversion-2006q2_at_ryandesign.com>
Date: 2006-05-31 14:54:26 CEST

On May 31, 2006, at 00:10, Hugo Alexandre Dias wrote:

> I'm trying to use SVN to devellop diferent versions of the same
> software to different clients with different modules. Each module
> is in one directory.
>
> Example: I want to have only one repository that i can manage the
> software for all my clients. Client A has online store but client B
> don't have it. So i don't want to take the store folder to client B.
>
> What should i do? how to configure it, what procedures to follow.
> If anyone can provide me a path for me to follow, I thank you in
> advance.

Sounds like you might want to consider basically this structure:

/repository/
        modules/
                store/
                        ...
                foo/
                        ...
                bar/
                        ...
                baz/
                        ...
                ...
        clients/
                clientA/
                        store <-- external pointing to modules/store
                        foo <-- external pointing to modules/foo
                        bar <-- external pointing to modules/bar
                clientB/
                        foo <-- external pointing to modules/foo
                        baz <-- external pointing to modules/baz
                ...

In fact, since you may want to work with branches and tags, you
should probably expand that a bit. If the modules are independent of
one another, then I recommend this structure for the modules
directory, so that you can tag and branch the individual modules
separately:

        modules/
                store/
                        trunk/
                                ...
                        branches/
                                some-store-branch/
                                        ...
                                ...
                        tags/
                                some-store-tag/
                                        ...
                                ...
                foo/
                        trunk/
                                ...
                        branches/
                                ...
                        tags/
                                ...
                bar/
                        trunk/
                                ...
                        branches/
                                ...
                        tags/
                                ...
                baz/
                        trunk/
                                ...
                        branches/
                                ...
                        tags/
                                ...
                ...

If modules are interrelated and dependant on having the same version
of the other modules, then the other way around is better, where you
tag or branch all modules at once:

        modules/
                trunk/
                        store/
                                ...
                        foo/
                                ...
                        bar/
                                ...
                        baz/
                                ...
                        ...
                branches/
                        some-branch/
                                store/
                                        ...
                                foo/
                                        ...
                                bar/
                                        ...
                                baz/
                                        ...
                                ...
                        ...
                tags/
                        some-tag/
                                ...
                        ...

Each client is probably independent of the other clients, so this
layout is probably best for the clients directory:

        clients/
                clientA/
                        trunk/
                                store <-- external
                                foo <-- external
                                bar <-- external
                        branches/
                                some-clientA-branch/
                                        ...
                                ...
                        tags/
                                ...
                clientB/
                        trunk/
                                foo <-- external
                                baz <-- external
                        branches/
                                ...
                        tags/
                                ...
                ...

In this case, the externals should point to a specific tag or branch
of the given module.

You can read about externals in the book:

http://svnbook.red-bean.com/en/1.2/svn.advanced.externals.html

Branching and tagging and merging is described here:

http://svnbook.red-bean.com/en/1.2/svn.branchmerge.html

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Wed May 31 14:55:55 2006

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.