public
Description: Gitorious aims to provide a great way of doing distributed opensource code collaboration.
Homepage: http://gitorious.org/projects/gitorious
Clone URL: git://github.com/dysinger/gitorious.git
refactoring to use polymorphic associations (USER does ACTION on X)

Signed-off-by: David A. Cuadrado <krawek@gmail.com>
David A. Cuadrado (author)
Mon Apr 07 20:50:40 -0700 2008
commit  5c5947ba3940e472af0acde870470633eb84f178
tree    85b4d37bbc575aa3465e2c698c8a674a7fcbba6e
parent  69366409d4544b7b48543784a7f6ef8bf643c436
...
29
30
31
32
 
33
34
35
...
29
30
31
 
32
33
34
35
0
@@ -29,7 +29,7 @@ class CommentsController < ApplicationController
0
     @comment.project = @project
0
     respond_to do |format|
0
       if @comment.save
0
- Event.from_action_name("comment", current_user, @repository, @comment.id)
0
+ current_user.create_event("comment", @comment)
0
         format.html do
0
           flash[:success] = "Your comment was added"
0
           redirect_to project_repository_comments_path(@project, @repository)
...
21
22
23
24
 
 
25
26
27
...
38
39
40
41
42
43
 
44
45
46
...
21
22
23
 
24
25
26
27
28
...
39
40
41
 
42
 
43
44
45
46
0
@@ -21,7 +21,8 @@ class CommittersController < ApplicationController
0
 
0
     respond_to do |format|
0
       if @repository.add_committer(@committer)
0
- Event.from_action_name("add committer", current_user, @repository, @committer.id)
0
+ @committership = @repository.committerships.find_by_user_id(@committer.id)
0
+ current_user.create_event("add committer", @committership)
0
         format.html { redirect_to([@repository.project, @repository]) }
0
         format.xml do
0
           render :xml => @committer
0
@@ -38,9 +39,8 @@ class CommittersController < ApplicationController
0
     @committership = @repository.committerships.find_by_user_id(params[:id])
0
     
0
     respond_to do |format|
0
- commiter = User.find_by_id(params[:id])
0
       if @committership.destroy
0
- Event.from_action_name("remove committer", current_user, @repository, commiter.id)
0
+ current_user.create_event("remove committer", @repository, params[:id])
0
         flash[:success] = "User removed from repository"
0
         format.html { redirect_to [@repository.project, @repository] }
0
         format.xml { render :nothing, :status => :ok }
...
1
2
3
4
 
5
6
7
...
1
2
3
 
4
5
6
7
0
@@ -1,7 +1,7 @@
0
 class EventsController < ApplicationController
0
   def index
0
     @events = Event.paginate(:all, :order => "events.date asc",
0
- :page => params[:page], :include => [:action, :user, {:repository => :project}])
0
+ :page => params[:page], :include => [:action, :user, :target])
0
   end
0
   
0
 end
...
28
29
30
31
 
32
33
34
...
48
49
50
51
 
52
53
54
...
61
62
63
64
 
65
66
67
...
72
73
74
75
 
76
77
78
...
28
29
30
 
31
32
33
34
...
48
49
50
 
51
52
53
54
...
61
62
63
 
64
65
66
67
...
72
73
74
 
75
76
77
78
0
@@ -28,7 +28,7 @@ class MergeRequestsController < ApplicationController
0
     @merge_request.user = current_user
0
     respond_to do |format|
0
       if @merge_request.save
0
- Event.from_action_name("request merge", current_user, @repository, @merge_request.id)
0
+ current_user.create_event("request merge", @merge_request)
0
         format.html {
0
           flash[:success] = %Q{You sent a merge request to "#{@merge_request.target_repository.name}"}
0
           redirect_to project_repository_path(@project, @repository) and return
0
@@ -48,7 +48,7 @@ class MergeRequestsController < ApplicationController
0
     # TODO: put to change status
0
     @merge_request.status = params[:merge_request][:status]
0
     if @merge_request.save
0
- Event.from_action_name("resolve merge request", current_user, @repository, @merge_request.id)
0
+ current_user.create_event("resolve merge request", @merge_request)
0
       flash[:notice] = "The merge request was marked as #{@merge_request.status_string}"
0
     end
0
     redirect_to [@project, @repository, @merge_request]
0
@@ -61,7 +61,7 @@ class MergeRequestsController < ApplicationController
0
   def update
0
     @merge_request.attributes = params[:merge_request]
0
     if @merge_request.save
0
- Event.from_action_name("update merge request", current_user, @repository, @merge_request.id)
0
+ current_user.create_event("update merge request", @merge_request)
0
       flash[:success] = "Merge request was updated"
0
       redirect_to [@project, @repository, @merge_request]
0
     else
0
@@ -72,7 +72,7 @@ class MergeRequestsController < ApplicationController
0
   
0
   def destroy
0
     @merge_request.destroy
0
- Event.from_action_name("delete merge request", current_user, @repository)
0
+ current_user.create_event("delete merge request", @repository)
0
     flash[:success] = "Merge request was retracted"
0
     redirect_to project_repository_path(@project, @repository)
0
   end
...
46
47
48
49
 
50
51
52
...
65
66
67
68
 
69
70
71
...
81
82
83
84
 
85
86
87
...
46
47
48
 
49
50
51
52
...
65
66
67
 
68
69
70
71
...
81
82
83
 
84
85
86
87
0
@@ -46,7 +46,7 @@ class ProjectsController < ApplicationController
0
     @project = Project.new(params[:project])
0
     @project.user = current_user
0
     if @project.save
0
- Event.from_action_name("create project", current_user, @project.mainline_repository)
0
+ current_user.create_event("create project", @project)
0
       redirect_to projects_path
0
     else
0
       render :action => 'new'
0
@@ -65,7 +65,7 @@ class ProjectsController < ApplicationController
0
     end
0
     @project.attributes = params[:project]
0
     if @project.save
0
- Event.from_action_name("update project", current_user, @project.mainline_repository)
0
+ current_user.create_event("update project", @project)
0
       redirect_to project_path(@project)
0
     else
0
       render :action => 'new'
0
@@ -81,7 +81,7 @@ class ProjectsController < ApplicationController
0
     if @project.can_be_deleted_by?(current_user)
0
       project_title = @project.title
0
       @project.destroy
0
- Event.from_action_name("delete project", current_user, nil, project_title)
0
+ current_user.create_event("delete project", nil, project_title)
0
     else
0
       flash[:error] = "You're not the owner of this project, or the project has clones"
0
     end
...
61
62
63
64
 
65
66
67
...
91
92
93
 
94
95
 
96
97
98
...
61
62
63
 
64
65
66
67
...
91
92
93
94
95
96
97
98
99
100
0
@@ -61,7 +61,7 @@ class RepositoriesController < ApplicationController
0
     
0
     respond_to do |format|
0
       if @repository.save
0
- Event.from_action_name("fork project", current_user, @repository, @repository_to_clone.id)
0
+ current_user.create_event("clone repository", @repository, @repository_to_clone.id)
0
         
0
         location = project_repository_path(@project, @repository)
0
         format.html { redirect_to location }
0
@@ -91,8 +91,10 @@ class RepositoriesController < ApplicationController
0
   def destroy
0
     @repository = @project.repositories.find_by_name!(params[:id])
0
     if @repository.can_be_deleted_by?(current_user)
0
+ repo_name = @repository.name
0
       flash[:notice] = "The repository was deleted"
0
       @repository.destroy
0
+ current_user.create_event("delete repository", @project, repo_name)
0
     else
0
       flash[:error] = "You're not the owner of this repository"
0
     end
...
7
8
9
10
 
11
12
13
...
7
8
9
 
10
11
12
13
0
@@ -7,7 +7,7 @@ class UsersController < ApplicationController
0
     @user = User.find_by_login!(params[:id])
0
     @projects = @user.projects.find(:all, :include => [:tags, { :repositories => :project }])
0
     @repositories = @user.repositories.find(:all, :conditions => ["mainline = ?", false])
0
- @events = @user.events.find(:all, :order => "events.date asc", :include => [:action, :user, {:repository => :project}])
0
+ @events = @user.events.find(:all, :order => "events.date asc", :include => [:action, :user, :target])
0
     
0
     @commits_last_week = 0
0
     @projects.map{|p| p.repositories.first }.concat(@repositories).each do |repo|
...
101
102
103
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
...
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
0
@@ -101,4 +101,92 @@ module ApplicationHelper
0
       image_tag("graphs/#{filename}")
0
     end
0
   end
0
+
0
+ def action_and_body_for_event(event)
0
+ target = event.target
0
+ action = ""
0
+ body = ""
0
+ case event.action.name
0
+ when "create project"
0
+ action = "<b>created project</b> #{link_to h(target.title), project_path(target)}"
0
+ body = truncate(target.stripped_description, 100)
0
+ when "delete project"
0
+ action = "<b>deleted project</b> #{h(event.data)}"
0
+ when "update project"
0
+ action = "<b>updated project</b> #{link_to h(target.title), project_path(target)}"
0
+ when "clone repository"
0
+ original_repo = Repository.find_by_id(event.data.to_i)
0
+ next if original_repo.nil?
0
+
0
+ project = target.project
0
+
0
+ action = "<b>forked</b> #{link_to h(project.title), project_path(project)}/#{link_to h(original_repo.name), project_repository_url(project, original_repo)} in #{link_to h(target.name), project_repository_url(project, target)}"
0
+ when "delete repository"
0
+ action = "<b>deleted repository</b> #{link_to h(target.title), project_path(target)}/#{event.data}"
0
+ when "commit"
0
+ project = target.project
0
+ action = "<b>commited to</b> #{link_to h(project.title), project_path(project)}/#{link_to h(target.name), project_repository_url(project, target)}"
0
+ body = "#{link_to event.data, project_repository_commit_path(project, target, event.data)}<br/>#{event.body}"
0
+ when "create branch"
0
+ project = target.project
0
+ if event.data == "master"
0
+ action = "<b>started development</b> of #{link_to h(project.title), project_path(project)}/#{link_to h(target.name), project_repository_url(project, target)}"
0
+ body = event.body
0
+ else
0
+ action = "<b>created branch</b> #{link_to h(event.data), project_repository_tree_path(project, target, event.data)} on #{link_to h(project.title), project_path(project)}/#{link_to h(target.name), project_repository_url(project, target)}"
0
+ end
0
+ when "delete branch"
0
+ project = target.project
0
+ action = "<b>deleted branch</b> #{event.data} on #{link_to h(project.title), project_path(project)}/#{link_to h(target.name), project_repository_url(project, target)}"
0
+ when "create tag"
0
+ project = target.project
0
+ action = "<b>tagged</b> #{link_to h(project.title), project_path(project)}/#{link_to h(target.name), project_repository_url(project, target)}"
0
+ body = "#{link_to event.data, project_repository_commit_path(project, target, event.data)}<br/>#{event.body}"
0
+ when "delete tag"
0
+ project = target.project
0
+ action = "<b>deleted tag</b> #{event.data} on #{link_to h(project.title), project_path(project)}/#{link_to h(target.name), project_repository_url(project, target)}"
0
+ when "add committer"
0
+ user = target.user
0
+ repo = target.repository
0
+
0
+ action = "<b>added committer</b> #{link_to user.login, user_path(user)} to #{link_to h(repo.project.title), project_path(repo.project)}/#{link_to h(repo.name), project_repository_url(repo.project, repo)}"
0
+ when "remove committer"
0
+ user = User.find_by_id(event.data.to_i)
0
+ next unless user
0
+
0
+ project = target.project
0
+ action = "<b>removed committer</b> #{link_to user.login, user_path(user)} from #{link_to h(project.title), project_path(project)}/#{link_to h(target.name), project_repository_url(project, target)}"
0
+ when "comment"
0
+ project = target.project
0
+ repo = target.repository
0
+
0
+ action = "<b>commented</b> on #{link_to h(project.title), project_path(project)}/#{link_to h(repo.name), project_repository_url(project, repo)}"
0
+ body = truncate(h(target.body), 100)
0
+ when "request merge"
0
+ source_repository = target.source_repository
0
+ project = source_repository.project
0
+ target_repository = target.target_repository
0
+
0
+ action = "<b>requested merge</b> #{link_to h(project.title), project_path(project)}/#{link_to h(source_repository.name), project_repository_url(project, source_repository)} to #{link_to h(project.title), project_path(project)}/#{link_to h(target_repository.name)}"
0
+ body = "#{link_to "review", [project, target_repository, target]}<br/>#{truncate(h(target.proposal), 100)}"
0
+ when "resolve merge request"
0
+ source_repository = target.source_repository
0
+ project = source_repository.project
0
+ target_repository = target.target_repository
0
+
0
+ action = "<b>resolved merge request </b>to [#{target.status_string}] from #{link_to h(project.title), project_path(project)}/#{link_to h(source_repository.name), project_repository_url(project, source_repository)}"
0
+ when "update merge request"
0
+ source_repository = target.source_repository
0
+ project = source_repository.project
0
+ target_repository = target.target_repository
0
+
0
+ action = "<b>updated merge request</b> from #{link_to h(project.title), project_path(project)}/#{link_to h(source_repository.name), project_repository_url(project, source_repository)}"
0
+ when "delete merge request"
0
+ project = target.project
0
+
0
+ action = "<b>deleted merge request</b> from #{link_to h(project.title), project_path(project)}/#{link_to h(target.name), project_repository_url(project, target)}"
0
+ end
0
+
0
+ [action, body]
0
+ end
0
 end
...
2
3
4
 
5
6
7
...
2
3
4
5
6
7
8
0
@@ -2,6 +2,7 @@ class Comment < ActiveRecord::Base
0
   belongs_to :user
0
   belongs_to :repository
0
   belongs_to :project
0
+ has_many :events, :as => :target, :dependent => :destroy
0
   
0
   is_indexed :fields => ["body"], :include => [{
0
       :association_name => "user",
...
1
2
3
 
4
5
6
...
1
2
3
4
5
6
7
0
@@ -1,6 +1,7 @@
0
 class Committership < ActiveRecord::Base
0
   belongs_to :user
0
   belongs_to :repository
0
+ has_many :events, :as => :target, :dependent => :destroy
0
   
0
   KIND_ACCESS_NONE = 0
0
   KIND_ACCESS_READ = 1
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
18
...
1
2
3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
5
0
@@ -1,18 +1,5 @@
0
 class Event < ActiveRecord::Base
0
   belongs_to :action
0
   belongs_to :user
0
- belongs_to :repository
0
-
0
- def self.from_action_name(action_name, user, repository, ref = nil, body = nil)
0
- action = Action.find_by_name(action_name)
0
- return nil if action.nil?
0
-
0
- repo_id = nil
0
- if repository
0
- repo_id = repository.id
0
- end
0
-
0
- return Event.create(:user_id => user.id, :repository_id => repo_id, :action_id => action.id,
0
- :body => body, :ref => ref, :date => Time.now)
0
- end
0
+ belongs_to :target, :polymorphic => true
0
 end
...
2
3
4
 
5
6
7
...
2
3
4
5
6
7
8
0
@@ -2,6 +2,7 @@ class MergeRequest < ActiveRecord::Base
0
   belongs_to :user
0
   belongs_to :source_repository, :class_name => 'Repository'
0
   belongs_to :target_repository, :class_name => 'Repository'
0
+ has_many :events, :as => :target, :dependent => :destroy
0
   
0
   is_indexed :fields => ["proposal"], :include => [{
0
       :association_name => "user",
...
9
10
11
 
12
13
14
...
9
10
11
12
13
14
15
0
@@ -9,6 +9,7 @@ class Project < ActiveRecord::Base
0
     :class_name => "Repository"
0
   has_many :repository_clones, :conditions => ["mainline = ?", false],
0
     :class_name => "Repository"
0
+ has_many :events, :as => :target, :dependent => :destroy
0
     
0
   is_indexed :fields => ["title", "description", "slug"],
0
     :concatenate => [
...
9
10
11
12
 
13
14
15
...
228
229
230
231
 
232
233
234
...
248
249
250
251
 
252
253
254
...
9
10
11
 
12
13
14
15
...
228
229
230
 
231
232
233
234
...
248
249
250
 
251
252
253
254
0
@@ -9,7 +9,7 @@ class Repository < ActiveRecord::Base
0
     :order => "status, id desc", :dependent => :destroy
0
   has_many :proposed_merge_requests, :foreign_key => 'source_repository_id',
0
                 :class_name => 'MergeRequest', :order => "id desc", :dependent => :destroy
0
- has_many :events, :dependent => :destroy
0
+ has_many :events, :as => :target, :dependent => :destroy
0
   
0
   validates_presence_of :user_id, :project_id, :name
0
   validates_format_of :name, :with => /^[a-z0-9_\-]+$/i,
0
@@ -228,7 +228,7 @@ class Repository < ActiveRecord::Base
0
     users_by_email = users.inject({}){|hash, user| hash[user.email] = user; hash }
0
     users_by_email
0
   end
0
-
0
+
0
   protected
0
     def set_as_mainline_if_first
0
       unless project.repositories.size >= 1
0
@@ -248,7 +248,7 @@ class Repository < ActiveRecord::Base
0
   def self.create_hooks(path)
0
     hooks = File.join(GitoriousConfig["repository_base_path"], ".hooks")
0
     Dir.chdir(path) do
0
- hooks_base_path = File.expand_path(File.join(File.dirname(__FILE__), "../../data/hooks")) # FIXME: the hooks are in GITORIOUS_ROOT/data/hooks
0
+ hooks_base_path = File.expand_path("#{RAILS_ROOT}/data/hooks")
0
       
0
       if not File.symlink?(hooks)
0
         if not File.exist?(hooks)
...
105
106
107
108
 
 
 
 
 
 
 
 
109
110
111
...
105
106
107
 
108
109
110
111
112
113
114
115
116
117
118
0
@@ -105,7 +105,14 @@ class User < ActiveRecord::Base
0
   def to_xml(opts = {})
0
     super({:except => [:activation_code, :crypted_password, :remember_token, :remember_token_expires_at, :salt, :ssh_key_id]}.merge(opts))
0
   end
0
-
0
+
0
+ def create_event(action_name, target, data = nil, body = nil)
0
+ action = Action.find_by_name(action_name)
0
+ return false if action.nil?
0
+
0
+ return events.create(:action_id => action.id, :target => target, :body => body, :data => data, :date => Time.now)
0
+ end
0
+
0
   protected
0
     # before filter
0
     def encrypt_password
...
1
2
 
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
...
76
77
78
79
80
 
81
...
1
2
3
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
6
7
...
15
16
17
 
 
18
19
0
@@ -1,68 +1,7 @@
0
 <ul class="project_list">
0
 <% events.reverse_each do |event| -%>
0
+ <% action, body = action_and_body_for_event(event) %>
0
   <li>
0
- <% action = "" %>
0
- <% body = nil %>
0
- <% repo = event.repository %>
0
- <% project = repo.project unless repo.nil? %>
0
- <% case event.action.name
0
- when "create project"
0
- action = "<b>created project</b> #{link_to h(project.title), project_path(project)}"
0
- body = truncate(project.stripped_description, 100)
0
- when "delete project"
0
- action = "<b>deleted project</b> #{h(event.ref)}"
0
- when "update project"
0
- action = "<b>updated project</b> #{link_to h(project.title), project_path(project)}"
0
- when "fork project"
0
- original_repo = Repository.find_by_id(event.ref.to_i)
0
- next if original_repo.nil?
0
-
0
- action = "<b>forked</b> #{link_to h(project.title), project_path(project)}/#{link_to h(original_repo.name), project_repository_url(project, original_repo)} in #{link_to h(repo.name), project_repository_url(project, repo)}"
0
- when "commit"
0
- action = "<b>commited to</b> #{link_to h(project.title), project_path(project)}/#{link_to h(repo.name), project_repository_url(project, repo)}"
0
- body = "#{link_to event.ref, project_repository_commit_path(project, repo, event.ref)}<br/>#{event.body}"
0
- when "create branch"
0
- if event.ref == "master"
0
- action = "<b>started development</b> of #{link_to h(project.title), project_path(project)}/#{link_to h(repo.name), project_repository_url(project, repo)}"
0
- body = event.body
0
- else
0
- action = "<b>created branch</b> #{link_to h(event.ref), project_repository_tree_path(project, repo, event.ref)} on #{link_to h(project.title), project_path(project)}/#{link_to h(repo.name), project_repository_url(project, repo)}"
0
- end
0
- when "delete branch"
0
- action = "<b>deleted branch</b> #{event.ref} on #{link_to h(project.title), project_path(project)}/#{link_to h(repo.name), project_repository_url(project, repo)}"
0
- when "create tag"
0
- action = "<b>tagged</b> #{link_to h(project.title), project_path(project)}/#{link_to h(repo.name), project_repository_url(project, repo)}"
0
- body = "#{link_to event.ref, project_repository_commit_path(project, repo, event.ref)}<br/>#{event.body}"
0
- when "delete tag"
0
- action = "<b>deleted tag</b> #{event.ref} on #{link_to h(project.title), project_path(project)}/#{link_to h(repo.name), project_repository_url(project, repo)}"
0
- when "add committer"
0
- committer = User.find_by_id(event.ref.to_i)
0
- next if committer.nil?
0
- action = "<b>added committer</b> #{link_to committer.login, user_path(committer)} to #{link_to h(project.title), project_path(project)}/#{link_to h(repo.name), project_repository_url(project, repo)}"
0
- when "remove committer"
0
- committer = User.find_by_id(event.ref.to_i)
0
- next if committer.nil?
0
- action = "<b>removed committer</b> #{link_to committer.login, user_path(committer)} from #{link_to h(project.title), project_path(project)}/#{link_to h(repo.name), project_repository_url(project, repo)}"
0
- when "comment"
0
- action = "<b>commented</b> #{link_to h(project.title), project_path(project)}/#{link_to h(repo.name), project_repository_url(project, repo)}"
0
- comment = Comment.find_by_id(event.ref.to_i)
0
- body = truncate(h(comment.body), 100)
0
- when "request merge"
0
- request = MergeRequest.find_by_id(event.ref.to_i)
0
- next if request.nil?
0
- action = "<b>requested merge</b> #{link_to h(project.title), project_path(project)}/#{link_to h(repo.name), project_repository_url(project, repo)} to #{link_to h(project.title), project_path(project)}/#{link_to h(request.target_repository.name)}"
0
- body = "#{link_to "review", [project, request.target_repository, request]}<br/>#{truncate(h(request.proposal), 100)}"
0
- when "resolve merge request"
0
- request = MergeRequest.find_by_id(event.ref.to_i)
0
- next if request.nil?
0
- action = "<b>resolved merge request to </b> [#{request.status_string}] from #{link_to h(project.title), project_path(project)}/#{link_to h(repo.name), project_repository_url(project, repo)}"
0
- when "update merge request"
0
- request = MergeRequest.find_by_id(event.ref.to_i)
0
- next if request.nil?
0
- action = "<b>updated merge request</b> from #{link_to h(project.title), project_path(project)}/#{link_to h(repo.name), project_repository_url(project, repo)}"
0
- when "delete merge request"
0
- action = "<b>deleted merge request</b> from #{link_to h(project.title), project_path(project)}/#{link_to h(repo.name), project_repository_url(project, repo)}"
0
- end -%>
0
     <div style="margin: 20px; padding-bottom: 10px;" >
0
       <% unless action.empty? %>
0
       <%= link_to event.user.login, user_path(event.user) %> <%= action %> <%= time_ago_in_words(event.date) %>
0
@@ -76,5 +15,4 @@
0
     </div>
0
   </li>
0
 <% end -%>
0
-</ul>
0
-
0
+</ul>
0
\ No newline at end of file
...
124
125
126
127
128
 
129
130
131
...
124
125
126
 
 
127
128
129
130
0
@@ -124,8 +124,7 @@ while line = gets
0
   puts "#{hash[:author]}: #{action_name} #{ref} on #{slug} [#{hash[:date]}]"
0
   puts " #{hash[:message]}"
0
   
0
- action = Action.find_by_name(action_name)
0
- Event.from_action_name(action_name, user, repository, ref, hash[:message])
0
+ user.create_event(action_name, repository, ref, hash[:message])
0
 end
0
 
0
 puts "=> Thanks! http://#{GitoriousConfig['gitorious_host']}/events"
...
9
10
11
12
 
 
13
14
15
...
9
10
11
 
12
13
14
15
16
0
@@ -9,7 +9,8 @@ class CreateActions < ActiveRecord::Migration
0
     Action.create :name => "create project"
0
     Action.create :name => "delete project"
0
     Action.create :name => "update project"
0
- Action.create :name => "fork project"
0
+ Action.create :name => "clone repository"
0
+ Action.create :name => "delete repository"
0
     
0
     # On repository
0
     Action.create :name => "commit"
...
2
3
4
5
6
7
 
8
9
 
 
 
10
11
12
...
16
17
18
 
...
2
3
4
 
5
 
6
7
8
9
10
11
12
13
14
...
18
19
20
21
0
@@ -2,11 +2,13 @@ class CreateEvents < ActiveRecord::Migration
0
   def self.up
0
     create_table :events do |t|
0
       t.integer :user_id, :null => false
0
- t.integer :repository_id
0
       t.integer :action_id, :null => false
0
- t.string :ref
0
+ t.string :data # Additional data
0
       t.text :body
0
       t.datetime :date, :null => false
0
+
0
+ t.integer :target_id
0
+ t.string :target_type
0
     end
0
     
0
     add_index :events, :user_id
0
@@ -16,3 +18,4 @@ class CreateEvents < ActiveRecord::Migration
0
     drop_table :events
0
   end
0
 end
0
+
...
38
39
40
41
42
43
44
...
38
39
40
 
41
42
43
0
@@ -38,7 +38,6 @@ class GitBackend
0
     protected
0
       def post_create(path)
0
         FileUtils.touch(File.join(path, "git-daemon-export-ok"))
0
- execute_command(%Q{chmod +x #{File.join(path, "hooks/post-update")}})
0
         execute_command(%Q{GIT_DIR="#{path}" git-update-server-info})
0
       end
0
       

Comments

    No one has commented yet.