Mercurial > kallithea
comparison kallithea/controllers/changeset.py @ 6193:dc4cb1d4e084
diff: rework data structure used by diff_block.diff_block (used for changeset diffs)
Make it a pure reusable function that also can replace diff_block_simple.
Improve code clarity by using Python tuples for tuples.
fid and url_fid are just shuffled around - not cleaned up for now.
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Tue, 06 Sep 2016 00:51:18 +0200 |
parents | 72acb38da217 |
children | 12ce88eece5f |
comparison
equal
deleted
inserted
replaced
6192:72acb38da217 | 6193:dc4cb1d4e084 |
---|---|
267 inlines = ChangesetCommentsModel() \ | 267 inlines = ChangesetCommentsModel() \ |
268 .get_inline_comments(c.db_repo.repo_id, | 268 .get_inline_comments(c.db_repo.repo_id, |
269 revision=changeset.raw_id) | 269 revision=changeset.raw_id) |
270 c.inline_comments.extend(inlines) | 270 c.inline_comments.extend(inlines) |
271 | 271 |
272 c.changes[changeset.raw_id] = [] | |
273 | |
274 cs2 = changeset.raw_id | 272 cs2 = changeset.raw_id |
275 cs1 = changeset.parents[0].raw_id if changeset.parents else EmptyChangeset().raw_id | 273 cs1 = changeset.parents[0].raw_id if changeset.parents else EmptyChangeset().raw_id |
276 context_lcl = get_line_ctx('', request.GET) | 274 context_lcl = get_line_ctx('', request.GET) |
277 ign_whitespace_lcl = get_ignore_ws('', request.GET) | 275 ign_whitespace_lcl = get_ignore_ws('', request.GET) |
278 | 276 |
281 diff_limit = self.cut_off_limit if not fulldiff else None | 279 diff_limit = self.cut_off_limit if not fulldiff else None |
282 diff_processor = diffs.DiffProcessor(_diff, | 280 diff_processor = diffs.DiffProcessor(_diff, |
283 vcs=c.db_repo_scm_instance.alias, | 281 vcs=c.db_repo_scm_instance.alias, |
284 format='gitdiff', | 282 format='gitdiff', |
285 diff_limit=diff_limit) | 283 diff_limit=diff_limit) |
286 cs_changes = OrderedDict() | 284 file_diff_data = OrderedDict() |
287 if method == 'show': | 285 if method == 'show': |
288 _parsed = diff_processor.prepare() | 286 _parsed = diff_processor.prepare() |
289 c.limited_diff = False | 287 c.limited_diff = False |
290 if isinstance(_parsed, LimitedDiffContainer): | 288 if isinstance(_parsed, LimitedDiffContainer): |
291 c.limited_diff = True | 289 c.limited_diff = True |
293 st = f['stats'] | 291 st = f['stats'] |
294 c.lines_added += st['added'] | 292 c.lines_added += st['added'] |
295 c.lines_deleted += st['deleted'] | 293 c.lines_deleted += st['deleted'] |
296 filename = f['filename'] | 294 filename = f['filename'] |
297 fid = h.FID(changeset.raw_id, filename) | 295 fid = h.FID(changeset.raw_id, filename) |
296 url_fid = h.FID('', filename) | |
298 diff = diff_processor.as_html(enable_comments=enable_comments, | 297 diff = diff_processor.as_html(enable_comments=enable_comments, |
299 parsed_lines=[f]) | 298 parsed_lines=[f]) |
300 cs_changes[fid] = [cs1, cs2, f['operation'], filename, | 299 file_diff_data[fid] = (url_fid, f['operation'], filename, diff, st) |
301 diff, st] | |
302 else: | 300 else: |
303 # downloads/raw we only need RAW diff nothing else | 301 # downloads/raw we only need RAW diff nothing else |
304 diff = diff_processor.as_raw() | 302 diff = diff_processor.as_raw() |
305 cs_changes[''] = [None, None, None, None, diff, None] | 303 file_diff_data[''] = (None, None, None, diff, None) |
306 c.changes[changeset.raw_id] = cs_changes | 304 c.changes[changeset.raw_id] = (cs1, cs2, file_diff_data) |
307 | 305 |
308 #sort comments in creation order | 306 #sort comments in creation order |
309 c.comments = [com for com_id, com in sorted(comments.items())] | 307 c.comments = [com for com_id, com in sorted(comments.items())] |
310 | 308 |
311 # count inline comments | 309 # count inline comments |