HGMERGE_BINARY='hgmerge'
'''This script allows using Mercurial's hgmerge script with Subversion.
'''
import os
import sys
import shutil
import tempfile
def do_hgmerge(base, repo, local, merged):
'''Runs an interactive three-way merge using Mercurial's hgmerge script.
This function is designed to convert Subversion's four-file interactive merges
into Mercurial's three-file interactive merges so that hgmerge can be used for
interactive merging in subversion.
'''
temp_dir = tempfile.mkdtemp(prefix='svn_hgmerge')
local_name = local.split('/')[-1]
temp_file = temp_dir+'/'+local_name
shutil.copyfile(local, temp_file)
args = [HGMERGE_BINARY, temp_file, base, repo]
status = os.spawnvp(os.P_WAIT, HGMERGE_BINARY, args)
print status
if status == 0:
os.unlink(merged)
shutil.copyfile(temp_file, merged)
os.unlink(temp_file)
os.rmdir(temp_dir)
return status
if __name__ == '__main__':
status = do_hgmerge(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4])
sys.exit(status)