diff rhodecode/templates/changeset/changeset.html @ 2995:32471bd1f4ee beta

Implemented generation of changesets based on whole diff instead of per file diff. That can give a big speed improvement for large changesets in repositories with large history. - improved handling of binary files - show renames of binary files - implemented new diff limit functionality - unify diff generation between hg and git - Added binary indicators for changed files, - added diff lib tests
author Marcin Kuzminski <marcin@python-works.com>
date Mon, 05 Nov 2012 19:57:29 +0100
parents 3853e37db97c
children ebe3e388bbb3
line wrap: on
line diff
--- a/rhodecode/templates/changeset/changeset.html	Fri Nov 09 19:33:20 2012 +0100
+++ b/rhodecode/templates/changeset/changeset.html	Mon Nov 05 19:57:29 2012 +0100
@@ -24,6 +24,12 @@
     <div class="title">
         ${self.breadcrumbs()}
     </div>
+    <script>
+    var _USERS_AC_DATA = ${c.users_array|n};
+    var _GROUPS_AC_DATA = ${c.users_groups_array|n};
+    AJAX_COMMENT_URL = "${url('changeset_comment',repo_name=c.repo_name,revision=c.changeset.raw_id)}";
+    AJAX_COMMENT_DELETE_URL = "${url('changeset_comment_delete',repo_name=c.repo_name,comment_id='__COMMENT_ID__')}";
+    </script>
     <div class="table">
 		<div class="diffblock">
 			<div class="code-header">
@@ -40,7 +46,7 @@
                     %endif
                 </div>
                 <div class="diff-actions">
-                  <a href="${h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='show')}"  class="tooltip" title="${h.tooltip(_('raw diff'))}"><img class="icon" src="${h.url('/images/icons/page_white.png')}"/></a>
+                  <a href="${h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='raw')}"  class="tooltip" title="${h.tooltip(_('raw diff'))}"><img class="icon" src="${h.url('/images/icons/page_white.png')}"/></a>
                   <a href="${h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='download')}"  class="tooltip" title="${h.tooltip(_('download diff'))}"><img class="icon" src="${h.url('/images/icons/page_white_get.png')}"/></a>
                   ${c.ignorews_url(request.GET)}
                   ${c.context_url(request.GET)}
@@ -100,37 +106,36 @@
 	                </div>
 	        </div>
 	        <span>
+            % if c.limited_diff:
+            ${_('%s files affected:') % (len(c.changeset.affected_files))}
+            % else:
 	        ${_('%s files affected with %s insertions and %s deletions:') % (len(c.changeset.affected_files),c.lines_added,c.lines_deleted)}
-	        </span>
+	        %endif
+            </span>
 	        <div class="cs_files">
-	                %for change,filenode,diff,cs1,cs2,stat in c.changes:
-	                    <div class="cs_${change}">
-                            <div class="node">
-                            %if change != 'removed':
-                                ${h.link_to(h.safe_unicode(filenode.path),c.anchor_url(filenode.changeset.raw_id,filenode.path,request.GET)+"_target")}
-                            %else:
-                                ${h.link_to(h.safe_unicode(filenode.path),h.url.current(anchor=h.FID('',filenode.path)))}
-                            %endif
-                            </div>
-		                    <div class="changes">${h.fancy_file_stats(stat)}</div>
-	                    </div>
-	                %endfor
-	                % if c.cut_off:
-	                  ${_('Changeset was too big and was cut off...')}
-	                % endif
+              %for FID, (cs1, cs2, change, path, diff, stats) in c.changes[c.changeset.raw_id].iteritems():
+                  <div class="cs_${change}">
+                        <div class="node">
+                            <a href="#${FID}">${h.safe_unicode(path)}</a>
+                        </div>
+                    <div class="changes">${h.fancy_file_stats(stats)}</div>
+                  </div>
+              %endfor
+              % if c.limited_diff:
+                <h5>${_('Changeset was too big and was cut off...')}</h5>
+              % endif
 	        </div>
 	    </div>
 
     </div>
-    <script>
-    var _USERS_AC_DATA = ${c.users_array|n};
-    var _GROUPS_AC_DATA = ${c.users_groups_array|n};
-    AJAX_COMMENT_URL = "${url('changeset_comment',repo_name=c.repo_name,revision=c.changeset.raw_id)}";
-    AJAX_COMMENT_DELETE_URL = "${url('changeset_comment_delete',repo_name=c.repo_name,comment_id='__COMMENT_ID__')}";
-    </script>
+
     ## diff block
     <%namespace name="diff_block" file="/changeset/diff_block.html"/>
-    ${diff_block.diff_block(c.changes)}
+    ${diff_block.diff_block(c.changes[c.changeset.raw_id])}
+
+    % if c.limited_diff:
+      <h4>${_('Changeset was too big and was cut off...')}</h4>
+    % endif
 
     ## template for inline comment form
     <%namespace name="comment" file="/changeset/changeset_file_comment.html"/>