Commit ec48a173 authored by Julien Muchembled's avatar Julien Muchembled

ERP5VCS: fix case when an empty file is deleted

parent f7f6de78
......@@ -57,11 +57,10 @@ class DiffFile(object):
"""
def __init__(self, raw_diff):
if '@@' not in raw_diff:
self.binary = True
self.children = []
self.binary = raw_diff and '@@' not in raw_diff
if self.binary or not raw_diff:
return
else:
self.binary = False
self.header = raw_diff.split('@@')[0][:-1]
# Getting file path in header
self.path = self.header.split('====')[0][:-1].strip()
......@@ -84,7 +83,6 @@ class DiffFile(object):
if not self.body.startswith('@@'):
self.body = os.linesep.join(raw_diff.strip().splitlines()[4:])
# Now splitting modifications
self.children = []
first = True
tmp = []
for line in self.body.splitlines():
......@@ -97,6 +95,9 @@ class DiffFile(object):
tmp.append(line)
self.children.append(CodeBlock(os.linesep.join(tmp)))
def __nonzero__(self):
return self.binary or bool(self.children)
def __len__(self):
return len(self.children)
......
......@@ -217,8 +217,10 @@ class Git(WorkingCopy):
template = 'Index: %%s\n%s%%s\n' % ('=' * 67)
for diff in out:
path = diff[:diff.index(' ')]
# XXX: the following line fails if only the file mode changes
diff_dict[path] = template % (path, diff[diff.index('\n---'):])
try:
diff_dict[path] = template % (path, diff[diff.index('\n---'):])
except ValueError:
pass # empty file is deleted or only file mode is changed
return stat_dict, diff_dict
def getModifiedTree(self, show_unmodified=False):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment