views:

52

answers:

3

This is giving me major headaches! I'm having trouble even describing the problem in words.

Basically, I want to be able to manage a core library (coreLib) of Actionscript classes with the following requirements:

  • latest version is checked out when a new project starts.
  • a dev can make changes to the coreLib and then commit them back into the repo as project is written (maybe bug-fixes, added features, etc.)
  • the project contains a 'snapshot' of the coreLib so that, if returned to months later, it (as automatically as possible) has a copy of the coreLib that has guaranteed compatibility with the project.

I tried using externals but this can break compatibility going backwards. I'm currently exporting the coreLib into the project and its VC'd along with the project. I can't figure out how to get the changes back into the repo though, without just copying over the top and losing history.

Any advice?

+4  A: 

How exactly are svn:externals breaking compatibility going backwards? You can link svn:externals to a specific revision so that when you go back in the history your project is linked with the correct version of the library.

See also my answer in the question SVN: Release branch and externals?

Otherside
Interesting, I'll take a look at that.
dr_tchock
A: 

I think the simpliest approach would be to manage all ActionScript projects and your core library in one single repository.

splash
It is in one repo, not sure what your point is.
dr_tchock
Me neither. ;-) Sorry, I missed that you do that already. I think my rash thoughts went to the same direction as zellus.
splash
+2  A: 

You've got one 'path/folder' for your core library, that is used as trunk. Why not just copying your 'core library trunk' into your project folder? This is nothing else than a branch from your 'core library trunk', living in your project folder.

Developers may alter their core library branch without breaking any dependencies. Merging forth and back between 'core library trunk' and 'core library project branches' can be done without side effects.

-lib
-project1
 -lib(branch project 1)
-project2
 -lib(branch project 2)
zellus
Interesting, not sure how to achieve this though.
dr_tchock
@dr_tchock: trunk and branch directories are just naming conventions in subversion. Executing *svn cp* is nothing else than creating a branch. When you're setting up a new directory, just do a *svn cp 'core-lib-path' 'project1/lib/*.
zellus
Thanks for the clarification. Am testing this now - it looks like the best answer so far.
dr_tchock
Ok this is the way forward I think. It't not that different to how I was doing it before but I didn't realise how to merge it back in again.
dr_tchock