[ZODB-Dev] zope.interface, zope.testing

Dmitry Vasiliev lists at hlabs.spb.ru
Fri Oct 15 09:03:37 EDT 2004


Tim Peters wrote:
> [Dmitry Vasiliev]
> ...
> 
>>'svn:externals' is like a soft links in Unixes I think, but I have no
>>experience with it too.
> 
> 
> Googling suggests some gotchas with externals, where directory A "externals
> in" a foreign directory E:
> 
> - While changes checked in to pieces of E from its natural home show up
>   in A, changes to pieces of E made *in* A don't propagate back to E's
>   natural home via svn commit made from A.  IOW, "svn commit" doesn't
>   recurse into A's externals.  Someone working in A has to explicitly
>   cd to each external'ed directory and svn commit from there.
> 
> It's hard to guess whether that's better or worse than copying.  I think
> there are only two people now who know *how*, e.g., ZODB gets stitched into
> Zope, Zope3, or ZopeX3; or zdaemon or ZConfig either, for that matter.  Most
> people have no idea, so check in changes from wrong checkouts.  It's very
> easy to lose such changes now (because it takes real effort not to, and
> because the only absolute *need* to is during a release crunch, the worst
> possible time to throw indefinitely delayed "guess and merge" tasks into the
> mix).  Using externals, I guess at least svn status would continue to remind
> them that their changes to externals are still unique to their personal
> checkout (until they explicitly cd to A's E and check in their changes from
> there).
> 
> - If the svn:externals entry for E doesn't hardcode a specific revision
>   number, then when A is copied (branched or tagged), the copy continues
>   to see changes made to E.
> 
> IOW, you don't get a snapshot of E when you make a snapshot of A.  If A
> originally referred to, e.g., external svn.zope.org/repos/main/ZODB/trunk,
> then copies of A also refer to ZODB trunk, not to the revision of ZODB trunk
> current at the time the copy was made.
> 
> For things like release tags, that would be a disaster.  Whoever made such a
> tag would have to be acutely aware of how all externals got stitched in, and
> change them in the tag to hardcode appropriate revision numbers, or replace
> the externals in release tags with copies.

Yes, Subversion documentation list all this gotchas:

     http://svnbook.red-bean.com/svnbook-1.0/ch07s03.html

But there is one more problem: need to hardcode repository access scheme 
in 'svn:externals', e.g. if you define 'svn:externals' for svn+ssh:// 
scheme you then won't access the externals through http:// scheme 
without ssh authorization.

 > But in all, still sounds less error-prone than what we do now.

Now then I look closer on 'svn:externals' I think "the technology is 
still very young". :-)

-- 
Dmitry Vasiliev (dima at hlabs.spb.ru)
     http://hlabs.spb.ru


More information about the ZODB-Dev mailing list