Showing 2 changed files with 46 additions and 10 deletions
+8 -8
lib/Gitprep/Git.pm
... ...
@@ -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;
+38 -2
templates/branches.html.ep
... ...
@@ -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
                           % }