##// END OF EJS Templates
merge: also allow 'e' action with experimental.updatecheck=noconflict...
merge: also allow 'e' action with experimental.updatecheck=noconflict With experimental.updatecheck=noconflict set, if one checks out f3398f1f70a0 (tests: add execute bit and fix shbang line, 2015-12-22) and then try to check out its parent, hg will complain about conflicting changes, even though the working directory is clean. We need to also allow the 'e' action in merge.py. The 'e' action is used when moving to a commit where the only change to the file is to its executable flag, so it's just an optimized 'g' action. Doesn't seem to be worth writing a test for, since the existing setup in test-update-branches.t does not set any flags.

File last commit:

r27336:80214358 default
r31475:1b9b00ac default
Show More
diffhelpers.py
62 lines | 1.6 KiB | text/x-python | PythonLexer
# diffhelpers.py - pure Python implementation of diffhelpers.c
#
# Copyright 2009 Matt Mackall <mpm@selenic.com> and others
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
from __future__ import absolute_import
def addlines(fp, hunk, lena, lenb, a, b):
while True:
todoa = lena - len(a)
todob = lenb - len(b)
num = max(todoa, todob)
if num == 0:
break
for i in xrange(num):
s = fp.readline()
c = s[0]
if s == "\\ No newline at end of file\n":
fix_newline(hunk, a, b)
continue
if c == "\n":
# Some patches may be missing the control char
# on empty lines. Supply a leading space.
s = " \n"
hunk.append(s)
if c == "+":
b.append(s[1:])
elif c == "-":
a.append(s)
else:
b.append(s[1:])
a.append(s)
return 0
def fix_newline(hunk, a, b):
l = hunk[-1]
# tolerate CRLF in last line
if l.endswith('\r\n'):
hline = l[:-2]
else:
hline = l[:-1]
c = hline[0]
if c in " +":
b[-1] = hline[1:]
if c in " -":
a[-1] = hline
hunk[-1] = hline
return 0
def testhunk(a, b, bstart):
alen = len(a)
blen = len(b)
if alen > blen - bstart:
return -1
for i in xrange(alen):
if a[i][1:] != b[i + bstart]:
return -1
return 0