From c2a3b7b5a76fd0f826b2df66dfbebca957c200f1 Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 11 Aug 2013 17:17:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/repositories_controller.rb | 58 ++++++-- app/helpers/repositories_helper.rb | 125 ++++++++++-------- .../projects/settings/_repositories.html.erb | 5 + config/locales/zh.yml | 6 +- config/routes.rb | 7 +- 5 files changed, 133 insertions(+), 68 deletions(-) diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 03b5967f..7d815512 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -19,34 +19,51 @@ require 'SVG/Graph/Bar' require 'SVG/Graph/BarHorizontal' require 'digest/sha1' require 'redmine/scm/adapters/abstract_adapter' +require 'tempfile' class ChangesetNotFound < Exception; end class InvalidRevisionParam < Exception; end class RepositoriesController < ApplicationController - layout 'base_projects' menu_item :repository menu_item :settings, :only => [:new, :create, :edit, :update, :destroy, :committers] default_search_scope :changesets - - before_filter :find_project_by_project_id, :only => [:new, :create] + + before_filter :find_project_by_project_id, :only => [:new, :create, :newrepo] before_filter :find_repository, :only => [:edit, :update, :destroy, :committers] - before_filter :find_project_repository, :except => [:new, :create, :edit, :update, :destroy, :committers] + before_filter :find_project_repository, :except => [:new, :create, :newcreate, :edit, :update, :destroy, :committers, :newrepo] before_filter :find_changeset, :only => [:revision, :add_related_issue, :remove_related_issue] - before_filter :authorize + before_filter :authorize , :except => [:newrepo,:newcreate] accept_rss_auth :revisions + rescue_from Redmine::Scm::Adapters::CommandFailed, :with => :show_error_command_failed - def new scm = params[:repository_scm] || (Redmine::Scm::Base.all & Setting.enabled_scm).first @repository = Repository.factory(scm) @repository.is_default = @project.repository.nil? @repository.project = @project end - + + def newrepo + scm = params[:repository_scm] || (Redmine::Scm::Base.all & Setting.enabled_scm).first + @repository = Repository.factory(scm) + @repository.is_default = @project.repository.nil? + @repository.project = @project + end + def create attrs = pickup_extra_info + if(params[:repository]["upassword"]) + params[:repository]["password"]=params[:repository]["upassword"] + if(params[:repository_scm]=="Subversion") + + params[:repository]["url"]='svn://10.0.47.245/'+params[:repository]["identifier"] + end + if(params[:repository_scm]=="Git") + params[:repository]["url"]=params[:repository]["identifier"]+'@10.0.47.245://'+params[:repository]["identifier"] + end + end @repository = Repository.factory(params[:repository_scm]) @repository.safe_attributes = params[:repository] if attrs[:attrs_extra].keys.any? @@ -54,12 +71,29 @@ class RepositoriesController < ApplicationController end @repository.project = @project if request.post? && @repository.save + if(params[:repository]["upassword"]&¶ms[:repository_scm]=="Git") + system "htpasswd -mb /home/pdl/redmine-2.3.2-0/apache2/trustie2.passwd #{params[:repository]["identifier"]} #{params[:repository]["upassword"]}" + system "git init --bare /home/pdl/redmine-2.3.2-0/apache2/htdocs/#{params[:repository]["identifier"]}.git" + system "mv /home/pdl/redmine-2.3.2-0/apache2/htdocs/#{params[:repository]["identifier"]}.git/hooks/post-update{.sample,}" + system "./home/pdl/redmine-2.3.2-0/apache2/htdocs/#{params[:repository]["identifier"]}.git/hooks/post-update" + } + #system "C:/Users/ta/Desktop/modify.bat #{params[:repository]["identifier"]} #{params[:repository]["upassword"]}" + # system("mkdir c:/test/svn123") + # system("git init --bare c:/test/svn123/#{params[:repository]["identifier"]}") + + end + if(params[:repository]["upassword"]&¶ms[:repository_scm]=="Subversion") + system("svnadmin create c:/test/#{@project}/#{params[:repository]["identifier"]}") + end redirect_to settings_project_path(@project, :tab => 'repositories') - else - render :action => 'new' + else if(params[:repository]["upassword"]) + render :action => 'newrepo' + else + render :action => 'new' + end end end - + def edit end @@ -370,7 +404,7 @@ class RepositoriesController < ApplicationController graph = SVG::Graph::Bar.new( :height => 300, - :width => 650, + :width => 800, :fields => fields.reverse, :stack => :side, :scale_integers => true, @@ -413,7 +447,7 @@ class RepositoriesController < ApplicationController graph = SVG::Graph::BarHorizontal.new( :height => 400, - :width => 650, + :width => 800, :fields => fields, :stack => :side, :scale_integers => true, diff --git a/app/helpers/repositories_helper.rb b/app/helpers/repositories_helper.rb index ae45d2a5..e100b131 100644 --- a/app/helpers/repositories_helper.rb +++ b/app/helpers/repositories_helper.rb @@ -126,7 +126,15 @@ module RepositoriesHelper send(method, form, repository) end end - + # by xianbo + def repository_field_tags_new(form, repository) + method = repository.class.name.demodulize.underscore + "_field_tags_new" + if repository.is_a?(Repository) && + respond_to?(method) && method != 'repository_field_tags_new' + send(method, form, repository) + end + end + def scm_select_tag(repository) scm_options = [["--- #{l(:actionview_instancetag_blank_option)} ---", '']] Redmine::Scm::Base.all.each do |scm| @@ -154,37 +162,40 @@ module RepositoriesHelper :disabled => !repository.safe_attribute?('url')) + '
'.html_safe + '(file:///, http://, https://, svn://, svn+[tunnelscheme]://)') + - content_tag('p', form.text_field(:login, :size => 30)) + + content_tag('p', form.text_field(:login, :size => 30))+ content_tag('p', form.password_field( :password, :size => 30, :name => 'ignore', :value => ((repository.new_record? || repository.password.blank?) ? '' : ('x'*15)), :onfocus => "this.value=''; this.name='repository[password]';", :onchange => "this.name='repository[password]';")) end + # by xianbo + def subversion_field_tags_new(form, repository) - def darcs_field_tags(form, repository) - content_tag('p', form.text_field( - :url, :label => l(:field_path_to_repository), - :size => 60, :required => true, - :disabled => !repository.safe_attribute?('url'))) + - content_tag('p', form.select( - :log_encoding, [nil] + Setting::ENCODINGS, - :label => l(:field_commit_logs_encoding), :required => true)) end + # def darcs_field_tags(form, repository) + # content_tag('p', form.text_field( + # :url, :label => l(:field_path_to_repository), + # :size => 60, :required => true, + # :disabled => !repository.safe_attribute?('url'))) + + # content_tag('p', form.select( + # :log_encoding, [nil] + Setting::ENCODINGS, + # :label => l(:field_commit_logs_encoding), :required => true)) + # end - def mercurial_field_tags(form, repository) - content_tag('p', form.text_field( - :url, :label => l(:field_path_to_repository), - :size => 60, :required => true, - :disabled => !repository.safe_attribute?('url') - ) + - '
'.html_safe + l(:text_mercurial_repository_note)) + - content_tag('p', form.select( - :path_encoding, [nil] + Setting::ENCODINGS, - :label => l(:field_scm_path_encoding) - ) + - '
'.html_safe + l(:text_scm_path_encoding_note)) - end + # def mercurial_field_tags(form, repository) + # content_tag('p', form.text_field( + # :url, :label => l(:field_path_to_repository), + # :size => 60, :required => true, + # :disabled => !repository.safe_attribute?('url') + # ) + + # '
'.html_safe + l(:text_mercurial_repository_note)) + + # content_tag('p', form.select( + # :path_encoding, [nil] + Setting::ENCODINGS, + # :label => l(:field_scm_path_encoding) + # ) + + # '
'.html_safe + l(:text_scm_path_encoding_note)) + # end def git_field_tags(form, repository) content_tag('p', form.text_field( @@ -204,37 +215,43 @@ module RepositoriesHelper :label => l(:label_git_report_last_commit) )) end - - def cvs_field_tags(form, repository) - content_tag('p', form.text_field( - :root_url, - :label => l(:field_cvsroot), - :size => 60, :required => true, - :disabled => !repository.safe_attribute?('root_url'))) + - content_tag('p', form.text_field( - :url, - :label => l(:field_cvs_module), - :size => 30, :required => true, - :disabled => !repository.safe_attribute?('url'))) + - content_tag('p', form.select( - :log_encoding, [nil] + Setting::ENCODINGS, - :label => l(:field_commit_logs_encoding), :required => true)) + - content_tag('p', form.select( - :path_encoding, [nil] + Setting::ENCODINGS, - :label => l(:field_scm_path_encoding) - ) + - '
'.html_safe + l(:text_scm_path_encoding_note)) +# by xianbo + def git_field_tags_new(form, repository) + content_tag('p', form.check_box( + :extra_report_last_commit, + :label => l(:label_git_report_last_commit) + )) end + # def cvs_field_tags(form, repository) + # content_tag('p', form.text_field( + # :root_url, + # :label => l(:field_cvsroot), + # :size => 60, :required => true, + # :disabled => !repository.safe_attribute?('root_url'))) + + # content_tag('p', form.text_field( + # :url, + # :label => l(:field_cvs_module), + # :size => 30, :required => true, + # :disabled => !repository.safe_attribute?('url'))) + + # content_tag('p', form.select( + # :log_encoding, [nil] + Setting::ENCODINGS, + # :label => l(:field_commit_logs_encoding), :required => true)) + + # content_tag('p', form.select( + # :path_encoding, [nil] + Setting::ENCODINGS, + # :label => l(:field_scm_path_encoding) + # ) + + # '
'.html_safe + l(:text_scm_path_encoding_note)) + # end - def bazaar_field_tags(form, repository) - content_tag('p', form.text_field( - :url, :label => l(:field_path_to_repository), - :size => 60, :required => true, - :disabled => !repository.safe_attribute?('url'))) + - content_tag('p', form.select( - :log_encoding, [nil] + Setting::ENCODINGS, - :label => l(:field_commit_logs_encoding), :required => true)) - end + # def bazaar_field_tags(form, repository) + # content_tag('p', form.text_field( + # :url, :label => l(:field_path_to_repository), + # :size => 60, :required => true, + # :disabled => !repository.safe_attribute?('url'))) + + # content_tag('p', form.select( + # :log_encoding, [nil] + Setting::ENCODINGS, + # :label => l(:field_commit_logs_encoding), :required => true)) + # end def filesystem_field_tags(form, repository) content_tag('p', form.text_field( @@ -276,7 +293,7 @@ module RepositoriesHelper space ||= index_head(0, commits.first, commits_by_scmid) return commits_by_scmid, space end - + def index_head(space, commit, commits_by_scmid) stack = [[space, commits_by_scmid[commit.scmid]]] max_space = space @@ -295,3 +312,5 @@ module RepositoriesHelper max_space end end + + diff --git a/app/views/projects/settings/_repositories.html.erb b/app/views/projects/settings/_repositories.html.erb index 4492165c..6b6f9a06 100644 --- a/app/views/projects/settings/_repositories.html.erb +++ b/app/views/projects/settings/_repositories.html.erb @@ -39,3 +39,8 @@ <% if User.current.allowed_to?(:manage_repository, @project) %>

<%= link_to l(:label_repository_new), new_project_repository_path(@project), :class => 'icon icon-add' %>

<% end %> + +<% if User.current.allowed_to?(:manage_repository, @project) %> +

<%= l(:label_repository_no) %> + <%= link_to l(:label_repository_new_repos), newrepo_project_repository_path(@project), :class => 'icon icon-add' %>

+<% end %> \ No newline at end of file diff --git a/config/locales/zh.yml b/config/locales/zh.yml index b90867e2..9a8217b0 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -1055,7 +1055,9 @@ zh: zero: 0 问题 one: 1 问题 other: "%{count} 问题" - label_repository_new: 新建版本库 + label_repository_new: 配置版本库 + label_repository_no: 还没有版本库? + label_repository_new_repos: 新建版本库 field_repository_is_default: 主版本库 label_copy_attachments: 复制附件 label_item_position: "%{position}/%{count}" @@ -1229,4 +1231,4 @@ zh: label_in_issues: 在问题: label_in_bids: 在需求: label_in_users: 在用户: - label_have_respond: 进行了反馈 \ No newline at end of file + label_have_respond: 进行了反馈 diff --git a/config/routes.rb b/config/routes.rb index 0562cba4..72e8ca27 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -204,7 +204,12 @@ RedmineApp::Application.routes.draw do match 'committers', :via => [:get, :post] end end - + resources :repositories, :except => [:index, :show] do + member do + get 'newrepo', :via => [:get, :post] + # get 'create', :via=>[:get, :post] + end + end match 'wiki/index', :controller => 'wiki', :action => 'index', :via => :get resources :wiki, :except => [:index, :new, :create], :as => 'wiki_page' do member do