On 5/12/11 1:39 AM, Markus Schaber wrote:
>
>>> I can commit files and directories from inside and outside the
>>> external directory in the same commit, as long as the external
>>> directory itself is not mentioned on the list of elements to commit.
>>
>> I'd consider that accidental and not count on it.
>
> Accidental. It seems that svn is more limited than I thought [1].
Remember that a more typical use of externals is to include components that have
their own separate release schedules. That is, you very often use tags as
targets at least as the including project nears its own release, and thus you
would not do any changes within that already-frozen component version
subdirectory. That might be different in early stages of development where
there is only one project using the component, but it's not something you should
just ignore since the usual way to manage them is to adjust the external target
to new tags as the component releases advance instead of expecting to commit in
the workspace it pulls in.
>
> I'm working on a SharpSNV based Subversion plugin for the CoDeSys IDE,
> and the project tree there has some logical restrictions which do not
> allow the user to choose a completely free layout. And although we need
> a mapping layer between the internal project tree and the subversion
> working copy[2], we want to keep the layout of the working copy tree at
> least similar to the project tree. Additionally, we want to enable the
> user to include subtrees via externals from other locations - for
> example, he can include a complex device tree via externals, and thus
> reference it from several projects (which contain different applications
> for similar hardware).
Including the subtrees makes sense, but letting multiple upper level projects
commit to them concurrently without being aware of that may not - especially if
you ever need to freeze the contents for one project while the others are still
changing.
> This sharing is not possible (or at least not with the same semantics)
> when using svn cp or other mechanisms.
They'll become independent branches that can diverge if you copy them. You'd
have to merge subsequent changes. That's probably worse than changing the
externals to point to a different tag when you want to pick up changes.
--
Les Mikesell
lesmikesell_at_gmail.com
Received on 2011-05-12 15:12:26 CEST