Mercurial > kallithea
comparison 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 |
comparison
equal
deleted
inserted
replaced
1129:fe7fa9942015 | 1130:1cecc7db3106 |
---|---|
50 @LoginRequired() | 50 @LoginRequired() |
51 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', | 51 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
52 'repository.admin') | 52 'repository.admin') |
53 def __before__(self): | 53 def __before__(self): |
54 super(ChangesetController, self).__before__() | 54 super(ChangesetController, self).__before__() |
55 c.affected_files_cut_off = 60 | |
55 | 56 |
56 def index(self, revision): | 57 def index(self, revision): |
57 | 58 |
58 def wrap_to_table(str): | 59 def wrap_to_table(str): |
59 | 60 |
64 </tr> | 65 </tr> |
65 </table>''' % str | 66 </table>''' % str |
66 | 67 |
67 #get ranges of revisions if preset | 68 #get ranges of revisions if preset |
68 rev_range = revision.split('...')[:2] | 69 rev_range = revision.split('...')[:2] |
69 range_limit = 50 | 70 |
70 try: | 71 try: |
71 if len(rev_range) == 2: | 72 if len(rev_range) == 2: |
72 rev_start = rev_range[0] | 73 rev_start = rev_range[0] |
73 rev_end = rev_range[1] | 74 rev_end = rev_range[1] |
74 rev_ranges = c.rhodecode_repo.get_changesets(start=rev_start, | 75 rev_ranges = c.rhodecode_repo.get_changesets(start=rev_start, |
84 return redirect(url('home')) | 85 return redirect(url('home')) |
85 | 86 |
86 c.changes = OrderedDict() | 87 c.changes = OrderedDict() |
87 c.sum_added = 0 | 88 c.sum_added = 0 |
88 c.sum_removed = 0 | 89 c.sum_removed = 0 |
89 | 90 c.cut_off = False |
90 | 91 |
91 for changeset in c.cs_ranges: | 92 for changeset in c.cs_ranges: |
92 c.changes[changeset.raw_id] = [] | 93 c.changes[changeset.raw_id] = [] |
93 try: | 94 try: |
94 changeset_parent = changeset.parents[0] | 95 changeset_parent = changeset.parents[0] |
110 diff = differ.DiffProcessor(f_gitdiff, format='gitdiff').as_html() | 111 diff = differ.DiffProcessor(f_gitdiff, format='gitdiff').as_html() |
111 | 112 |
112 else: | 113 else: |
113 diff = wrap_to_table(_('Changeset is to big and was cut' | 114 diff = wrap_to_table(_('Changeset is to big and was cut' |
114 ' off, see raw changeset instead')) | 115 ' off, see raw changeset instead')) |
116 c.cut_off = True | |
117 break | |
115 | 118 |
116 cs1 = None | 119 cs1 = None |
117 cs2 = node.last_changeset.raw_id | 120 cs2 = node.last_changeset.raw_id |
118 c.changes[changeset.raw_id].append(('added', node, diff, cs1, cs2)) | 121 c.changes[changeset.raw_id].append(('added', node, diff, cs1, cs2)) |
119 | 122 |
120 #================================================================== | 123 #================================================================== |
121 # CHANGED FILES | 124 # CHANGED FILES |
122 #================================================================== | 125 #================================================================== |
123 for node in changeset.changed: | 126 if not c.cut_off: |
124 try: | 127 for node in changeset.changed: |
125 filenode_old = changeset_parent.get_node(node.path) | 128 try: |
126 except ChangesetError: | 129 filenode_old = changeset_parent.get_node(node.path) |
127 filenode_old = FileNode(node.path, '', EmptyChangeset()) | 130 except ChangesetError: |
128 | 131 filenode_old = FileNode(node.path, '', EmptyChangeset()) |
129 if filenode_old.is_binary or node.is_binary: | 132 |
130 diff = wrap_to_table(_('binary file')) | 133 if filenode_old.is_binary or node.is_binary: |
131 else: | 134 diff = wrap_to_table(_('binary file')) |
132 | |
133 if c.sum_removed < self.cut_off_limit: | |
134 f_gitdiff = differ.get_gitdiff(filenode_old, node) | |
135 diff = differ.DiffProcessor(f_gitdiff, format='gitdiff').as_html() | |
136 if diff: | |
137 c.sum_removed += len(diff) | |
138 else: | 135 else: |
139 diff = wrap_to_table(_('Changeset is to big and was cut' | 136 |
140 ' off, see raw changeset instead')) | 137 if c.sum_removed < self.cut_off_limit: |
141 | 138 f_gitdiff = differ.get_gitdiff(filenode_old, node) |
142 | 139 diff = differ.DiffProcessor(f_gitdiff, format='gitdiff').as_html() |
143 cs1 = filenode_old.last_changeset.raw_id | 140 if diff: |
144 cs2 = node.last_changeset.raw_id | 141 c.sum_removed += len(diff) |
145 c.changes[changeset.raw_id].append(('changed', node, diff, cs1, cs2)) | 142 else: |
143 diff = wrap_to_table(_('Changeset is to big and was cut' | |
144 ' off, see raw changeset instead')) | |
145 c.cut_off = True | |
146 break | |
147 | |
148 cs1 = filenode_old.last_changeset.raw_id | |
149 cs2 = node.last_changeset.raw_id | |
150 c.changes[changeset.raw_id].append(('changed', node, diff, cs1, cs2)) | |
146 | 151 |
147 #================================================================== | 152 #================================================================== |
148 # REMOVED FILES | 153 # REMOVED FILES |
149 #================================================================== | 154 #================================================================== |
150 for node in changeset.removed: | 155 if not c.cut_off: |
151 c.changes[changeset.raw_id].append(('removed', node, None, None, None)) | 156 for node in changeset.removed: |
157 c.changes[changeset.raw_id].append(('removed', node, None, None, None)) | |
152 | 158 |
153 if len(c.cs_ranges) == 1: | 159 if len(c.cs_ranges) == 1: |
154 c.changeset = c.cs_ranges[0] | 160 c.changeset = c.cs_ranges[0] |
155 c.changes = c.changes[c.changeset.raw_id] | 161 c.changes = c.changes[c.changeset.raw_id] |
156 | 162 |
178 filenode_old = FileNode(node.path, '') | 184 filenode_old = FileNode(node.path, '') |
179 if filenode_old.is_binary or node.is_binary: | 185 if filenode_old.is_binary or node.is_binary: |
180 diff = _('binary file') + '\n' | 186 diff = _('binary file') + '\n' |
181 else: | 187 else: |
182 f_gitdiff = differ.get_gitdiff(filenode_old, node) | 188 f_gitdiff = differ.get_gitdiff(filenode_old, node) |
183 diff = differ.DiffProcessor(f_gitdiff).raw_diff() | 189 diff = differ.DiffProcessor(f_gitdiff, format='gitdiff').raw_diff() |
184 | 190 |
185 cs1 = None | 191 cs1 = None |
186 cs2 = node.last_changeset.raw_id | 192 cs2 = node.last_changeset.raw_id |
187 c.changes.append(('added', node, diff, cs1, cs2)) | 193 c.changes.append(('added', node, diff, cs1, cs2)) |
188 | 194 |
190 filenode_old = c.changeset_parent.get_node(node.path) | 196 filenode_old = c.changeset_parent.get_node(node.path) |
191 if filenode_old.is_binary or node.is_binary: | 197 if filenode_old.is_binary or node.is_binary: |
192 diff = _('binary file') | 198 diff = _('binary file') |
193 else: | 199 else: |
194 f_gitdiff = differ.get_gitdiff(filenode_old, node) | 200 f_gitdiff = differ.get_gitdiff(filenode_old, node) |
195 diff = differ.DiffProcessor(f_gitdiff).raw_diff() | 201 diff = differ.DiffProcessor(f_gitdiff, format='gitdiff').raw_diff() |
196 | 202 |
197 cs1 = filenode_old.last_changeset.raw_id | 203 cs1 = filenode_old.last_changeset.raw_id |
198 cs2 = node.last_changeset.raw_id | 204 cs2 = node.last_changeset.raw_id |
199 c.changes.append(('changed', node, diff, cs1, cs2)) | 205 c.changes.append(('changed', node, diff, cs1, cs2)) |
200 | 206 |