Changeset - 0c00fbaff55a
[Not reviewed]
default
0 3 0
Marcin Kuzminski - 16 years ago 2010-05-15 19:53:23
marcin@python-works.com
Fixed differ to properly extract filenames, and dates from diff file. and swaped order of columns with lines nr in diff html
3 files changed with 22 insertions and 11 deletions:
0 comments (0 inline, 0 general)
pylons_app/controllers/files.py
Show inline comments
 
@@ -80,21 +80,25 @@ class FilesController(BaseController):
 
        diff2 = request.GET.get('diff2')
 
        c.no_changes = diff1 == diff2
 
        c.f_path = f_path
 
        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')
 
    
 
    def _get_history(self, repo, node, f_path):
 
        from vcs.nodes import NodeKind
pylons_app/lib/differ.py
Show inline comments
 
@@ -37,17 +37,24 @@ class DiffProcessor(object):
 
        return string.replace('<', '&lt;').replace('>', '&gt;')
 

	
 
    def _extract_rev(self, line1, line2):
 
        """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):
 
        """Highlight inline changes in both lines."""
 
        
 
        if line['action'] == 'del':
pylons_app/templates/files/file_diff.html
Show inline comments
 
@@ -36,17 +36,17 @@
 
            %else:        
 
	            <table class='code-difftable'>
 
	            %for diff in c.diff_files:
 
		            %for x in diff['chunks']:
 
		                %for y in x:
 
		                    <tr class="line ${y['action']}">
 
		                        <td id="#${diff['filename']}_O${y['old_lineno']}" class="lineno old">
 
		                              <pre><a href="#${diff['filename']}_O${y['old_lineno']}">${y['old_lineno']}</a></pre>
 
		                        </td>		                    
 
		                        <td id="#${diff['filename']}_N${y['new_lineno']}"class="lineno new">
 
		                              <pre><a href="#${diff['filename']}_N${y['new_lineno']}">${y['new_lineno']}</a></pre>
 
		                        </td>
 
		                        <td id="#${diff['filename']}_O${y['old_lineno']}" class="lineno old">
 
		                              <pre><a href="#${diff['filename']}_O${y['old_lineno']}">${y['old_lineno']}</a></pre>
 
		                        </td>                        
 
		                       <td class="code">
 
		                           <pre>${y['line']|n}</pre>
 
		                       </td>
 
		                    </tr>
 
		                %endfor$
0 comments (0 inline, 0 general)