| Index: webkit/tools/merge/diff3-wrapper.py
|
| ===================================================================
|
| --- webkit/tools/merge/diff3-wrapper.py (revision 8539)
|
| +++ webkit/tools/merge/diff3-wrapper.py (working copy)
|
| @@ -1,110 +1,110 @@
|
| -#!/bin/env python
|
| -# Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -"""Wrapper around BeyondCompare or kdiff3 so it can be used as svn's diff3-cmd
|
| -tool.
|
| -
|
| -The basic idea here is based heavily off of diffwrap.py at:
|
| -http://svnbook.red-bean.com/en/1.5/svn.advanced.externaldifftools.html#svn.advanced.externaldifftools.diff3.ex-1
|
| -"""
|
| -
|
| -import optparse
|
| -import os
|
| -import subprocess
|
| -import sys
|
| -
|
| -CYGDRIVE = '/cygdrive/'
|
| -CYGLEN = len(CYGDRIVE)
|
| -
|
| -# TODO(ojan): Eventually make this a cross-platform script that makes it easy
|
| -# to use different diffing tools (an enum of tools maybe?).
|
| -# The difficulty is that each tool has its own supported arguments.
|
| -def EnsureWindowsPath(path):
|
| - """ Returns a Windows-style path given a Windows path or a cygwin path.
|
| - """
|
| - if path.startswith(CYGDRIVE):
|
| - path = path[CYGLEN:CYGLEN + 1] + ':' + path[CYGLEN + 1:]
|
| - path = path.replace('/', '\\')
|
| - return path
|
| -
|
| -def GetPathToBinary(exe):
|
| - """ Try to find a copy of the binary that exists. Search for the full path
|
| - and then the basename.
|
| - """
|
| - if not os.path.exists(exe):
|
| - exe = os.path.basename(exe)
|
| - return exe
|
| -
|
| -def main(args):
|
| - """ Provides a wrapper around 3rd-party diffing tools so they can be used as
|
| - the diff3-cmd in svn merge.
|
| -
|
| - args: The arguments passed by svn merge to its diff3 tool.
|
| - """
|
| - # Grab the arguments from the end of the list since svn will add any other
|
| - # arguments provided before these.
|
| -
|
| - # The titles of the files being diffed.
|
| - title_mine = EnsureWindowsPath(args[-8])
|
| - title_older = EnsureWindowsPath(args[-6])
|
| - title_yours = EnsureWindowsPath(args[-4])
|
| -
|
| - # The paths to the files being diffed. These will be temp files.
|
| - mine = EnsureWindowsPath(args[-3])
|
| - older = EnsureWindowsPath(args[-2])
|
| - yours = EnsureWindowsPath(args[-1])
|
| -
|
| - # The command for which diff3 tool to use.
|
| - diff_tool = args[1]
|
| -
|
| - if diff_tool == "--use-beyondcompare":
|
| - exe = GetPathToBinary("c:/Progra~1/Beyond~1/BComp.exe")
|
| - cmd = [exe,
|
| - mine,
|
| - yours,
|
| - older,
|
| - mine,
|
| - '/reviewconflicts',
|
| - '/automerge',
|
| - '/leftreadonly',
|
| - '/rightreadonly',
|
| - '/ignoreunimportant',
|
| - '/lefttitle', title_mine,
|
| - '/righttitle', title_yours,
|
| - '/centertitle', title_older,
|
| - '/outputtitle', 'merged']
|
| - elif diff_tool == "--use-kdiff3":
|
| - exe = GetPathToBinary("c:/Progra~1/KDiff3/kdiff3.exe")
|
| - cmd = [exe,
|
| - older,
|
| - mine,
|
| - yours,
|
| - "--merge",
|
| - "--auto",
|
| - "--output", mine]
|
| - else:
|
| - # TODO(ojan): Maybe fall back to diff3?
|
| - raise Exception, "Must specify a diff tool to use."
|
| -
|
| - value = subprocess.call(cmd, stdout=subprocess.PIPE)
|
| -
|
| - # After performing the merge, this script needs to print the contents
|
| - # of the merged file to stdout.
|
| - # Return an errorcode of 0 on successful merge, 1 if unresolved conflicts
|
| - # remain in the result. Any other errorcode will be treated as fatal.
|
| - merged_file_contents = open(mine).read()
|
| -
|
| - # Ensure that the file doesn't use CRLF, in case the diff program converted
|
| - # line endings.
|
| - merged_file_contents.replace('\r\n', '\n')
|
| -
|
| - # For reasons I don't understand, an extra line break gets added at the end
|
| - # of the file. Strip it.
|
| - merged_file_contents = merged_file_contents[:-1]
|
| - print merged_file_contents
|
| - sys.exit(value)
|
| -
|
| -if '__main__' == __name__:
|
| +#!/bin/env python
|
| +# Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +"""Wrapper around BeyondCompare or kdiff3 so it can be used as svn's diff3-cmd
|
| +tool.
|
| +
|
| +The basic idea here is based heavily off of diffwrap.py at:
|
| +http://svnbook.red-bean.com/en/1.5/svn.advanced.externaldifftools.html#svn.advanced.externaldifftools.diff3.ex-1
|
| +"""
|
| +
|
| +import optparse
|
| +import os
|
| +import subprocess
|
| +import sys
|
| +
|
| +CYGDRIVE = '/cygdrive/'
|
| +CYGLEN = len(CYGDRIVE)
|
| +
|
| +# TODO(ojan): Eventually make this a cross-platform script that makes it easy
|
| +# to use different diffing tools (an enum of tools maybe?).
|
| +# The difficulty is that each tool has its own supported arguments.
|
| +def EnsureWindowsPath(path):
|
| + """ Returns a Windows-style path given a Windows path or a cygwin path.
|
| + """
|
| + if path.startswith(CYGDRIVE):
|
| + path = path[CYGLEN:CYGLEN + 1] + ':' + path[CYGLEN + 1:]
|
| + path = path.replace('/', '\\')
|
| + return path
|
| +
|
| +def GetPathToBinary(exe):
|
| + """ Try to find a copy of the binary that exists. Search for the full path
|
| + and then the basename.
|
| + """
|
| + if not os.path.exists(exe):
|
| + exe = os.path.basename(exe)
|
| + return exe
|
| +
|
| +def main(args):
|
| + """ Provides a wrapper around 3rd-party diffing tools so they can be used as
|
| + the diff3-cmd in svn merge.
|
| +
|
| + args: The arguments passed by svn merge to its diff3 tool.
|
| + """
|
| + # Grab the arguments from the end of the list since svn will add any other
|
| + # arguments provided before these.
|
| +
|
| + # The titles of the files being diffed.
|
| + title_mine = EnsureWindowsPath(args[-8])
|
| + title_older = EnsureWindowsPath(args[-6])
|
| + title_yours = EnsureWindowsPath(args[-4])
|
| +
|
| + # The paths to the files being diffed. These will be temp files.
|
| + mine = EnsureWindowsPath(args[-3])
|
| + older = EnsureWindowsPath(args[-2])
|
| + yours = EnsureWindowsPath(args[-1])
|
| +
|
| + # The command for which diff3 tool to use.
|
| + diff_tool = args[1]
|
| +
|
| + if diff_tool == "--use-beyondcompare":
|
| + exe = GetPathToBinary("c:/Progra~1/Beyond~1/BComp.exe")
|
| + cmd = [exe,
|
| + mine,
|
| + yours,
|
| + older,
|
| + mine,
|
| + '/reviewconflicts',
|
| + '/automerge',
|
| + '/leftreadonly',
|
| + '/rightreadonly',
|
| + '/ignoreunimportant',
|
| + '/lefttitle', title_mine,
|
| + '/righttitle', title_yours,
|
| + '/centertitle', title_older,
|
| + '/outputtitle', 'merged']
|
| + elif diff_tool == "--use-kdiff3":
|
| + exe = GetPathToBinary("c:/Progra~1/KDiff3/kdiff3.exe")
|
| + cmd = [exe,
|
| + older,
|
| + mine,
|
| + yours,
|
| + "--merge",
|
| + "--auto",
|
| + "--output", mine]
|
| + else:
|
| + # TODO(ojan): Maybe fall back to diff3?
|
| + raise Exception, "Must specify a diff tool to use."
|
| +
|
| + value = subprocess.call(cmd, stdout=subprocess.PIPE)
|
| +
|
| + # After performing the merge, this script needs to print the contents
|
| + # of the merged file to stdout.
|
| + # Return an errorcode of 0 on successful merge, 1 if unresolved conflicts
|
| + # remain in the result. Any other errorcode will be treated as fatal.
|
| + merged_file_contents = open(mine).read()
|
| +
|
| + # Ensure that the file doesn't use CRLF, in case the diff program converted
|
| + # line endings.
|
| + merged_file_contents.replace('\r\n', '\n')
|
| +
|
| + # For reasons I don't understand, an extra line break gets added at the end
|
| + # of the file. Strip it.
|
| + merged_file_contents = merged_file_contents[:-1]
|
| + print merged_file_contents
|
| + sys.exit(value)
|
| +
|
| +if '__main__' == __name__:
|
| main(sys.argv)
|
|
|
| Property changes on: webkit\tools\merge\diff3-wrapper.py
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|
|
|