Changeset c9f8f5ac2344…
Parent 3167426739c0…
by
Changes to 2 files · Browse files at c9f8f5ac2344 Showing diff from parent 3167426739c0 Diff from another changeset...
@@ -12,6 +12,8 @@ import pango
import cStringIO
+from mercurial import cmdutil, util, patch, mdiff, error
+
from tortoisehg.util import hglib, hgshelve
from tortoisehg.hgtk import gtklib
@@ -173,7 +175,7 @@ if wfile in self.filechunks:
chunks = self.filechunks[wfile]
else:
- chunks = self.stat.read_file_chunks(wfile)
+ chunks = self.read_file_chunks(wfile)
for c in chunks:
c.active = True
self.filechunks[wfile] = chunks
@@ -191,7 +193,7 @@
def append_diff_hunks(self, wfile, checked):
'Append diff hunks of one file to the diffmodel'
- chunks = self.stat.read_file_chunks(wfile)
+ chunks = self.read_file_chunks(wfile)
if not chunks:
if wfile in self.filechunks:
del self.filechunks[wfile]
@@ -289,7 +291,7 @@ if wfile in self.filechunks:
chunks = self.filechunks[wfile]
else:
- chunks = self.stat.read_file_chunks(wfile)
+ chunks = self.read_file_chunks(wfile)
for c in chunks:
c.active = True
for i, chunk in enumerate(chunks):
@@ -331,3 +333,23 @@ fp.seek(0)
self.stat.clipboard.set_text(fp.read())
+ def read_file_chunks(self, wfile):
+ 'Get diffs of working file, parse into (c)hunks'
+ difftext = cStringIO.StringIO()
+ pfile = util.pconvert(wfile)
+ lines = self.stat.check_max_diff(pfile)
+ if lines:
+ difftext.writelines(lines)
+ difftext.seek(0)
+ else:
+ matcher = cmdutil.matchfiles(self.stat.repo, [pfile])
+ diffopts = mdiff.diffopts(git=True, nodates=True)
+ try:
+ node1, node2 = self.stat.nodes()
+ for s in patch.diff(self.stat.repo, node1, node2,
+ match=matcher, opts=diffopts):
+ difftext.writelines(s.splitlines(True))
+ except (IOError, error.RepoError, error.LookupError, util.Abort), e:
+ self.stat.stbar.set_text(str(e))
+ difftext.seek(0)
+ return hgshelve.parsepatch(difftext)
|
@@ -14,7 +14,7 @@ import gobject
import threading
-from mercurial import cmdutil, util, patch, mdiff, error, hg
+from mercurial import cmdutil, util, patch, error, hg
from mercurial import merge as merge_
from tortoisehg.util.i18n import _
@@ -721,6 +721,9 @@ gobject.timeout_add(50, status_wait, thread)
return True
+ def nodes(self):
+ return (self._node1, self._node2)
+
def set_file_states(self, paths, state=True):
for p in paths:
self.filemodel[p][FM_CHECKED] = state
@@ -966,26 +969,6 @@ lines.append('+++ b/%s\n' % pfile)
return lines
- def read_file_chunks(self, wfile):
- 'Get diffs of working file, parse into (c)hunks'
- difftext = cStringIO.StringIO()
- pfile = util.pconvert(wfile)
- lines = self.check_max_diff(pfile)
- if lines:
- difftext.writelines(lines)
- difftext.seek(0)
- else:
- matcher = cmdutil.matchfiles(self.repo, [pfile])
- diffopts = mdiff.diffopts(git=True, nodates=True)
- try:
- for s in patch.diff(self.repo, self._node1, self._node2,
- match=matcher, opts=diffopts):
- difftext.writelines(s.splitlines(True))
- except (IOError, error.RepoError, error.LookupError, util.Abort), e:
- self.stbar.set_text(str(e))
- difftext.seek(0)
- return hgshelve.parsepatch(difftext)
-
def update_check_state(self, wfile, partial, newvalue):
for fr in self.filemodel:
if fr[FM_PATH] == wfile:
|
Loading...