Commit d10b34a685509eebbe52391ffce861cde45cc0ca

Authored by Dmitriy Zaporozhets
1 parent 87c397f5

Save repository size to projects table

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
app/helpers/projects_helper.rb
@@ -163,7 +163,7 @@ module ProjectsHelper @@ -163,7 +163,7 @@ module ProjectsHelper
163 end 163 end
164 164
165 def repository_size(project = nil) 165 def repository_size(project = nil)
166 - "#{(project || @project).repository.size} MB" 166 + "#{(project || @project).repository_size} MB"
167 rescue 167 rescue
168 # In order to prevent 500 error 168 # In order to prevent 500 error
169 # when application cannot allocate memory 169 # when application cannot allocate memory
app/models/project.rb
@@ -562,4 +562,8 @@ class Project &lt; ActiveRecord::Base @@ -562,4 +562,8 @@ class Project &lt; ActiveRecord::Base
562 def forked_from?(project) 562 def forked_from?(project)
563 forked? && project == forked_from_project 563 forked? && project == forked_from_project
564 end 564 end
  565 +
  566 + def update_repository_size
  567 + update_attribute(:repository_size, repository.size)
  568 + end
565 end 569 end
app/services/git_push_service.rb
@@ -25,6 +25,7 @@ class GitPushService @@ -25,6 +25,7 @@ class GitPushService
25 25
26 project.ensure_satellite_exists 26 project.ensure_satellite_exists
27 project.repository.expire_cache 27 project.repository.expire_cache
  28 + project.update_repository_size
28 29
29 if push_to_existing_branch?(ref, oldrev) 30 if push_to_existing_branch?(ref, oldrev)
30 project.update_merge_requests(oldrev, newrev, ref, @user) 31 project.update_merge_requests(oldrev, newrev, ref, @user)
db/migrate/20140502115131_add_repo_size_to_db.rb 0 → 100644
@@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
  1 +class AddRepoSizeToDb < ActiveRecord::Migration
  2 + def change
  3 + add_column :projects, :repository_size, :float, default: 0
  4 + end
  5 +end
db/migrate/20140502125220_migrate_repo_size.rb 0 → 100644
@@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
  1 +class MigrateRepoSize < ActiveRecord::Migration
  2 + def up
  3 + Project.reset_column_information
  4 + Project.find_each(batch_size: 500) do |project|
  5 + begin
  6 + if project.empty_repo?
  7 + print '-'
  8 + else
  9 + project.update_repository_size
  10 + print '.'
  11 + end
  12 + rescue
  13 + print 'F'
  14 + end
  15 + end
  16 + puts 'Done'
  17 + end
  18 +
  19 + def down
  20 + end
  21 +end
@@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@
11 # 11 #
12 # It's strongly recommended that you check this file into your version control system. 12 # It's strongly recommended that you check this file into your version control system.
13 13
14 -ActiveRecord::Schema.define(version: 20140428105831) do 14 +ActiveRecord::Schema.define(version: 20140502125220) do
15 15
16 # These are extensions that must be enabled in order to support this database 16 # These are extensions that must be enabled in order to support this database
17 enable_extension "plpgsql" 17 enable_extension "plpgsql"
@@ -222,6 +222,7 @@ ActiveRecord::Schema.define(version: 20140428105831) do @@ -222,6 +222,7 @@ ActiveRecord::Schema.define(version: 20140428105831) do
222 t.integer "visibility_level", default: 0, null: false 222 t.integer "visibility_level", default: 0, null: false
223 t.boolean "archived", default: false, null: false 223 t.boolean "archived", default: false, null: false
224 t.string "import_status" 224 t.string "import_status"
  225 + t.float "repository_size", default: 0.0
225 end 226 end
226 227
227 add_index "projects", ["creator_id"], name: "index_projects_on_creator_id", using: :btree 228 add_index "projects", ["creator_id"], name: "index_projects_on_creator_id", using: :btree