Note that there are some explanatory texts on larger screens.

plurals
  1. POSource code management strategies - branching, tagging, forking, etc. - for web apps
    text
    copied!<p>This posting here (<a href="https://stackoverflow.com/questions/156044/how-do-you-manage-database-revisions-on-a-medium-sized-project-with-branches">How do you manage database revisions on a medium sized project with branches?</a>) got me wondering how best to work on a web project using branching and deploying to dev, staging, and production (along with local copies).</p> <p>We don't have "releases" per se: if a feature is big enough to be noticeable, we push it live (after requisite testing/etc.), otherwise we batch a few up and, when it feels "comfortable", push those live. The goal is to never have a deploy more than once or twice a month or so because a constantly shifting site tends to make the users a bit uneasy.</p> <p>Here's how we do it, and it feels sort of brittle (currently using svn but considering a switch to git):</p> <ol> <li>Two "branches" - DEV and STAGE with a given release of STAGE marked as TRUNK <ul> <li>Developer checks out a copy of TRUNK for every change and creates a branch for it</li> <li>Developer works locally, checking in code frequently (just like voting: early and often)</li> <li>When Developer is comfortable it isn't totally broken, merge the branch with DEV and deploy to the development site.</li> <li>Repeat 3-4 as necessary until the change is "finished"</li> <li>Merge change branch with STAGING, deploy to stage site. Do expected final testing.</li> <li>After some period of time, mark a given revision of STAGE as the TRUNK, and push trunk live</li> <li>Merge TRUNK changes back down to DEV to keep it in sync</li> </ul></li> </ol> <p>Now, some of these steps have significant complexity hand-waved away and in practice are very difficult to do (TRUNK -> DEV always breaks) so I have to imagine there's a better way.</p> <p>Thoughts?</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload