Hallo, Hans-Christoph Steiner hat gesagt: // Hans-Christoph Steiner wrote:
First off, it would be great if you SVN users could explain the differences from CVS and how it will affect us. For example, I don't get the branch=folders stuff, that doesn't exist in CVS.
I think it's important that everyone reads the relevant chapters in the SVN book on branching, tagging, and repository layout: http://svnbook.red-bean.com/ (Chapters 2 and 4, of course the others are good to read as well.)
Basically the main conceptual difference between CVS and SVN in this area is, that branches and tags are simply copies. Want to make a tag? Use: "svn copy mystuff somewhere_else". Need a branch instead? Use: "svn copy somewhere_else". Oh, and the tag called "HEAD" in CVS is usually a directory called "trunk" in SVN.
In both cases "somewhere_else" will just be copies of "mystuff", a kind of snapshot. Tags then are snapshots, which you will never touch again, while branches are snapshots to work on further.
For the repository layout this means, that we should have everything, that could become a tag or branch of its own, in its own directory, so that copying becomes easy. Our externals for example might like to find Pd's headers in "../../../pd/src". Now with a layout like:
trunk/externals trunk/pd tags/... branches/...
creating a complete tag would be done like:
$ svn copy trunk tags/pd-all/pd-all-0.39
And you could create a workign branch for pd-extended easily:
$ svn copy trunk branches/pd-extended/pd-extended-0.39
Creating just a pd-release-tag also is possible:
$ svn copy trunk/pd tags/pd/pd-0.41-test2
however doing the same for externals:
$ svn copy trunk/externals tags/externals/pd-externals-for-0.41
will add a new directory level so that headers in "../../../pd/src" won't be found anymore. This has to be taken into account.
Ciao