... | ... |
@@ -333,33 +333,36 @@ sub blob { |
333 | 333 |
} |
334 | 334 |
|
335 | 335 |
sub blob_diffs { |
336 |
- my ($self, $user, $project, $rev1, $rev2, $diff_trees, $opt) = @_; |
|
337 |
- |
|
338 |
- $opt ||= {}; |
|
339 |
- my $ignore_space_change = $opt->{ignore_space_change}; |
|
336 |
+ my ($self, %opt) = @_; |
|
337 |
+ |
|
338 |
+ my $rev1 = $opt{from}; |
|
339 |
+ my $rev2 = $opt{to}; |
|
340 |
+ my $diff_trees = $opt{diff_trees}; |
|
341 |
+ my $ignore_space_change = $opt{ignore_space_change}; |
|
340 | 342 |
|
341 | 343 |
return unless defined $rev1 && defined $rev2; |
342 | 344 |
|
343 | 345 |
# Diff tree |
344 |
- my @cmd = $self->cmd_rep( |
|
345 |
- $user, |
|
346 |
- $project, |
|
347 |
- 'diff-tree', |
|
348 |
- '-r', |
|
349 |
- '-M', |
|
350 |
- '--no-commit-id', |
|
351 |
- '--patch-with-raw', |
|
352 |
- ($ignore_space_change ? '--ignore-space-change' : ()), |
|
353 |
- $rev1, |
|
354 |
- $rev2, |
|
355 |
- '--' |
|
346 |
+ my @cmd = $self->cmd( |
|
347 |
+ %opt, |
|
348 |
+ command => [ |
|
349 |
+ 'diff-tree', |
|
350 |
+ '-r', |
|
351 |
+ '-M', |
|
352 |
+ '--no-commit-id', |
|
353 |
+ '--patch-with-raw', |
|
354 |
+ ($ignore_space_change ? '--ignore-space-change' : ()), |
|
355 |
+ $rev1, |
|
356 |
+ $rev2, |
|
357 |
+ '--' |
|
358 |
+ ] |
|
356 | 359 |
); |
357 | 360 |
|
358 | 361 |
open my $fh, '-|', @cmd |
359 | 362 |
or croak('Open self-diff-tree failed'); |
360 | 363 |
my @diff_tree; |
361 | 364 |
my @diff_tree_lines = <$fh>; |
362 |
- my $diff_tree_enc = $self->decide_encoding($user, $project, \@diff_tree_lines); |
|
365 |
+ my $diff_tree_enc = $self->decide_encoding($opt{user}, $opt{project}, \@diff_tree_lines); |
|
363 | 366 |
for my $line (@diff_tree_lines) { |
364 | 367 |
$line = decode($diff_tree_enc, $line); |
365 | 368 |
chomp $line; |
... | ... |
@@ -379,24 +382,25 @@ sub blob_diffs { |
379 | 382 |
my $file = $diffinfo->{to_file}; |
380 | 383 |
|
381 | 384 |
# Blob diff |
382 |
- my @cmd = $self->cmd_rep( |
|
383 |
- $user, |
|
384 |
- $project, |
|
385 |
- 'diff-tree', |
|
386 |
- '-r', |
|
387 |
- '-M', |
|
388 |
- '-p', |
|
389 |
- ($ignore_space_change ? '--ignore-space-change' : ()), |
|
390 |
- $rev1, |
|
391 |
- $rev2, |
|
392 |
- '--', |
|
393 |
- (defined $from_file ? $from_file : ()), |
|
394 |
- $file |
|
385 |
+ my @cmd = $self->cmd( |
|
386 |
+ %opt, |
|
387 |
+ command => [ |
|
388 |
+ 'diff-tree', |
|
389 |
+ '-r', |
|
390 |
+ '-M', |
|
391 |
+ '-p', |
|
392 |
+ ($ignore_space_change ? '--ignore-space-change' : ()), |
|
393 |
+ $rev1, |
|
394 |
+ $rev2, |
|
395 |
+ '--', |
|
396 |
+ (defined $from_file ? $from_file : ()), |
|
397 |
+ $file |
|
398 |
+ ] |
|
395 | 399 |
); |
396 | 400 |
open my $fh, '-|', @cmd |
397 | 401 |
or croak('Open self-diff-tree failed'); |
398 | 402 |
my @lines = <$fh>; |
399 |
- my $enc = $self->decide_encoding($user, $project, \@lines); |
|
403 |
+ my $enc = $self->decide_encoding($opt{user}, $opt{project}, \@lines); |
|
400 | 404 |
@lines = map { decode($enc, $_) } @lines; |
401 | 405 |
close $fh; |
402 | 406 |
my ($lines, $diff_info) = $self->parse_blob_diff_lines(\@lines); |
... | ... |
@@ -36,12 +36,11 @@ |
36 | 36 |
|
37 | 37 |
# Get blob diffs |
38 | 38 |
my $blob_diffs = $git->blob_diffs( |
39 |
- $user, |
|
40 |
- $project, |
|
41 |
- $from_rev, |
|
42 |
- $rev, |
|
43 |
- $diff_trees, |
|
44 |
- {ignore_space_change => $ignore_space_change} |
|
39 |
+ %{app->rep_info($user, $project)}, |
|
40 |
+ from => $from_rev, |
|
41 |
+ to => $rev, |
|
42 |
+ diff_trees => $diff_trees, |
|
43 |
+ ignore_space_change => $ignore_space_change |
|
45 | 44 |
) || []; |
46 | 45 |
|
47 | 46 |
my $blob_diffs_h = {}; |