Showing 1 changed files with 39 additions and 32 deletions
+39 -32
templates/compare.html.ep
... ...
@@ -108,9 +108,46 @@
108 108
       }
109 109
     }
110 110
   }
111
+
112
+  # Can merge
113
+  my $rep_info = app->rep_info($user_id, $project_id);
114
+  my $merge_success;
115
+  my $rep_info2;
116
+  if ($target_project) {
117
+    $rep_info2 = app->rep_info($target_user_id, $target_project->{id});
118
+  }
119
+  else {
120
+    $rep_info2 = $rep_info;
121
+  }
122
+    
123
+  # Create working repository if it don't exist
124
+  $self->app->manager->create_work_rep($user_id, $project_id);
125
+  
126
+  # Lock working repository
127
+  my $work_rep_info = app->work_rep_info($user_id, $project_id);
128
+  {
129
+    my $lock_fh = $self->app->manager->lock_rep($work_rep_info);
130
+    
131
+    # Prepare merge
132
+    $self->app->manager->prepare_merge(
133
+      $work_rep_info,
134
+      $rep_info,
135
+      $from_rev,
136
+      $rep_info2,
137
+      $rev
138
+    );
139
+    
140
+    # Check merge automatically
141
+    $merge_success = $self->app->manager->merge(
142
+      $work_rep_info,
143
+      $rep_info,
144
+      $from_rev,
145
+      $rep_info2,
146
+      $rev
147
+    );
148
+  }
111 149
   
112 150
   # Commits
113
-  my $rep_info = app->rep_info($user_id, $project_id);
114 151
   my $commits = $git->forward_commits($rep_info, $from_rev, $rev);
115 152
   my $commits_count = @$commits;
116 153
   my $commits_date = {};
... ...
@@ -127,7 +164,7 @@
127 164
   my $start_commit = $git->separated_commit($rep_info, $from_rev, $rev);
128 165
 
129 166
   # End commit
130
-  my $end_commit = $git->get_commit($rep_info, $rev);
167
+  my $end_commit = $git->get_commit($rep_info2, $rev);
131 168
   
132 169
   if (!$start_commit || !$end_commit) {
133 170
     $self->reply->not_found;
... ...
@@ -144,36 +181,6 @@
144 181
     $can_open_pull_request = 1;
145 182
   }
146 183
   
147
-  # Can merge
148
-  my $merge_success;
149
-  if ($can_open_pull_request) {
150
-    
151
-    # Create working repository if it don't exist
152
-    $self->app->manager->create_work_rep($user_id, $project_id);
153
-    
154
-    # Lock working repository
155
-    my $work_rep_info = app->work_rep_info($user_id, $project_id);
156
-    my $lock_fh = $self->app->manager->lock_rep($work_rep_info);
157
-    
158
-    # Prepare merge
159
-    $self->app->manager->prepare_merge(
160
-      $work_rep_info,
161
-      $rep_info,
162
-      $from_rev,
163
-      $rep_info,
164
-      $rev
165
-    );
166
-    
167
-    # Check merge automatically
168
-    $merge_success = $self->app->manager->merge(
169
-      $work_rep_info,
170
-      $rep_info,
171
-      $from_rev,
172
-      $rep_info,
173
-      $rev
174
-    );
175
-  }
176
-
177 184
   # commit_body args
178 185
   my %commit_body_args = (
179 186
     id => $end_commit->{id},