<% # Parameters my $rep_info = stash('rep_info') // app->rep_info($user, $project); my $rev = stash('rev'); my $from_rev = stash('from_rev'); my $param_ignore_space_change = param('w'); my $ignore_space_change; if ($param_ignore_space_change) { $ignore_space_change = 1; } else { $ignore_space_change = app->dbi->model('project')->select( 'ignore_space_change', where => {user_id => $user, name => $project} )->value; } # Git my $git = app->git; # Diff tree my $diff_trees = $git->diff_tree( $rep_info, $rev, $from_rev, {ignore_space_change => $ignore_space_change} ); my $diff_trees_h = {}; for my $diff_tree (@$diff_trees) { my $file = $diff_tree->{to_file}; $file = $diff_tree->{from_file} unless defined $file; $diff_trees_h->{$file} = $diff_tree if defined $file; } # Get blob diffs my $blob_diffs = $git->blob_diffs( $rep_info, $from_rev, $rev, $diff_trees, {ignore_space_change => $ignore_space_change} ) || []; my $blob_diffs_h = {}; my $total_add_line_count = 0; my $total_delete_line_count = 0; for my $blob_diff (@$blob_diffs) { my $file = $blob_diff->{file}; $blob_diffs_h->{$file} = $blob_diff; $total_add_line_count += $blob_diff->{add_line_count}; $total_delete_line_count += $blob_diff->{delete_line_count}; } %> %= javascript begin $(document).ready(function () { // Diff Stats Button var diff_tree_show = false; var original_diff_stats_btn_text = $('#diff-stats-btn').text(); $('#diff-stats-btn').on('click', function () { if (diff_tree_show) { $(this).text(original_diff_stats_btn_text); $('#diff_tree').css('display', 'none'); } else { $('#diff_tree').css('display', 'block'); } diff_tree_show = !diff_tree_show; }); }); % end
Showing <%= @$diff_trees %> changed files with <%= $total_add_line_count %> additions and <%= $total_delete_line_count %> deletions
% my $num = 0; % for my $file (sort keys %$diff_trees_h) {
% my $blob_diff = $blob_diffs_h->{$file}; %= include '/include/blob_diff_body', blob_diff => $blob_diff, diff_tree => $diff_trees_h->{$file};
% $num++; % }