My Dream App: A Visual Subversion Merge Tool

You’d give it two Subversion working copy directories, or two Subversion URLs in the same repository like:

http://yoursvn.com/svn/trunk

http://yoursvn.com/svn/branches/foo

The GUI would have two panes (left and right), one for each branch of code. The changes on each branch would be color-coded and easily previewable.

With a few clicks, you could tell it which changes you’d like to merge back and forth, depending on which branch they were made.

The changes would get rolled into one Changeset, which would get sent over the wire once you clicked Commit.

I’d pay $200+ per seat for something like this.

If you know of anything like this, please drop me a line. (Google yields little, I’ve tried Guiffy but it didn’t do quite what I was looking for as described above)

You can Bookmark this entry on del.icio.usbookmark this, digg this entrydigg this or check the See this page in technoraticosmos

4 Responses to “My Dream App: A Visual Subversion Merge Tool”

  1. Gravatar Icon 1 Josh 

    Hi Shanti,

    I found this blog post that may solve your problems.

    AccuRev and Merging Bliss:

    http://www.lily.org/blog/2007/01/accurev-and-merging-bliss.html

    Good luck.

    Josh

  2. Gravatar Icon 2 Shanti A. Braford 

    Josh - thank you for the pointer!!

  3. Gravatar Icon 3 Anton 

    This is just for Linux, but you could find a way to make it work similarly for Windows I guess:

    kdiff3 is the tool you’re looking for. It could work like this:

    svn -c 5023 “http://svnserver/branches/mybranch” –diff3-cmd mymerge

    mymerge would be something like this:

    mymerge
    —————————————————
    #!/bin/bash

    # This was the file modified by change’s author
    base=${10}
    base_label=${6}

    # This was the result of his change as the author saw it.
    changed=${11}
    changed_label=${8}

    # This is your own copy of the file, where you want the change merged in.
    working=${9}

    tmpfile=$(mktemp /tmp/svnmerge.XXXXXXXXXX)

    kdiff3 -L $base_label -L $changed_label -L “Your current version” $base $changed $working -o $tmpfile > /dev/null 2>&1
    cat $tmpfile
    rm $tmpfile
    ————————————————-

    This will open up 3 panes. 4 actually. On the left, the base revision, on the center, base revision after the change you want, on the right, your own version of the file. Below, the fourth pane with the result of your merge.

    You can click to select any of the 3 sources and changes are applied on the pane below. You can also manually enter any modification on the result (sometimes this is needed in order to adapt a change to your own version of the files).

    Hope this helps,

    Anton

  4. Gravatar Icon 4 Barry 

    I’m currently researching Subversion, but stumbled across your post. Have you seen WinMerge? From my basic reading of how working copy directories work it should at least provide a very intuitive way to do the merging, if not running the actual subversion commands required once you’ve done your merge.

    Have a look, http://winmerge.org/, its saved me hours when comparing heavily modified codebases with updated releases.

    Cheers


Shanti A. Braford blogs here.

If you really want to know, just read this.



  

Powered by FeedBlitz