diff rhodecode/controllers/changeset.py @ 1130:1cecc7db3106 beta

fixed some limits in changesets and changelogs
author Marcin Kuzminski <marcin@python-works.com>
date Sun, 13 Mar 2011 13:38:07 +0100
parents ce4287e3e3c9
children 461f5acc7bbb
line wrap: on
line diff
--- a/rhodecode/controllers/changeset.py	Sun Mar 13 11:34:57 2011 +0100
+++ b/rhodecode/controllers/changeset.py	Sun Mar 13 13:38:07 2011 +0100
@@ -52,6 +52,7 @@
                                    'repository.admin')
     def __before__(self):
         super(ChangesetController, self).__before__()
+        c.affected_files_cut_off = 60
 
     def index(self, revision):
 
@@ -66,7 +67,7 @@
 
         #get ranges of revisions if preset
         rev_range = revision.split('...')[:2]
-        range_limit = 50
+
         try:
             if len(rev_range) == 2:
                 rev_start = rev_range[0]
@@ -86,7 +87,7 @@
         c.changes = OrderedDict()
         c.sum_added = 0
         c.sum_removed = 0
-
+        c.cut_off = False
 
         for changeset in c.cs_ranges:
             c.changes[changeset.raw_id] = []
@@ -112,6 +113,8 @@
                     else:
                         diff = wrap_to_table(_('Changeset is to big and was cut'
                                             ' off, see raw changeset instead'))
+                        c.cut_off = True
+                        break
 
                 cs1 = None
                 cs2 = node.last_changeset.raw_id
@@ -120,35 +123,38 @@
             #==================================================================
             # CHANGED FILES
             #==================================================================
-            for node in changeset.changed:
-                try:
-                    filenode_old = changeset_parent.get_node(node.path)
-                except ChangesetError:
-                    filenode_old = FileNode(node.path, '', EmptyChangeset())
+            if not c.cut_off:
+                for node in changeset.changed:
+                    try:
+                        filenode_old = changeset_parent.get_node(node.path)
+                    except ChangesetError:
+                        filenode_old = FileNode(node.path, '', EmptyChangeset())
 
-                if filenode_old.is_binary or node.is_binary:
-                    diff = wrap_to_table(_('binary file'))
-                else:
+                    if filenode_old.is_binary or node.is_binary:
+                        diff = wrap_to_table(_('binary file'))
+                    else:
 
-                    if c.sum_removed < self.cut_off_limit:
-                        f_gitdiff = differ.get_gitdiff(filenode_old, node)
-                        diff = differ.DiffProcessor(f_gitdiff, format='gitdiff').as_html()
-                        if diff:
-                            c.sum_removed += len(diff)
-                    else:
-                        diff = wrap_to_table(_('Changeset is to big and was cut'
-                                            ' off, see raw changeset instead'))
+                        if c.sum_removed < self.cut_off_limit:
+                            f_gitdiff = differ.get_gitdiff(filenode_old, node)
+                            diff = differ.DiffProcessor(f_gitdiff, format='gitdiff').as_html()
+                            if diff:
+                                c.sum_removed += len(diff)
+                        else:
+                            diff = wrap_to_table(_('Changeset is to big and was cut'
+                                                ' off, see raw changeset instead'))
+                            c.cut_off = True
+                            break
 
-
-                cs1 = filenode_old.last_changeset.raw_id
-                cs2 = node.last_changeset.raw_id
-                c.changes[changeset.raw_id].append(('changed', node, diff, cs1, cs2))
+                    cs1 = filenode_old.last_changeset.raw_id
+                    cs2 = node.last_changeset.raw_id
+                    c.changes[changeset.raw_id].append(('changed', node, diff, cs1, cs2))
 
             #==================================================================
             # REMOVED FILES    
             #==================================================================
-            for node in changeset.removed:
-                c.changes[changeset.raw_id].append(('removed', node, None, None, None))
+            if not c.cut_off:
+                for node in changeset.removed:
+                    c.changes[changeset.raw_id].append(('removed', node, None, None, None))
 
         if len(c.cs_ranges) == 1:
             c.changeset = c.cs_ranges[0]
@@ -180,7 +186,7 @@
                     diff = _('binary file') + '\n'
                 else:
                     f_gitdiff = differ.get_gitdiff(filenode_old, node)
-                    diff = differ.DiffProcessor(f_gitdiff).raw_diff()
+                    diff = differ.DiffProcessor(f_gitdiff, format='gitdiff').raw_diff()
 
                 cs1 = None
                 cs2 = node.last_changeset.raw_id
@@ -192,7 +198,7 @@
                     diff = _('binary file')
                 else:
                     f_gitdiff = differ.get_gitdiff(filenode_old, node)
-                    diff = differ.DiffProcessor(f_gitdiff).raw_diff()
+                    diff = differ.DiffProcessor(f_gitdiff, format='gitdiff').raw_diff()
 
                 cs1 = filenode_old.last_changeset.raw_id
                 cs2 = node.last_changeset.raw_id