diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index f0b15e8f8..8eb6a6860 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -348,10 +348,6 @@ update # end # end - - - - @changesets = g.commits(@project.gpid, :ref_name => @rev) # @changesets = @repository.latest_changesets(@path, @rev) # @changesets_count = @repository.latest_changesets(@path, @rev).count @@ -378,19 +374,6 @@ update alias_method :browse, :show - #add by hx - def count_commits(project_id , left , right) - count = 0 - (left..right).each do |page| - if $g.commits(project_id,:page => page).count == 0 - break - else - count = count + $g.commits(project_id,:page => page).count - end - end - return count - end - def changes @entry = @repository.entry(@path, @rev) (show_error_not_found; return) unless @entry @@ -400,26 +383,10 @@ update @commits = g.commits(@project.gpid, page:(params[:page].to_i - 1).to_s) #add by hx - if g.commits(@project.gpid , :page=>200).count > 0 - count = 4020 - elsif g.commits(@project.gpid , :page=>25).count==0 - count = count_commits(@project.gpid , 0 , 25) - elsif g.commits(@project.gpid , :page=>50).count ==0 - count = count_commits(@project.gpid , 25 , 50)+ 25 * 20 - elsif g.commits(@project.gpid , :page=>75).count ==0 - count = count_commits(@project.gpid , 50 , 75)+ 50 * 20 - elsif g.commits(@project.gpid , :page=>100).count== 0 - count = count_commits(@project.gpid , 75 , 100) + 75 * 20 - elsif g.commits(@project.gpid , :page=>125).count==0 - count = count_commits(@project.gpid , 100 , 125) + 100 * 20 - elsif g.commits(@project.gpid , :page=>150).count==0 - count = count_commits(@project.gpid , 125 , 150) + 125 * 20 - else - count = count_commits(@project.gpid , 150 ,200) + 150 * 20 - end + rep_count = commit_count(@project) #页面传递必须要str类型,但是Paginator的初始化必须要num类型,需要类型转化 - @commits_count = count + @commits_count = rep_count @commits_pages = Redmine::Pagination::Paginator.new @commits_count,limit,params[:page] @commit = g.commit(@project.gpid,@rev) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 22200b90e..0650db1cf 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -668,6 +668,42 @@ module ApplicationHelper return rep.blank? ? true :false end + # 获取Gitlab版本库提交总数 + def commit_count(project) + g = Gitlab.client + #add by hx + if g.commits(project.gpid , :page=>200).count > 0 + count = 4020 + elsif g.commits(project.gpid , :page=>25).count==0 + count = count_commits(project.gpid , 0 , 25) + elsif g.commits(project.gpid , :page=>50).count ==0 + count = count_commits(project.gpid , 25 , 50)+ 25 * 20 + elsif g.commits(project.gpid , :page=>75).count ==0 + count = count_commits(project.gpid , 50 , 75)+ 50 * 20 + elsif g.commits(project.gpid , :page=>100).count== 0 + count = count_commits(project.gpid , 75 , 100) + 75 * 20 + elsif g.commits(project.gpid , :page=>125).count==0 + count = count_commits(project.gpid , 100 , 125) + 100 * 20 + elsif g.commits(project.gpid , :page=>150).count==0 + count = count_commits(project.gpid , 125 , 150) + 125 * 20 + else + count = count_commits(project.gpid , 150 ,200) + 150 * 20 + end + end + + #add by hx + def count_commits(project_id , left , right) + count = 0 + (left..right).each do |page| + if $g.commits(project_id,:page => page).count == 0 + break + else + count = count + $g.commits(project_id,:page => page).count + end + end + return count + end + # 获取单一gitlab项目 def gitlab_repository(project) rep = Repository.where("project_id =? and type =?", project.id,"Repository::Gitlab" ).first diff --git a/app/helpers/project_score_helper.rb b/app/helpers/project_score_helper.rb index 104cd16cb..256e35a7a 100644 --- a/app/helpers/project_score_helper.rb +++ b/app/helpers/project_score_helper.rb @@ -22,6 +22,7 @@ module ProjectScoreHelper #代码提交数量 def changesets_num project + # commit_count(project) project.changesets.count end diff --git a/app/models/mailer.rb b/app/models/mailer.rb index 8891e6552..551ddd616 100644 --- a/app/models/mailer.rb +++ b/app/models/mailer.rb @@ -395,13 +395,13 @@ class Mailer < ActionMailer::Base user = User.find_by_mail(recipients) @user = user @token = Token.get_token_from_user(user, 'autologin') - @issue_url = url_for(:controller => 'issues', :action => 'show', :id => issue.id, :token => @token.value) + @issue_url = url_for(:controller => 'issues', :action => 'show', :id => issue.id) # edit - @issue_author_url = url_for(user_activities_url(@author,:token => @token.value)) - @project_url = url_for(:controller => 'projects', :action => 'show', :id => issue.project_id, :token => @token.value) + @issue_author_url = url_for(user_activities_url(@author)) + @project_url = url_for(:controller => 'projects', :action => 'show', :id => issue.project_id) - @user_url = url_for(my_account_url(user,:token => @token.value)) + @user_url = url_for(my_account_url(user)) subject = "[#{issue.project.name} - #{issue.tracker.name} ##{issue_id}] (#{issue.status.name}) #{issue.subject}" @@ -471,7 +471,7 @@ class Mailer < ActionMailer::Base recipients = @project.manager_recipients s = l(:text_applied_project, :id => "##{@user.show_name}", :project => @project.name) @token = Token.get_token_from_user(@user, 'autologin') - @applied_url = url_for(:controller => 'projects', :action => 'settings', :id => @project.id,:tab=>'members', :token => @token.value) + @applied_url = url_for(:controller => 'projects', :action => 'settings', :id => @project.id,:tab=>'members') mail :to => recipients, :subject => s end diff --git a/app/views/repositories/_link_to_functions.html.erb b/app/views/repositories/_link_to_functions.html.erb index fc3784d46..0e2a402ae 100644 --- a/app/views/repositories/_link_to_functions.html.erb +++ b/app/views/repositories/_link_to_functions.html.erb @@ -5,9 +5,9 @@ <% if @repository.supports_cat? %> <%= link_to_if action_name != 'entry', l(:button_view), {:action => 'entry', :id => @project, :repository_id => @repository.identifier_param, :path => to_path_param(@path), :rev => @rev } %> | <% end %> -<% if @repository.supports_annotate? %> - <%= link_to_if action_name != 'annotate', l(:button_annotate), {:action => 'annotate', :id => @project, :repository_id => @repository.identifier_param, :path => to_path_param(@path), :rev => @rev } %> | -<% end %> +<%# if @repository.supports_annotate? %> + <%#= link_to_if action_name != 'annotate', l(:button_annotate), {:action => 'annotate', :id => @project, :repository_id => @repository.identifier_param, :path => to_path_param(@path), :rev => @rev } %> +<%# end %> <%= link_to(l(:button_download), {:action => 'raw', :id => @project, :repository_id => @repository.identifier_param, diff --git a/app/views/repositories/_revisions.html.erb b/app/views/repositories/_revisions.html.erb index b72a05876..4d6e39f88 100644 --- a/app/views/repositories/_revisions.html.erb +++ b/app/views/repositories/_revisions.html.erb @@ -20,42 +20,31 @@
@@ -65,7 +54,6 @@

<%#= submit_tag(l(:label_view_diff), :name => nil, :class=>"c_blue") if show_diff %>

- diff --git a/app/views/repositories/show.html.erb b/app/views/repositories/show.html.erb index aaa740d24..e7616a020 100644 --- a/app/views/repositories/show.html.erb +++ b/app/views/repositories/show.html.erb @@ -53,7 +53,7 @@ - <%=link_to"全部提交次数", {:action => 'changes', :path => to_path_param(@path), :id => @project, :repository_id => @repository.identifier_param, :rev => @rev,:page=>1 ,:commit_count =>"#{@changesets_all_count}"} %> + <%=link_to"提交明细", {:action => 'changes', :path => to_path_param(@path), :id => @project, :repository_id => @repository.identifier_param, :rev => @rev,:page=>1 ,:commit_count =>"#{@changesets_all_count}"} %> diff --git a/config/configuration.yml b/config/configuration.yml deleted file mode 100644 index 3790045aa..000000000 --- a/config/configuration.yml +++ /dev/null @@ -1,235 +0,0 @@ -# = Redmine configuration file -# -# Each environment has it's own configuration options. If you are only -# running in production, only the production block needs to be configured. -# Environment specific configuration options override the default ones. -# -# Note that this file needs to be a valid YAML file. -# DO NOT USE TABS! Use 2 spaces instead of tabs for identation. -# -# == Outgoing email settings (email_delivery setting) -# -# === Common configurations -# -# ==== Sendmail command -# -# production: -# email_delivery: -# delivery_method: :sendmail -# -# ==== Simple SMTP server at localhost -# -# production: -# email_delivery: -# delivery_method: :smtp -# smtp_settings: -# address: smtp.163.com -# port: 25 -# -# ==== SMTP server at example.com using LOGIN authentication and checking HELO for foo.com -# -# production: -# email_delivery: -# delivery_method: :smtp -# smtp_settings: -# address: smtp.gmail.com -# port: 587 -# authentication: :login -# domain: 'foo.com' -# user_name: senluowanxiangt@gmail.com -# password: 1913TXBja -# -# ==== SMTP server at example.com using PLAIN authentication -# -# production: -# email_delivery: -# delivery_method: :smtp -# smtp_settings: -# address: smtp.gmail.com -# port: 587 -# authentication: :plain -# domain: 'example.com' -# user_name: senluowanxiangt@gmail.com -# password: 1913TXBja -# -# ==== SMTP server at using TLS (GMail) -# -# This might require some additional configuration. See the guides at: -# http://www.redmine.org/projects/redmine/wiki/EmailConfiguration -# -# production: -# email_delivery: -# delivery_method: :smtp -# smtp_settings: -# enable_starttls_auto: true -# address: smtp.gmail.com -# port: 587 -# domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps -# authentication: :plain -# user_name: senluowanxiangt@gmail.com -# password: 1913TXBja -# -# -# === More configuration options -# -# See the "Configuration options" at the following website for a list of the -# full options allowed: -# -# http://wiki.rubyonrails.org/rails/pages/HowToSendEmailsWithActionMailer - - - -default: - email_delivery: - delivery_method: :smtp - smtp_settings: - address: mail.trustie.net - port: 25 - domain: mail.trustie.net - authentication: :login - user_name: "mail@trustie.net" - password: "loong2010" - - # Absolute path to the directory where attachments are stored. - # The default is the 'files' directory in your Redmine instance. - # Your Redmine instance needs to have write permission on this - # directory. - # Examples: - # attachments_storage_path: /var/redmine/files - # attachments_storage_path: D:/redmine/files - attachments_storage_path: - - # Configuration of the autologin cookie. - # autologin_cookie_name: the name of the cookie (default: autologin) - # autologin_cookie_path: the cookie path (default: /) - # autologin_cookie_secure: true sets the cookie secure flag (default: false) - autologin_cookie_name: "autologin_trustie" - autologin_cookie_path: - autologin_cookie_secure: - - # Configuration of SCM executable command. - # - # Absolute path (e.g. /usr/local/bin/hg) or command name (e.g. hg.exe, bzr.exe) - # On Windows + CRuby, *.cmd, *.bat (e.g. hg.cmd, bzr.bat) does not work. - # - # On Windows + JRuby 1.6.2, path which contains spaces does not work. - # For example, "C:\Program Files\TortoiseHg\hg.exe". - # If you want to this feature, you need to install to the path which does not contains spaces. - # For example, "C:\TortoiseHg\hg.exe". - # - # Examples: - # scm_subversion_command: svn # (default: svn) - # scm_mercurial_command: C:\Program Files\TortoiseHg\hg.exe # (default: hg) - # scm_git_command: /usr/local/bin/git # (default: git) - # scm_cvs_command: cvs # (default: cvs) - # scm_bazaar_command: bzr.exe # (default: bzr) - # scm_darcs_command: darcs-1.0.9-i386-linux # (default: darcs) - # - scm_subversion_command: - scm_mercurial_command: - scm_git_command: - scm_cvs_command: - scm_bazaar_command: - scm_darcs_command: - - # Absolute path to the SCM commands errors (stderr) log file. - # The default is to log in the 'log' directory of your Redmine instance. - # Example: - # scm_stderr_log_file: /var/log/redmine_scm_stderr.log - scm_stderr_log_file: - - # Key used to encrypt sensitive data in the database (SCM and LDAP passwords). - # If you don't want to enable data encryption, just leave it blank. - # WARNING: losing/changing this key will make encrypted data unreadable. - # - # If you want to encrypt existing passwords in your database: - # * set the cipher key here in your configuration file - # * encrypt data using 'rake db:encrypt RAILS_ENV=production' - # - # If you have encrypted data and want to change this key, you have to: - # * decrypt data using 'rake db:decrypt RAILS_ENV=production' first - # * change the cipher key here in your configuration file - # * encrypt data using 'rake db:encrypt RAILS_ENV=production' - database_cipher_key: - - # Set this to false to disable plugins' assets mirroring on startup. - # You can use `rake redmine:plugins:assets` to manually mirror assets - # to public/plugin_assets when you install/upgrade a Redmine plugin. - # - #mirror_plugins_assets_on_startup: false - - # Your secret key for verifying cookie session data integrity. If you - # change this key, all old sessions will become invalid! Make sure the - # secret is at least 30 characters and all random, no regular words or - # you'll be exposed to dictionary attacks. - # - # If you have a load-balancing Redmine cluster, you have to use the - # same secret token on each machine. - #secret_token: 'change it to a long random string' - - # Absolute path (e.g. /usr/bin/convert, c:/im/convert.exe) to - # the ImageMagick's `convert` binary. Used to generate attachment thumbnails. - imagemagick_convert_command: '/home/pdl/redmine-2.3.2-0/common/bin/convert' - - # Configuration of RMagcik font. - # - # Redmine uses RMagcik in order to export gantt png. - # You don't need this setting if you don't install RMagcik. - # - # In CJK (Chinese, Japanese and Korean), - # in order to show CJK characters correctly, - # you need to set this configuration. - # - # Because there is no standard font across platforms in CJK, - # you need to set a font installed in your server. - # - # This setting is not necessary in non CJK. - # - # Examples for Japanese: - # Windows: - # rmagick_font_path: C:\windows\fonts\msgothic.ttc - # Linux: - # rmagick_font_path: /usr/share/fonts/ipa-mincho/ipam.ttf - # - rmagick_font_path: - - # Maximum number of simultaneous AJAX uploads - #max_concurrent_ajax_uploads: 2 - #pic_types: "bmp,jpeg,jpg,png,gif" - - repository_root_path: '/tmp/htdocs' - judge_server: 'http://judge.trustie.net/' - - # Git's url - gitlab_address: 'http://gitfast.trustie.net' - -# specific configuration options for production environment -# that overrides the default ones -production: - # CJK support - rmagick_font_path: /usr/share/fonts/ipa-mincho/ipam.ttf - judge_server: 'http://192.168.80.21:8080/' - repository_root_path: '/home/pdl/redmine-2.3.2-0/apache2/htdocs' - cookie_domain: ".trustie.net" - email_delivery: - delivery_method: :smtp - smtp_settings: - address: mail.trustie.net - port: 25 - domain: mail.trustie.net - authentication: :login - user_name: "mail@trustie.net" - password: "loong2010" - -# specific configuration options for development environment -# that overrides the default ones -development: - email_delivery: - delivery_method: :smtp - smtp_settings: - address: mail.trustie.net - port: 25 - domain: mail.trustie.net - authentication: :login - user_name: "mail@trustie.net" - password: "loong2010" diff --git a/config/initializers/gitlab_config.rb b/config/initializers/gitlab_config.rb deleted file mode 100644 index c82b2edff..000000000 --- a/config/initializers/gitlab_config.rb +++ /dev/null @@ -1,9 +0,0 @@ -Gitlab.configure do |config| - # config.endpoint = 'http://192.168.41.130:3000/trustie/api/v3' # API endpoint URL, default: ENV['GITLAB_API_ENDPOINT'] - # config.private_token = 'cK15gUDwvt8EEkzwQ_63' # user's private token, default: ENV['GITLAB_API_PRIVATE_TOKEN'] - config.endpoint = 'http://gitfast.trustie.net/api/v3' # API endpoint URL, default: ENV['GITLAB_API_ENDPOINT'] - config.private_token = 'fPc_gBmEiSANve8TCfxW' # user's private token, default: ENV['GITLAB_API_PRIVATE_TOKEN'] - # Optional - # config.user_agent = 'Custom User Agent' # user agent, default: 'Gitlab Ruby Gem [version]' - # config.sudo = 'user' # username for sudo mode, default: nil -end diff --git a/db/migrate/20151217051447_delete_valid_project.rb b/db/migrate/20151217051447_delete_valid_project.rb new file mode 100644 index 000000000..fd99ac08e --- /dev/null +++ b/db/migrate/20151217051447_delete_valid_project.rb @@ -0,0 +1,15 @@ +class DeleteValidProject < ActiveRecord::Migration + def up + projects = Project.where("project_type =?", 1) + begin + projects.each do |p| + p.delete + end + rescue => e + logger.error "Delete project failed ====>#{e}" + end + end + + def down + end +end diff --git a/db/schema.rb b/db/schema.rb index 4bdde40de..df2b94ae9 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20151216030610) do +ActiveRecord::Schema.define(:version => 20151217051447) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false diff --git a/lib/gitlab-cli/lib/gitlab/client/repositories.rb b/lib/gitlab-cli/lib/gitlab/client/repositories.rb index f489e5009..4946304b9 100644 --- a/lib/gitlab-cli/lib/gitlab/client/repositories.rb +++ b/lib/gitlab-cli/lib/gitlab/client/repositories.rb @@ -58,6 +58,23 @@ class Gitlab::Client end alias_method :repo_commits, :commits + # Gets a list of project commits. + # + # @example + # Gitlab.commits('viking') + # Gitlab.repo_commits('gitlab', :ref_name => 'api') + # + # @param [Integer] project The ID of a project. + # @param [Hash] options A customizable set of options. + # @option options [String] :ref_name The branch or tag name of a project repository. + # @option options [Integer] :page The page number. + # @option options [Integer] :per_page The number of results per page. + # @return [Array] + def commits_total_count(project, options={}) + get("/projects/#{project}/repository/commits_total_count", :query => options) + end + alias_method :repo_commits, :commits_total_count + # Gets a specific commit identified by the commit hash or name of a branch or tag. # # @example