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?

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

  • recursive shallow clone in git for deployment
  • Can I version a path in git whose name is operating system dependent
  • Set vim current working directory to the current project root or to the directory of the current file
  • Vim fugitive plugin does not recognise git archive on Windows
  • vim should auto commit on quit using git or fugitive(?)
  • vim NERDTree show .git folders and files
  • How to get Vim Ctrl-P plugin to index files inside a git submodule
  • git-commit vim-like syntax highlighting in emacs
  • 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.