On Mar 18, 2011, at 14:33, Greg Lindstrom wrote: > Traditionally, we set up a "trunk", "branches" and "tags" directory in > Subversion for each project. I have a good feel for creating branches, > making changes, merging back to the trunk and creating a tag. What I would > like advice on is how to migrate to production. Currently, after I make a > tag I will check it out to a "distros" directory (named the same as the tag) > and then change a pointer from the "old" distro to the new one. This way we > have a history of distros and it's easy to revert back if an error is found. > The problem I have with this setup is that is what Subversion is designed to > do for me (keep track of changes). > > An option I have been considering is to create another directory under the > project called "prod" that we check out to our production environments. Any > production tags would be merged into this branch and then we would "update" > the production environment with the new code. This would, I believe, give a > nice change history in the svn log. > > Another option is to create a "zip" file once a distribution tag is created. > The zip file would be placed out on the network for people to install as > needed. I don't care for this idea, but I know a large company that does it > and it seems to work. > > What advice can you give me? Is there a better way? What do I Google to > find out more? Where do I go for help? We've done a fairly good job on a > small scale, but we're growing and I want to get something THAT WORKS in > place.
Consider using SVN::Notify::Mirror, a perl module explained by its author here: http://svn.haxx.se/users/archive-2006-02/1148.shtml The theory of operation is that, whenever you want to deploy something to production, you simply create a tag following a certain naming scheme (that you can define). A post-commit hook in the repository runs SVN::Notify::Mirror which notices when new production tags are created and mirrors their contents to your production server.