@@ -35,24 +35,25 @@ from mercurial import patch
from mercurial.mdiff import diffopts
from mercurial.bundlerepo import bundlerepository
from pylons.i18n.translation import _
from rhodecode.lib.compat import BytesIO
from rhodecode.lib.vcs.utils.hgcompat import localrepo
from rhodecode.lib.vcs.exceptions import VCSError
from rhodecode.lib.vcs.nodes import FileNode, SubModuleNode
from rhodecode.lib.vcs.backends.base import EmptyChangeset
from rhodecode.lib.helpers import escape
from rhodecode.lib.utils import make_ui
from rhodecode.lib.utils2 import safe_unicode
def wrap_to_table(str_):
return '''<table class="code-difftable">
<tr class="line no-comment">
<td class="lineno new"></td>
<td class="code no-comment"><pre>%s</pre></td>
</tr>
</table>''' % str_
def wrapped_diff(filenode_old, filenode_new, cut_off_limit=None,
@@ -205,25 +206,25 @@ class DiffProcessor(object):
return operation, filename, new_rev, old_rev
except (ValueError, IndexError):
pass
return None, None, None, None
def _parse_gitdiff(self, diffiterator):
def line_decoder(l):
if l.startswith('+') and not l.startswith('+++'):
self.adds += 1
elif l.startswith('-') and not l.startswith('---'):
self.removes += 1
return l.decode('utf8', 'replace')
return safe_unicode(l)
output = list(diffiterator)
size = len(output)
if size == 2:
l = []
l.extend([output[0]])
l.extend(output[1].splitlines(1))
return map(line_decoder, l)
elif size == 1:
return map(line_decoder, output[0].splitlines(1))
elif size == 0:
@@ -4,24 +4,25 @@
import re
import difflib
import logging
from difflib import unified_diff
from itertools import tee, imap
from mercurial.match import match
from rhodecode.lib.vcs.nodes import FileNode, NodeError
from rhodecode.lib.vcs.utils import safe_unicode
def get_udiff(filenode_old, filenode_new, show_whitespace=True):
"""
Returns unified diff between given ``filenode_old`` and ``filenode_new``.
try:
filenode_old_date = filenode_old.changeset.date
except NodeError:
filenode_old_date = None
@@ -140,25 +141,25 @@ class DiffProcessor(object):
return filename, new_rev, old_rev
return None, None, None
Status change: