Index: git_cl.py |
diff --git a/git_cl.py b/git_cl.py |
index 2ed721e83f4e26ac8f1819504032edbd58b73e15..9ea856fa41aea869429693586d08e31f4ef0e05f 100755 |
--- a/git_cl.py |
+++ b/git_cl.py |
@@ -8,6 +8,7 @@ |
"""A git-command for integrating reviews on Rietveld.""" |
import difflib |
+from distutils.version import LooseVersion |
import json |
import logging |
import optparse |
@@ -88,6 +89,13 @@ def RunGitWithCode(args): |
return 1, '' |
+def IsGitVersionAtLeast(min_version): |
+ PREFIX='git version ' |
+ version = RunGit(['--version']).strip() |
+ return (version.startswith(PREFIX) and |
+ LooseVersion(version[len(PREFIX):]) >= LooseVersion(min_version)) |
+ |
+ |
def usage(more): |
def hook(fn): |
fn.usage_more = more |
@@ -1714,7 +1722,8 @@ def CMDpatch(parser, args): |
parser.add_option('-f', action='store_true', dest='force', |
help='with -b, clobber any existing branch') |
parser.add_option('--reject', action='store_true', dest='reject', |
- help='allow failed patches and spew .rej files') |
+ help='failed patches spew .rej files rather than ' |
+ 'attempting a 3-way merge') |
parser.add_option('-n', '--no-commit', action='store_true', dest='nocommit', |
help="don't commit after patch applies") |
(options, args) = parser.parse_args(args) |
@@ -1776,6 +1785,8 @@ def CMDpatch(parser, args): |
cmd = ['git', 'apply', '--index', '-p0'] |
if options.reject: |
cmd.append('--reject') |
+ elif IsGitVersionAtLeast('1.7.12'): |
+ cmd.append('--3way') |
try: |
subprocess2.check_call(cmd, env=env, |
stdin=patch_data, stdout=subprocess2.VOID) |