Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Our shop is about to release a major rewrite of our application. And, we are going to need to do bug fixes on versions out in the field while developing new features for the next version. Frankly, I'm a bit overwhelmed by the thought of trying to manage it all with the command line. Are there any really good Subversion clients that help manage branching and merging?

We have Windows and Linux computers available to us; so either platform is fine.

If there aren't any good tools that help idiot-proof branching and merging, what are the best tips you have for managing multiple branches?

share|improve this question
3  
Have you seen TortoiseSVN? –  Michael K May 18 '11 at 18:12
    
How does Tortoise help manage the merge process? I've always seen Tortoise as a rather fundamental checkout, commit tool. How's it best used for advanced topics? –  Amy Anuszewski May 18 '11 at 18:14
    
When you install tortoise, it makes actions available from within Windows explorer. Once you branch using the repo-browser from the Windows explorer context menu, merging a single development stream back into the trunk is handled by the commit action in visual studio. –  Carnotaurus May 18 '11 at 18:32
2  
@Amy: Branching is trivial. Merging requires thinking. In many cases, none of the changes conflict and the merge is trivial. In the rest of the cases, you have to think, and command-line or GUI doesn't matter much. –  S.Lott May 18 '11 at 18:42
    
Agreed. What I'm hoping for is some sort of tool that will help make it visually obvious which files in the branch have changed since the branch was made. I don't want to have to rely on Junior developers remembering to comment appropriately so that things can be sorted out by looking at the subversion logs. –  Amy Anuszewski May 18 '11 at 18:55
show 3 more comments

4 Answers

up vote 3 down vote accepted

The git-svn plugin works wonders. It supports very clean branching, merging, cherry-picking, and rebasing, both on the Git and SVN sides of the repository. (Do a git branch for your work and git svn rebase before you commit or just do a git svn branch.)

Moreover, it doesn't require a change in your process, nor does it require moving away from Subversion, and it can integrate very cleanly into the process - most of your team probably wouldn't even notice you've moved away from the SVN client.

share|improve this answer
    
Very interesting. I'm going to poke around a bit and see how this all would work for us. –  Amy Anuszewski May 18 '11 at 19:03
add comment

I use CollabNet Merge Client plugin for Eclipse. It's free and it really saves me a lot of time while merging. It's done in few steps, you can choose branches or changesets (via ranges or picking individually), filtering defaults are very sensible. And of course you can easily preview what you're going to merge before you do so.

share|improve this answer
add comment

Much as greyfade suggested git-svn you may want to look into adding HgSubversion to TortoiseHg as described on the THG wiki.

For many subversion users, Mercurial may be a better fit than git. The commands are likely to be more familiar, and if you already have TortoiseSVN installed, TortoiseHg will share the same overlays on Windows.

share|improve this answer
add comment

TortoiseHg. Oh, wait. That's not SVN.

Seriously though, and I realize this is a bit of a non-answer, Mercurial or Git could handle your needs much better (and as someone who's in the process of transitioning, I certainly understand the practical barriers to switching, but it's true enough to be worth mentioning).

share|improve this answer
2  
git-svn makes switching next to a no-op. –  Daenyth May 18 '11 at 18:53
    
@Daenyth - If you're going to be picky, branching in git is one git branch more than you need to do in Mercurial. *8') –  Mark Booth May 19 '11 at 10:43
    
@Mark Booth: How so? git checkout -b newbranch makes a new branch rooted from HEAD and then checks it out. How does mercurial do it in less than one command? –  Daenyth May 19 '11 at 15:41
    
@Daenyth - Hg has topological (unnamed) branches that occur naturally if a changeset has multiple children. If you update to a non head revision and commit a new change you create a new topological branch without having to explicitly create that branch. –  Mark Booth May 19 '11 at 18:16
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.