添加了新建版本库

This commit is contained in:
Administrator 2013-08-11 17:17:59 +08:00
parent 2ff09800eb
commit c2a3b7b5a7
5 changed files with 133 additions and 68 deletions

View File

@ -19,25 +19,25 @@ 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
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)
@ -45,8 +45,25 @@ class RepositoriesController < ApplicationController
@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,11 +71,28 @@ class RepositoriesController < ApplicationController
end
@repository.project = @project
if request.post? && @repository.save
if(params[:repository]["upassword"]&&params[: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"]&&params[:repository_scm]=="Subversion")
system("svnadmin create c:/test/#{@project}/#{params[:repository]["identifier"]}")
end
redirect_to settings_project_path(@project, :tab => 'repositories')
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,

View File

@ -126,6 +126,14 @@ 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)} ---", '']]
@ -154,37 +162,40 @@ module RepositoriesHelper
:disabled => !repository.safe_attribute?('url')) +
'<br />'.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')
) +
'<br />'.html_safe + l(:text_mercurial_repository_note)) +
content_tag('p', form.select(
:path_encoding, [nil] + Setting::ENCODINGS,
:label => l(:field_scm_path_encoding)
) +
'<br />'.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')
# ) +
# '<br />'.html_safe + l(:text_mercurial_repository_note)) +
# content_tag('p', form.select(
# :path_encoding, [nil] + Setting::ENCODINGS,
# :label => l(:field_scm_path_encoding)
# ) +
# '<br />'.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)
) +
'<br />'.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)
# ) +
# '<br />'.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(
@ -295,3 +312,5 @@ module RepositoriesHelper
max_space
end
end

View File

@ -39,3 +39,8 @@
<% if User.current.allowed_to?(:manage_repository, @project) %>
<p><%= link_to l(:label_repository_new), new_project_repository_path(@project), :class => 'icon icon-add' %></p>
<% end %>
<!-- no repository new by xianbo-->
<% if User.current.allowed_to?(:manage_repository, @project) %>
<p><%= l(:label_repository_no) %>
<%= link_to l(:label_repository_new_repos), newrepo_project_repository_path(@project), :class => 'icon icon-add' %></p>
<% end %>

View File

@ -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}"

View File

@ -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