[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Organizing Projects

From: Nico Kadel-Garcia <nkadel_at_gmail.com>
Date: Mon, 21 Mar 2011 08:16:45 -0400

On Mon, Mar 21, 2011 at 6:16 AM, Ryan Schmidt
<subversion-2011a_at_ryandesign.com> wrote:
> 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.

It might be much simpler to set up a "deploy" directory with
"svn:extern" set to point to your production tag. This allows you to
do an "update" of that working copy as part of any procedure you wish,
even "post-commit", and deploy that. Just make sure that the
svn:extern is stable and points to well defined targets. It doesn't
even have to live in the same Subversion repository this way.

>> 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.

E-e-e-e-e-w-w-w-w-w-w-w.

>> 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.

Which involves creating unnecessary perl modules. A simple svn:extern
allows tracking of the production release itself.
Received on 2011-03-21 13:17:20 CET

This is an archived mail posted to the Subversion Users mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.