mergesvn

Monday, October 3rd, 2005 21:44
[personal profile] kpreid

mergesvn (not to be confused with svn merge) is a simple tool I wrote to resolve conflicts in Subversion working copies using the Mac OS X FileMerge application.

Given the name of a file with conflicts, it automatically finds the ".mine" and ".rN" files svn creates for a conflict. Saving the FileMerge window will overwrite the file; you must do svn resolved yourself. [Update: The above-linked version will run svn resolved for you.]

#!/usr/bin/env python

import sys, os

def find(line, label):
  if line.startswith(label):
    return line[len(label):]

for filename in sys.argv[1:]:
  cbase = mine = pbase = None
  for infoline in os.popen("svn info '%s'" % filename.replace("'", r"'\''")):
    infoline = infoline.rstrip("\r\n")
    cbase = cbase or find(infoline, "Conflict Current Base File: ")
    pbase = pbase or find(infoline, "Conflict Previous Base File: ")
    mine = mine or find(infoline, "Conflict Previous Working File: ")
  dir = os.path.dirname(filename)
  os.spawnlp(os.P_WAIT, "opendiff", "opendiff", 
    os.path.join(dir, cbase), 
    os.path.join(dir, mine), 
    "-ancestor", os.path.join(dir, pbase), 
    "-merge", filename)
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org