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

Re: Organization Advise

From: Wesley J Landaker <wjl_at_icecavern.net>
Date: 2004-05-29 02:27:35 CEST

On Friday 28 May 2004 3:42 pm, Brad Rhoads wrote:
> Hi Everyone,
>
> I'm just getting started with subversion and would like some advise
> on how to best organize our repository. We have a fairly complex
> system consisting of the following:

I'd suggest that you read the Subversion Book
<http://svnbook.red-bean.com/>, particular the part on choosing a
repository layout
<http://svnbook.red-bean.com/svnbook/ch05s04.html#svn-ch-5-sect-6.1>,
and all of chapter 4, which goes over the issues in branching and
merging (since your desired branching structure may influence how you
want layout your repository).

> 1. Desktop app written in Delphi
> 2. Background processes (~ 7 different executables) written in C
> 3. Terminal based application written in C
> 4. Web interface written in Java/JSP
> 5. All of the above access an Oracle database. We script everything.
> There are some procs and tables that are only used by 1 of the above,
> but most are used by all.

Plus the ones you described, we get:

6. Easily be able to tag entire project.
7. Don't make every developer check out everything
8. Track patches for individual clients

If it's feasible to have a single developer check out just one of 1-5
and work on it with little or no dependancies on the other pieces, you
might be best suited to have a layout like this:

/repos
  /desktop_app
  /bg_proc[1-7]
  /terminal
  /web_interface
  /database
  /common_code

Where each subdir has it's own trunk/tag/branch subdirectories. The only
issues left are #7 and #8.

To handle #7, you could handle this pretty easily by adding:

/repos
  /global_tags
     /release-1.0.0
       /desktop_app
       /bg_proc[1-7]
       /terminal
       ...
     /release-1.0.2
       ...

Where to create each release, you would tag the individual modules, and
then collect those tags into a /global_tags/release-x.x.x/ directory
for each access/reference.

To handle #8, you can do something like the above, but just use a
branch, instead of a tag, named after each client:

/repos
  /clients_current
    /wes_landaker
      /desktop_app
      /bg_proc[1-7]
      ...

Anyway, that's just one method, and not necessarily "the best way to do
it", but the important thing to realize is that with subversion, it's
not only pretty easy to do all this stuff, but it's pretty easy to
reorganize your repos after-the-fact if you ever have a change in
requirements. =)

-- 
Wesley J. Landaker <wjl@icecavern.net>
OpenPGP FP: 4135 2A3B 4726 ACC5 9094  0097 F0A9 8A4C 4CD6 E3D2

  • application/pgp-signature attachment: signature
Received on Sat May 29 02:28:13 2004

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.