[Zope-dev] Subversion repository layout

Jim Fulton jim at zope.com
Mon Apr 26 15:38:09 EDT 2004


The standard subversion repository layout is by project:

   proj1
        /trunk
        /branches
                 /br1
                 /br2
                 ...
        /tags
             /tag1
             /tag2
             ...

   proj2
        /trunk
        /branches
                 /br1
                 /br2
                 ...
        /tags
             /tag1
             /tag2
             ...

   ...

With this layout, when you want to checkout the main development
branch (aka head) of ZODB, you do:

   svn co svn+ssh://svn.zope.org/repos/ZODB/trunk ZODB

That is, you need to include "/trunk" at the end and provide "ZODB"
as the name of the output directory so as not to get a directory named
"trunk".  If you forget the "/trunk", you'll get a checkout that
includes copies of all of the various tags and branches, which could be
huge.

I suggest, instead to use the following layout:

   proj1
   proj2

   tags
       /proj1
             /tag1
             /tag2
             ...
       /proj2
             /tag1
             /tag2
             ...

   branches
           /proj1
                 /br1
                 /br2
                 ...
           /proj2
                 /br1
                 /br2
                 ...

With this layout, when you want to checkout the main development
branch (aka head) of ZODB, you do:

   svn co svn+ssh://svn.zope.org/repos/ZODB

which seems cleaner and less error prone.

The only disadvantage I see in this layout is that we couldn't have
projects named "tags" or "branches", but I could live with that.
Alternatively, we could have a top-level trunk directory:

   trunk
        /proj1
        /proj2

   tags
       /proj1
             /tag1
             /tag2
             ...
       /proj2
             /tag1
             /tag2
             ...

   branches
           /proj1
                 /br1
                 /br2
                 ...
           /proj2
                 /br1
                 /br2
                 ...

But that would require inclusion of a "/trunk" dead chicken
in checkouts:

   svn co svn+ssh://svn.zope.org/repos/trunk/ZODB

which seems unnecessary to me.

Thoughts?

Jim

-- 
Jim Fulton           mailto:jim at zope.com       Python Powered!
CTO                  (540) 361-1714            http://www.python.org
Zope Corporation     http://www.zope.com       http://www.zope.org



More information about the Zope-Dev mailing list