Currently we are using a process that tags a code base as production code in CVS and then normal development proceeds. Commits to trunk and new tags can occur but the prod tag cannot be changed until a production release, at which point the tag for the prod release becomes the new prod tag. So whenever the production code is needed, the prod tag need only be checked out. The prod tag is basically acting like the trunk head in a more traditional dev process.
We are now moving to SVN and the plan was to keep the current method. I was wondering what the best/standard way to maintain a production tag for a particular code base in SVN is? Is it possible to create a single tag that is never changed until a new production release, where the production code would be merged into the tag? The ability to have a history of production tags only would be nice too.
Bad news for you: you’ll have to change habits. Tags is Subversion are (conventionally) immutable, i.e relation URL-OF-TAG <-> Revision doesn’t (must not) change during lifetime of project.
You can:
svn cp REPO/TRUNK@R1 REPO/tags/PRODsvn rm REPO/tags/PROD & svn cp REPO/TRUNK@RN REPO/tags/PRODsvn cp REPO/TRUNK@R1 REPO/PRODor... REPO/branches/PRODsvn propset svn:externals . branches/PROD REPO/TRUNK@R1 & svn ci &svn upsvn propedit svn:externals .(in the root of trunk again) and replace (interactive, in text-editor)REPO/TRUNK@R1to new path (for easy automationpropeditcan be replaced bypropdel+propset)