Commit 79bfbe5918b414cc44fbb506f0b350c04f49c1e9
1 parent
d9be420e
Exists in
spb-stable
and in
3 other branches
Remove commits/diff store login from MergeRequest model
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Showing
2 changed files
with
6 additions
and
114 deletions
Show diff stats
app/models/merge_request.rb
@@ -30,6 +30,9 @@ class MergeRequest < ActiveRecord::Base | @@ -30,6 +30,9 @@ class MergeRequest < ActiveRecord::Base | ||
30 | 30 | ||
31 | belongs_to :target_project, foreign_key: :target_project_id, class_name: "Project" | 31 | belongs_to :target_project, foreign_key: :target_project_id, class_name: "Project" |
32 | belongs_to :source_project, foreign_key: :source_project_id, class_name: "Project" | 32 | belongs_to :source_project, foreign_key: :source_project_id, class_name: "Project" |
33 | + has_one :merge_request_diff, dependent: :destroy | ||
34 | + | ||
35 | + delegate :commits, :diffs, :last_commit, :last_commit_short_sha, to: :merge_request_diff, prefix: nil | ||
33 | 36 | ||
34 | attr_accessible :title, :assignee_id, :source_project_id, :source_branch, :target_project_id, :target_branch, :milestone_id, :author_id_of_changes, :state_event, :description | 37 | attr_accessible :title, :assignee_id, :source_project_id, :source_branch, :target_project_id, :target_branch, :milestone_id, :author_id_of_changes, :state_event, :description |
35 | 38 | ||
@@ -53,11 +56,8 @@ class MergeRequest < ActiveRecord::Base | @@ -53,11 +56,8 @@ class MergeRequest < ActiveRecord::Base | ||
53 | end | 56 | end |
54 | 57 | ||
55 | state :opened | 58 | state :opened |
56 | - | ||
57 | state :reopened | 59 | state :reopened |
58 | - | ||
59 | state :closed | 60 | state :closed |
60 | - | ||
61 | state :merged | 61 | state :merged |
62 | end | 62 | end |
63 | 63 | ||
@@ -75,15 +75,10 @@ class MergeRequest < ActiveRecord::Base | @@ -75,15 +75,10 @@ class MergeRequest < ActiveRecord::Base | ||
75 | end | 75 | end |
76 | 76 | ||
77 | state :unchecked | 77 | state :unchecked |
78 | - | ||
79 | state :can_be_merged | 78 | state :can_be_merged |
80 | - | ||
81 | state :cannot_be_merged | 79 | state :cannot_be_merged |
82 | end | 80 | end |
83 | 81 | ||
84 | - serialize :st_commits | ||
85 | - serialize :st_diffs | ||
86 | - | ||
87 | validates :source_project, presence: true, unless: :allow_broken | 82 | validates :source_project, presence: true, unless: :allow_broken |
88 | validates :source_branch, presence: true | 83 | validates :source_branch, presence: true |
89 | validates :target_project, presence: true | 84 | validates :target_project, presence: true |
@@ -105,7 +100,7 @@ class MergeRequest < ActiveRecord::Base | @@ -105,7 +100,7 @@ class MergeRequest < ActiveRecord::Base | ||
105 | scope :closed, -> { with_states(:closed, :merged) } | 100 | scope :closed, -> { with_states(:closed, :merged) } |
106 | 101 | ||
107 | def validate_branches | 102 | def validate_branches |
108 | - if target_project==source_project && target_branch == source_branch | 103 | + if target_project == source_project && target_branch == source_branch |
109 | errors.add :branch_conflict, "You can not use same project/branch for source and target" | 104 | errors.add :branch_conflict, "You can not use same project/branch for source and target" |
110 | end | 105 | end |
111 | 106 | ||
@@ -120,8 +115,7 @@ class MergeRequest < ActiveRecord::Base | @@ -120,8 +115,7 @@ class MergeRequest < ActiveRecord::Base | ||
120 | end | 115 | end |
121 | 116 | ||
122 | def reload_code | 117 | def reload_code |
123 | - self.reloaded_commits | ||
124 | - self.reloaded_diffs | 118 | + merge_request_diff.reload_content if opened? |
125 | end | 119 | end |
126 | 120 | ||
127 | def check_if_can_be_merged | 121 | def check_if_can_be_merged |
@@ -132,42 +126,6 @@ class MergeRequest < ActiveRecord::Base | @@ -132,42 +126,6 @@ class MergeRequest < ActiveRecord::Base | ||
132 | end | 126 | end |
133 | end | 127 | end |
134 | 128 | ||
135 | - def diffs | ||
136 | - @diffs ||= (load_diffs(st_diffs) || []) | ||
137 | - end | ||
138 | - | ||
139 | - def reloaded_diffs | ||
140 | - if opened? && unmerged_diffs.any? | ||
141 | - self.st_diffs = dump_diffs(unmerged_diffs) | ||
142 | - self.save | ||
143 | - end | ||
144 | - end | ||
145 | - | ||
146 | - def broken_diffs? | ||
147 | - diffs == broken_diffs | ||
148 | - rescue | ||
149 | - true | ||
150 | - end | ||
151 | - | ||
152 | - def valid_diffs? | ||
153 | - !broken_diffs? | ||
154 | - end | ||
155 | - | ||
156 | - def unmerged_diffs | ||
157 | - diffs = if for_fork? | ||
158 | - Gitlab::Satellite::MergeAction.new(author, self).diffs_between_satellite | ||
159 | - else | ||
160 | - Gitlab::Git::Diff.between(target_project.repository, source_branch, target_branch) | ||
161 | - end | ||
162 | - | ||
163 | - diffs ||= [] | ||
164 | - diffs | ||
165 | - end | ||
166 | - | ||
167 | - def last_commit | ||
168 | - commits.first | ||
169 | - end | ||
170 | - | ||
171 | def merge_event | 129 | def merge_event |
172 | self.target_project.events.where(target_id: self.id, target_type: "MergeRequest", action: Event::MERGED).last | 130 | self.target_project.events.where(target_id: self.id, target_type: "MergeRequest", action: Event::MERGED).last |
173 | end | 131 | end |
@@ -176,39 +134,6 @@ class MergeRequest < ActiveRecord::Base | @@ -176,39 +134,6 @@ class MergeRequest < ActiveRecord::Base | ||
176 | self.target_project.events.where(target_id: self.id, target_type: "MergeRequest", action: Event::CLOSED).last | 134 | self.target_project.events.where(target_id: self.id, target_type: "MergeRequest", action: Event::CLOSED).last |
177 | end | 135 | end |
178 | 136 | ||
179 | - def commits | ||
180 | - load_commits(st_commits || []) | ||
181 | - end | ||
182 | - | ||
183 | - def probably_merged? | ||
184 | - unmerged_commits.empty? && | ||
185 | - commits.any? && opened? | ||
186 | - end | ||
187 | - | ||
188 | - def reloaded_commits | ||
189 | - if opened? && unmerged_commits.any? | ||
190 | - self.st_commits = dump_commits(unmerged_commits) | ||
191 | - save | ||
192 | - | ||
193 | - end | ||
194 | - commits | ||
195 | - end | ||
196 | - | ||
197 | - def unmerged_commits | ||
198 | - if for_fork? | ||
199 | - commits = Gitlab::Satellite::MergeAction.new(self.author, self).commits_between | ||
200 | - else | ||
201 | - commits = target_project.repository.commits_between(self.target_branch, self.source_branch) | ||
202 | - end | ||
203 | - | ||
204 | - if commits.present? | ||
205 | - commits = Commit.decorate(commits). | ||
206 | - sort_by(&:created_at). | ||
207 | - reverse | ||
208 | - end | ||
209 | - commits | ||
210 | - end | ||
211 | - | ||
212 | def merge!(user_id) | 137 | def merge!(user_id) |
213 | self.author_id_of_changes = user_id | 138 | self.author_id_of_changes = user_id |
214 | self.merge | 139 | self.merge |
@@ -247,10 +172,6 @@ class MergeRequest < ActiveRecord::Base | @@ -247,10 +172,6 @@ class MergeRequest < ActiveRecord::Base | ||
247 | Gitlab::Satellite::MergeAction.new(current_user, self).format_patch | 172 | Gitlab::Satellite::MergeAction.new(current_user, self).format_patch |
248 | end | 173 | end |
249 | 174 | ||
250 | - def last_commit_short_sha | ||
251 | - @last_commit_short_sha ||= last_commit.sha[0..10] | ||
252 | - end | ||
253 | - | ||
254 | def for_fork? | 175 | def for_fork? |
255 | target_project != source_project | 176 | target_project != source_project |
256 | end | 177 | end |
@@ -327,34 +248,4 @@ class MergeRequest < ActiveRecord::Base | @@ -327,34 +248,4 @@ class MergeRequest < ActiveRecord::Base | ||
327 | message << description.to_s | 248 | message << description.to_s |
328 | message | 249 | message |
329 | end | 250 | end |
330 | - | ||
331 | - private | ||
332 | - | ||
333 | - def dump_commits(commits) | ||
334 | - commits.map(&:to_hash) | ||
335 | - end | ||
336 | - | ||
337 | - def load_commits(array) | ||
338 | - array.map { |hash| Commit.new(Gitlab::Git::Commit.new(hash)) } | ||
339 | - end | ||
340 | - | ||
341 | - def dump_diffs(diffs) | ||
342 | - if diffs == broken_diffs | ||
343 | - broken_diffs | ||
344 | - elsif diffs.respond_to?(:map) | ||
345 | - diffs.map(&:to_hash) | ||
346 | - end | ||
347 | - end | ||
348 | - | ||
349 | - def load_diffs(raw) | ||
350 | - if raw == broken_diffs | ||
351 | - broken_diffs | ||
352 | - elsif raw.respond_to?(:map) | ||
353 | - raw.map { |hash| Gitlab::Git::Diff.new(hash) } | ||
354 | - end | ||
355 | - end | ||
356 | - | ||
357 | - def broken_diffs | ||
358 | - [Gitlab::Git::Diff::BROKEN_DIFF] | ||
359 | - end | ||
360 | end | 251 | end |
app/observers/merge_request_observer.rb
@@ -6,6 +6,7 @@ class MergeRequestObserver < ActivityObserver | @@ -6,6 +6,7 @@ class MergeRequestObserver < ActivityObserver | ||
6 | create_event(merge_request, Event.determine_action(merge_request)) | 6 | create_event(merge_request, Event.determine_action(merge_request)) |
7 | end | 7 | end |
8 | 8 | ||
9 | + merge_request.create_merge_request_diff | ||
9 | notification.new_merge_request(merge_request, current_user) | 10 | notification.new_merge_request(merge_request, current_user) |
10 | merge_request.create_cross_references!(merge_request.project, current_user) | 11 | merge_request.create_cross_references!(merge_request.project, current_user) |
11 | execute_hooks(merge_request) | 12 | execute_hooks(merge_request) |