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
    lesmikes...@gmail.com


Reply via email to