Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Vinterstum
Jul 30, 2003

CommunityPancakeDay posted:


Currently we have three environments (development, testing and production) and a Vault repository for each environment. When developing on our local machines we check in/out from the dev repo. We then have a separate machine that we use to publish to test & production, so when stuff is ready to go out we have to manually add every single new and modified file to the right Visual Studio project on this machine, check it into the repository and then CruiseControl handles the building and publishing.

Not just weird and goofy, but also incredibly awkward.

The standard approach for this would just to have separate branches for the three environments (in the same repository), and just merge up from one to the next whenever appropriate. Which is a lot easier and less error-prone than doing this manually.

I'd advice your company to evaluate a few different solutions though. Subversion works fine for smaller setups, but really doesn't scale well with many devs and many branches (though it's getting better, apparently).

At work we switched to Perforce a couple of years ago (from Subversion), and have been really pleased with that. It's a commercial solution though. Mercurial also works really nicely if you want a free solution. And it's a distributed solution, which Perforce isn't, meaning you can do all the normal source control operations on just your local repository, then later push those changes to a remote one. On the other hand, Perforce has far better GUI tools. Hence: evaluate :)

Adbot
ADBOT LOVES YOU

Vinterstum
Jul 30, 2003

CommunityPancakeDay posted:

Is my thinking about this all wrong or am I just doing it wrong?

Parent and child branches makes sense conceptually, but you probably don't want your actual tree structure that way. Just look at the default SVN structure: The branches that are children of trunk aren't under trunk, they're under the "branches" sibling of trunk.

If you really want to make it clear that the testing and production branches are separate from the development branches, you can do something like this:

code:
/
    /development
         /trunk (has code)
         /branches
            /newFeature (has code)
    /testing (has code)
    /production (has code)
But as has been mentioned: If you are in any way going to be dealing with branches and it's a commercial environment with multiple developers... Go with Mercurial or Git (or Perforce if you can pay). There's absolutely no reason to use SVN (in this scenario). There's many things Mercurial/Git do better than SVN, but nothing SVN does better than Mercurial/Git (except for Windows GUI tools when it comes to Git, maybe. And, uh, taking up less disk space).

Vinterstum fucked around with this message at 19:52 on Aug 24, 2009

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply