# HG changeset patch # User Marcin Kuzminski # Date 1273946003 -7200 # Node ID 0c00fbaff55ac25a1f5ff9c76eb1853315a9fa36 # Parent 988477a05db6abc04802a0cbeb94a8e7c8b42f13 Fixed differ to properly extract filenames, and dates from diff file. and swaped order of columns with lines nr in diff html diff -r 988477a05db6 -r 0c00fbaff55a pylons_app/controllers/files.py --- a/pylons_app/controllers/files.py Sat May 15 19:05:13 2010 +0200 +++ b/pylons_app/controllers/files.py Sat May 15 19:53:23 2010 +0200 @@ -83,15 +83,19 @@ c.repo = hg_model.get_repo(c.repo_name) c.changeset_1 = c.repo.get_changeset(diff1) c.changeset_2 = c.repo.get_changeset(diff2) - - c.file_1 = c.changeset_1.get_file_content(f_path) - c.file_2 = c.changeset_2.get_file_content(f_path) + f1 = c.changeset_1.get_node(f_path) + f2 = c.changeset_2.get_node(f_path) + c.diff1 = 'r%s:%s' % (c.changeset_1.revision, c.changeset_1._short) c.diff2 = 'r%s:%s' % (c.changeset_2.revision, c.changeset_2._short) - d2 = unified_diff(c.file_1.splitlines(1), c.file_2.splitlines(1)) - c.diff_files = render_udiff(udiff=d2) + f_udiff = unified_diff(f1.content.splitlines(True), + f2.content.splitlines(True), + f1.name, + f2.name) + c.diff_files = render_udiff(udiff=f_udiff, differ='difflib') + print c.diff_files if len(c.diff_files) < 1: c.no_changes = True return render('files/file_diff.html') diff -r 988477a05db6 -r 0c00fbaff55a pylons_app/lib/differ.py --- a/pylons_app/lib/differ.py Sat May 15 19:05:13 2010 +0200 +++ b/pylons_app/lib/differ.py Sat May 15 19:53:23 2010 +0200 @@ -40,11 +40,18 @@ """Extract the filename and revision hint from a line.""" try: if line1.startswith('--- ') and line2.startswith('+++ '): - filename, old_rev = line1[4:].split(None, 1) - new_rev = line2[4:].split(None, 1)[1] - return filename, 'old', 'new' + l1 = line1[4:].split(None, 1) + old_filename = l1[0] if len(l1) >= 1 else None + old_rev = l1[1] if len(l1) == 2 else 'old' + + l2 = line1[4:].split(None, 1) + new_filename = l2[0] if len(l2) >= 1 else None + new_rev = l2[1] if len(l2) == 2 else 'new' + + return old_filename, new_rev, old_rev except (ValueError, IndexError): pass + return None, None, None def _highlight_line_difflib(self, line, next): diff -r 988477a05db6 -r 0c00fbaff55a pylons_app/templates/files/file_diff.html --- a/pylons_app/templates/files/file_diff.html Sat May 15 19:05:13 2010 +0200 +++ b/pylons_app/templates/files/file_diff.html Sat May 15 19:53:23 2010 +0200 @@ -39,11 +39,11 @@ %for x in diff['chunks']: %for y in x: + +
${y['old_lineno']}
+
${y['new_lineno']}
- - -
${y['old_lineno']}
${y['line']|n}