1 @@ -6,10 +6,21 @@ from cola import gitcmds
2 from cola import gitcfg
5 +class DiffSource(object):
6 + def get(self, head, amending, filename, cached, reverse):
7 + return gitcmds.diff_helper(head=head,
10 + with_diff_header=True,
15 class DiffParser(object):
16 """Handles parsing diff for use by the interactive index editor."""
17 def __init__(self, model, filename='',
18 - cached=True, reverse=False):
19 + cached=True, reverse=False,
22 self._header_re = re.compile('^@@ -(\d+),(\d+) \+(\d+),(\d+) @@.*')
23 self._header_start_re = re.compile('^@@ -(\d+) \+(\d+),(\d+) @@.*')
24 @@ -29,13 +40,11 @@ class DiffParser(object):
27 self.filename = filename
28 + self.diff_source = diff_source or DiffSource()
30 - (header, diff) = gitcmds.diff_helper(head=self.head,
31 - amending=self.amending,
33 - with_diff_header=True,
35 - reverse=cached or reverse)
36 + (header, diff) = self.diff_source.get(self.head, self.amending,
42 @@ -43,11 +52,10 @@ class DiffParser(object):
44 # Always index into the non-reversed diff
45 self.fwd_header, self.fwd_diff = \
46 - gitcmds.diff_helper(head=self.head,
47 - amending=self.amending,
49 - with_diff_header=True,
51 + self.diff_source.get(self.head,
56 def write_diff(self,filename,which,selected=False,noop=False):
57 """Writes a new diff corresponding to the user's selection."""