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

put on hold as off-topic by gnat, MichaelT, Bart van Ingen Schenau, GlenH7, jwenting Sep 18 at 12:43

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking us to recommend a tool, library or favorite off-site resource are off-topic for Programmers as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it." – gnat, MichaelT, Bart van Ingen Schenau, GlenH7, jwenting
If this question can be reworded to fit the rules in the help center, please edit the 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

4 Answers 4

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

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

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

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

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