svn: using vim to merge conflicts

I am trying see how merging in svn can be made easy.

This page mentions that external tools can be used for merging.
Can vim be used as the external merge tool?

  • Why am I able to create the same SVN branch twice?
  • should I commit .xcodeproj file in SVN?
  • Howt to tell emacs VC that I want a file to be managed by git not by svn when the file is under both version systems?
  • Hudson: how do i use a parameterized build to do svn checkout and svn tag?
  • Subversion client version confusion
  • SVNAdmin Create Repository URL not working
  • Some additional requirements:

    1. Files should be split horizontally/vertically to give a better view.
    2. Window titles should be set appropriately.

    e.g: as in
    enter image description here

  • Setting Up SVN:Externals with TortoiseSVN in Windows
  • What makes some version control systems better at merging?
  • Obstructed folders in Subversion
  • Is Unfuddle reliable?
  • “SVN Blame” plugin for VisualStudio
  • git svn - Can I use git and svn at the same time? no need interaction between git and svn
  • One Solution collect form web for “svn: using vim to merge conflicts”

    Step 1:

    Save the following script, e.g: merger.sh:

    #!/bin/sh
    #
    
    
    BASE=${1}
    THEIRS=${2}
    MINE=${3}
    MERGED=${4}
    WCPATH=${5}
    
    vimdiff $MINE $THEIRS -c ":botright split $MERGED" -c ":diffthis" -c "setl statusline=MERGED | wincmd W | setl statusline=THEIRS | wincmd W | setl statusline=MINE"
    

    Step 2:

    Edit .subversion/config and add following line:

    merge-tool-cmd = /path/to/merger.sh
    

    Step 3:

    When you get following options during svn merge command, select option ‘l‘.
    This is to launch external tool to resolve conflicts.

    Conflict discovered in 'main.h'.
    Select: (p) postpone, (df) diff-full, (e) edit,
            (mc) mine-conflict, (tc) theirs-conflict,
            (s) show all options: l
    

    Step 4:
    Now vim will be opened in diff mode with 3 files – mine, theirs and merged.
    Make the required changes in the merged file, and do save and exit (:wqa).

    Step 5:

    Now below options will appear again, select ‘r‘ (to accept the merged version) now.

    Select: (p) postpone, (df) diff-full, (e) edit,
                (mc) mine-conflict, (tc) theirs-conflict,
                (s) show all options: r
    
    Git Baby is a git and github fan, let's start git clone.