... | ... |
@@ -538,10 +538,10 @@ sub commits_number { |
538 | 538 |
} |
539 | 539 |
|
540 | 540 |
sub exists_branch { |
541 |
- my ($self, $rep) = @_; |
|
541 |
+ my ($self, $rep_info) = @_; |
|
542 | 542 |
|
543 | 543 |
# Exists branch |
544 |
- my @cmd = $self->cmd($rep, 'branch'); |
|
544 |
+ my @cmd = $self->cmd($rep_info, 'branch'); |
|
545 | 545 |
open my $fh, "-|", @cmd |
546 | 546 |
or croak 'git branch failed'; |
547 | 547 |
local $/; |
... | ... |
@@ -551,9 +551,9 @@ sub exists_branch { |
551 | 551 |
} |
552 | 552 |
|
553 | 553 |
sub delete_branch { |
554 |
- my ($self, $rep, $branch) = @_; |
|
554 |
+ my ($self, $rep_info, $branch) = @_; |
|
555 | 555 |
|
556 |
- my $branches = $self->branches($rep); |
|
556 |
+ my $branches = $self->branches($rep_info); |
|
557 | 557 |
my $exists; |
558 | 558 |
for my $b (@$branches) { |
559 | 559 |
if ($branch eq $b->{name}) { |
... | ... |
@@ -563,7 +563,7 @@ sub delete_branch { |
563 | 563 |
} |
564 | 564 |
|
565 | 565 |
if ($exists) { |
566 |
- my @cmd = $self->cmd($rep, 'branch', '-D', $branch); |
|
566 |
+ my @cmd = $self->cmd($rep_info, 'branch', '-D', $branch); |
|
567 | 567 |
Gitprep::Util::run_command(@cmd) |
568 | 568 |
or croak "Branch deleting failed. Can't delete branch $branch"; |
569 | 569 |
} |
... | ... |
@@ -573,15 +573,15 @@ sub delete_branch { |
573 | 573 |
} |
574 | 574 |
|
575 | 575 |
sub description { |
576 |
- my ($self, $rep, $description) = @_; |
|
576 |
+ my ($self, $rep_info, $description) = @_; |
|
577 | 577 |
|
578 |
- my $git_dir = $rep->{git_dir}; |
|
578 |
+ my $git_dir = $rep_info->{git_dir}; |
|
579 | 579 |
my $file = "$git_dir/description"; |
580 | 580 |
|
581 | 581 |
if (defined $description) { |
582 | 582 |
# Write description |
583 | 583 |
open my $fh, '>',$file |
584 |
- or croak "Can't open file $rep: $!"; |
|
584 |
+ or croak "Can't open file $git_dir: $!"; |
|
585 | 585 |
print $fh encode('UTF-8', $description) |
586 | 586 |
or croak "Can't write description: $!"; |
587 | 587 |
close $fh; |
... | ... |
@@ -1,5 +1,4 @@ |
1 | 1 |
<% |
2 |
- |
|
3 | 2 |
# API |
4 | 3 |
my $api = gitprep_api; |
5 | 4 |
|
... | ... |
@@ -145,6 +144,21 @@ |
145 | 144 |
} |
146 | 145 |
} |
147 | 146 |
|
147 |
+ my $original_project_row_id = app->dbi->model('project')->select( |
|
148 |
+ 'original_project', |
|
149 |
+ where => {'user.id' => $user_id, 'project.id' => $project_id} |
|
150 |
+ )->value; |
|
151 |
+ |
|
152 |
+ my $original_project; |
|
153 |
+ if ($original_project_row_id) { |
|
154 |
+ $original_project = app->dbi->model('project')->select( |
|
155 |
+ [ |
|
156 |
+ {__MY__ => '*'}, |
|
157 |
+ {user => ['id']} |
|
158 |
+ ], |
|
159 |
+ where => {'project.row_id' => $original_project_row_id} |
|
160 |
+ )->one; |
|
161 |
+ } |
|
148 | 162 |
%> |
149 | 163 |
|
150 | 164 |
% layout 'common', title => "branches \x{30fb} $user_id/$project_id"; |
... | ... |
@@ -302,7 +316,29 @@ |
302 | 316 |
closed |
303 | 317 |
% } |
304 | 318 |
% } else { |
305 |
- <a class="btn btn-small" href="<%= url_for("/$user_id/$project_id/compare/$branch_name")->query(expand => 1) %>"> |
|
319 |
+ <% |
|
320 |
+ my $compare_url; |
|
321 |
+ if ($original_project) { |
|
322 |
+ my $original_user_id = $original_project->{'user.id'}; |
|
323 |
+ my $original_project_id = $original_project->{id}; |
|
324 |
+ |
|
325 |
+ my $exists_original_branch_name = app->git->exists_branch( |
|
326 |
+ app->rep_info($original_user_id, $original_project_id), |
|
327 |
+ $branch_name |
|
328 |
+ ); |
|
329 |
+ if ($exists_original_branch_name) { |
|
330 |
+ $compare_url = url_for("/$original_user_id/$original_project_id/compare/$branch_name...$user_id:$branch_name")->query(expand => 1); |
|
331 |
+ } |
|
332 |
+ else { |
|
333 |
+ my $original_project_default_branch = app->manager->default_branch($original_user_id, $original_project_id); |
|
334 |
+ $compare_url = url_for("/$original_user_id/$original_project_id/compare/$original_project_default_branch...$user_id:$branch_name")->query(expand => 1); |
|
335 |
+ } |
|
336 |
+ } |
|
337 |
+ else { |
|
338 |
+ $compare_url = url_for("/$user_id/$project_id/compare/$branch_name")->query(expand => 1); |
|
339 |
+ } |
|
340 |
+ %> |
|
341 |
+ <a class="btn btn-small" href="<%= $compare_url %>"> |
|
306 | 342 |
New pull request |
307 | 343 |
</a> |
308 | 344 |
% } |