[Zope3-dev] The Zope Software Certification Program and Common Repository Proposal

Dominik Huber dominik.huber at perse.ch
Wed Feb 22 10:58:32 EST 2006


Stephan Richter wrote:
[...]
> 3.2. Layout
> ~~~~~~~~~~~
>
> Packages in the Common Repository *must* have the following layout:
>
>   repos/main/<NAMESPACE>.<PACKAGE>
>     branches/
>     tags/
>     trunk/
>       ... setup files ...
>       src/
>         <NAMESPACE>/
>           <PACKAGE>/
>             ... code ...
>     zscp/ [optional]
>       ZSCP.cfg
>       PUBLICATION.cfg [optional]
>       CERTIFICATIONS.xml [optional]
>       RELEASES.xml [optional]
[...]

Hi Stephan,

Excuse my delay, but a had no time until today to dive into your 
proposal seriously. I like it very much. Today Roger and I discussed the 
proposal and we got stuck with the following problem:

Sometimes we we want provide beside the __init__.py additional files on 
<NAMESPACE>-level, for example a configure.zcml that registers the 
api:rootModule or the first api:bookchapter of the documentation 
hierarchy for the namespace package foo.

  repos/zscp-test/foo # [1]
    branches/
    tags/
    trunk/
      ...
      src/
        foo/
          __init__.py
          configure.zcml
          foo-configure.zcml
          SETUP.cfg
          a/
          b/
          c/

Those files are fairly hard to handle if you like to arrange a new respository relying on such a namespace package and other package of the same namespace.

We propose to move those files in a dedicated named folder for example 
'configure' (like tests.py and ./tests/). All informations and 
registrations about the namespace should be located within this folder 
'configure'.

  repos/zscp-test/foo
    branches/
    tags/
    trunk/
      ...
      src/
        foo/
          __init__.py
          a/
          b/
          c/
          configure/
            __init__.py
            configure.zcml
            foo-configure.zcml
            SETUP.cfg

There are packages (foo.a, foo.b, foo.c) that exists physically in this
namespace-repository and there are packages (foo.x) that only uses the
namespace but exists in independent-tree of the repository or in a independent respository. 

   repos/zscp-test/foo.x
    branches/
    tags/
    trunk/
      ...
      src/
        foo/
          x/

The only dependency from foo.x to foo is that foo.x likes to register a 
api:bookchapter to the id foo.x. Therefore it requires the 
configure.zcml of foo.

Now should we create a new customer application. The project depends on 
a certain tags of the packages foo.a and foo.x. To provide a simple 
checkout mechanism for the developers it would be nice to arrange a new 
customer repository invoking those packages by svn:externals. If we have 
the separate namespace-related folder 'configure' it would be easy to do:

  repos/zscp-test/custommer
    branches/
    tags/
    trunk/
      ...
      src/
        foo/
          __init__.py
          -> svn:externals a url_to_foo.configure [2] 
          -> svn:externals a url_to_foo.a [3] 
          -> svn:externals x url_to_foo.x [4]
        customer/
          .. code ..

Otherwise we must include the whole foo package:
-> you cannot access the foo package from a tag
-> cannot select dedicated packages out of the foo package.

Do you have an other solutions for this problem?

Another smaller question: Is it intended to provide nested namespaces such as repos/main/<NAMESPACE>.<SUBNAMESPACE>.<PACKAGE>? This pattern is convenient if a few packages are tied together by their release cycles.

Regards,
Dominik

[1] svn://svn.tiks.org/repos/zscp-test
[2] ./foo/tags/foo-0.0.2/src/foo/configure
[3] ./foo/tags/foo-0.0.2/src/foo/a
[4] ./foo.x/tags/foo.x-0.0.1/src/foo/x







More information about the Zope3-dev mailing list