... | ... |
@@ -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}, |