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): ...@@ -57,11 +57,10 @@ class DiffFile(object):
""" """
def __init__(self, raw_diff): def __init__(self, raw_diff):
if '@@' not in raw_diff: self.children = []
self.binary = True self.binary = raw_diff and '@@' not in raw_diff
if self.binary or not raw_diff:
return return
else:
self.binary = False
self.header = raw_diff.split('@@')[0][:-1] self.header = raw_diff.split('@@')[0][:-1]
# Getting file path in header # Getting file path in header
self.path = self.header.split('====')[0][:-1].strip() self.path = self.header.split('====')[0][:-1].strip()
...@@ -84,7 +83,6 @@ class DiffFile(object): ...@@ -84,7 +83,6 @@ class DiffFile(object):
if not self.body.startswith('@@'): if not self.body.startswith('@@'):
self.body = os.linesep.join(raw_diff.strip().splitlines()[4:]) self.body = os.linesep.join(raw_diff.strip().splitlines()[4:])
# Now splitting modifications # Now splitting modifications
self.children = []
first = True first = True
tmp = [] tmp = []
for line in self.body.splitlines(): for line in self.body.splitlines():
...@@ -97,6 +95,9 @@ class DiffFile(object): ...@@ -97,6 +95,9 @@ class DiffFile(object):
tmp.append(line) tmp.append(line)
self.children.append(CodeBlock(os.linesep.join(tmp))) self.children.append(CodeBlock(os.linesep.join(tmp)))
def __nonzero__(self):
return self.binary or bool(self.children)
def __len__(self): def __len__(self):
return len(self.children) return len(self.children)
......
...@@ -217,8 +217,10 @@ class Git(WorkingCopy): ...@@ -217,8 +217,10 @@ class Git(WorkingCopy):
template = 'Index: %%s\n%s%%s\n' % ('=' * 67) template = 'Index: %%s\n%s%%s\n' % ('=' * 67)
for diff in out: for diff in out:
path = diff[:diff.index(' ')] path = diff[:diff.index(' ')]
# XXX: the following line fails if only the file mode changes try:
diff_dict[path] = template % (path, diff[diff.index('\n---'):]) 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 return stat_dict, diff_dict
def getModifiedTree(self, show_unmodified=False): 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