| ... | ... |
@@ -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 = {};
|