Mercurial > dotfiles
view unixSoft/bin/svn-hgmerge.py @ 378:20e47bc8eea9
hgrc: disable hg-git and hgsubversion
It hasn't been common for me to use either of these extensions for
some time, so just drop both of them from the main hgrc. Instead I'll
enable them as-needed in individual repositories.
author | Augie Fackler <durin42@gmail.com> |
---|---|
date | Thu, 09 Jun 2011 20:20:04 -0500 |
parents | c30d68fbd368 |
children |
line wrap: on
line source
#!/usr/bin/env python # ==================================================================== # Copyright (c) 2007 CollabNet. All rights reserved. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. The terms # are also available at http://subversion.tigris.org/license-1.html. # If newer versions of this license are posted there, you may use a # newer version instead, at your option. # # This software consists of voluntary contributions made by many # individuals. For exact contribution history, see the revision # history and logs, available at http://subversion.tigris.org/. # ==================================================================== 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. ''' # We have to use a temporary directory because FileMerge on OS X fails to save # the file if it has to write to a file in the CWD. As of now, there's no # obvious reason for why that is, but this fixes it. 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)