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





_______________________________________________
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com

Reply via email to