Commit 79bfbe5918b414cc44fbb506f0b350c04f49c1e9

Authored by Dmitriy Zaporozhets
1 parent d9be420e

Remove commits/diff store login from MergeRequest model

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
app/models/merge_request.rb
@@ -30,6 +30,9 @@ class MergeRequest &lt; ActiveRecord::Base @@ -30,6 +30,9 @@ class MergeRequest &lt; 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 &lt; ActiveRecord::Base @@ -53,11 +56,8 @@ class MergeRequest &lt; 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 &lt; ActiveRecord::Base @@ -75,15 +75,10 @@ class MergeRequest &lt; 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 &lt; ActiveRecord::Base @@ -105,7 +100,7 @@ class MergeRequest &lt; 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 &lt; ActiveRecord::Base @@ -120,8 +115,7 @@ class MergeRequest &lt; 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 &lt; ActiveRecord::Base @@ -132,42 +126,6 @@ class MergeRequest &lt; 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 &lt; ActiveRecord::Base @@ -176,39 +134,6 @@ class MergeRequest &lt; 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 &lt; ActiveRecord::Base @@ -247,10 +172,6 @@ class MergeRequest &lt; 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 &lt; ActiveRecord::Base @@ -327,34 +248,4 @@ class MergeRequest &lt; 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 &lt; ActivityObserver @@ -6,6 +6,7 @@ class MergeRequestObserver &lt; 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)