修改了版本库

This commit is contained in:
Administrator 2013-08-12 16:22:38 +08:00
parent b0c813df69
commit 57991b727a
7 changed files with 142 additions and 50 deletions

View File

@ -43,6 +43,7 @@ class RepositoriesController < ApplicationController
@repository = Repository.factory(scm) @repository = Repository.factory(scm)
@repository.is_default = @project.repository.nil? @repository.is_default = @project.repository.nil?
@repository.project = @project @repository.project = @project
render :layout => 'base_projects'
end end
def newrepo def newrepo
@ -50,46 +51,72 @@ class RepositoriesController < ApplicationController
@repository = Repository.factory(scm) @repository = Repository.factory(scm)
@repository.is_default = @project.repository.nil? @repository.is_default = @project.repository.nil?
@repository.project = @project @repository.project = @project
render :layout => 'base_projects'
end
def fork
# system "htpasswd -mb "+@root_path+"user.passwd "+params[:repository][:identifier]+" "+@upasswd
# system "echo -e '"+params[:project_id]+"-"+params[:repository][:identifier]+"-write:"+
# " "+params[:repository][:identifier]+"' >> "+@root_path+"group.passwd"
# system "git init --bare "+@project_path
# system "mv "+@project_path+"/hooks/post-update{.sample,}"
# system "chmod a+x"+@project_path+"/hooks/post-update"
# system "."+@project_path+"/hooks/post-update"
# system "echo -e 'Allow from all \n Order Deny,Allow \n "+
# "<Limit PUT POST DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> \n"+
# "Require group "+params[:project_id]+"-"+params[:repository][:identifier]+"-write \n "+
# "</Limit> \n ' >>"+
# @project_path+"/.htaccess"
render :action => "show"
end end
def create def create
##xianbo
@root_path="/home/pdl/redmine-2.3.2-0/apache2/"
@repository_name=params[:project_id]+"/"+params[:repository][:identifier]+".git"
@project_path=@root_path+"htdocs/"+@repository_name
@upasswd=params[:repository][:upassword]
attrs = pickup_extra_info attrs = pickup_extra_info
if(params[:repository]["upassword"]) if(params[:repository][:upassword]!="")
params[:repository]["password"]=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") if(params[:repository_scm]=="Git")
params[:repository]["url"]=params[:repository]["identifier"]+'@10.0.47.245://'+params[:repository]["identifier"] params[:repository][:url]=@project_path
end end
# else
# render_error l(:error_scm_password_not_set); return
# render :action => 'newrepo'
end end
###xianbo
@repository = Repository.factory(params[:repository_scm]) @repository = Repository.factory(params[:repository_scm])
@repository.safe_attributes = params[:repository] @repository.safe_attributes = params[:repository]
if attrs[:attrs_extra].keys.any? if attrs[:attrs_extra].keys.any?
@repository.merge_extra_info(attrs[:attrs_extra]) @repository.merge_extra_info(attrs[:attrs_extra])
end end
#by xianbo
@repository.project = @project @repository.project = @project
if request.post? && @repository.save if request.post? && @repository.save
if(params[:repository]["upassword"]&&params[:repository_scm]=="Git") 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 "htpasswd -mb "+@root_path+"user.passwd "+params[:repository][:identifier]+" "+@upasswd
system "git init --bare /home/pdl/redmine-2.3.2-0/apache2/htdocs/#{params[:repository]["identifier"]}.git" system "echo -e '\n"+params[:project_id]+"-"+params[:repository][:identifier]+"-write:"+
system "mv /home/pdl/redmine-2.3.2-0/apache2/htdocs/#{params[:repository]["identifier"]}.git/hooks/post-update{.sample,}" " "+params[:repository][:identifier]+"' >> "+@root_path+"group.passwd"
system "./home/pdl/redmine-2.3.2-0/apache2/htdocs/#{params[:repository]["identifier"]}.git/hooks/post-update" system "git init --bare "+@project_path
} system "mv "+@project_path+"/hooks/post-update{.sample,}"
#system "C:/Users/ta/Desktop/modify.bat #{params[:repository]["identifier"]} #{params[:repository]["upassword"]}" system "chmod a+x"+@project_path+"/hooks/post-update"
# system("mkdir c:/test/svn123") system "cd "+@project_path+"/hooks/"
# system("git init --bare c:/test/svn123/#{params[:repository]["identifier"]}") system "./post-update"
system "echo -e 'Allow from all \n Order Deny,Allow \n "+
"<Limit PUT POST DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> \n"+
"Require group "+params[:project_id]+"-"+params[:repository][:identifier]+"-write \n "+
"</Limit> \n ' >>"+
@project_path+"/.htaccess"
end 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') redirect_to settings_project_path(@project, :tab => 'repositories')
else if(params[:repository]["upassword"]) else if(@upasswd)
render :action => 'newrepo' render :action => 'newrepo', :layout =>'base_projects'
else else
render :action => 'new' render :action => 'new', :layout =>'base_projects'
end end
end end
end end

View File

@ -1005,8 +1005,17 @@ module ApplicationHelper
if errors.any? if errors.any?
html << "<div id='errorExplanation'><ul>\n" html << "<div id='errorExplanation'><ul>\n"
errors.each do |error| errors.each do |error|
###by xianbo
if(error!="库路径 不能为空字符")
html << "<li>#{h error}</li>\n" html << "<li>#{h error}</li>\n"
end end
###xianbo
end
###by xianbo
if params[:repository][:upassword]==""
html << "<li>密码不能设置为空。</li>\n"
end
###xianbo
html << "</ul></div>\n" html << "</ul></div>\n"
end end
html.html_safe html.html_safe
@ -1317,8 +1326,8 @@ module ApplicationHelper
# end # end
#added by william #added by william
def need_login def get_fans_num(user)
redirect_to signin_path user.watcher_users.count
end end
#end #end
end end

View File

@ -137,12 +137,14 @@ module RepositoriesHelper
def scm_select_tag(repository) def scm_select_tag(repository)
scm_options = [["--- #{l(:actionview_instancetag_blank_option)} ---", '']] scm_options = [["--- #{l(:actionview_instancetag_blank_option)} ---", '']]
#Modified by tanxianbo
Redmine::Scm::Base.all.each do |scm| Redmine::Scm::Base.all.each do |scm|
if Setting.enabled_scm.include?(scm) || if Setting.enabled_scm.include?(scm) ||
(repository && repository.class.name.demodulize == scm) (repository && repository.class.name.demodulize == scm)
scm_options << ["Repository::#{scm}".constantize.scm_name, scm] scm_options << ["Repository::#{scm}".constantize.scm_name, scm]
end end
end end
# Ended by tanxianbo
select_tag('repository_scm', select_tag('repository_scm',
options_for_select(scm_options, repository.class.name.demodulize), options_for_select(scm_options, repository.class.name.demodulize),
:disabled => (repository && !repository.new_record?), :disabled => (repository && !repository.new_record?),
@ -161,7 +163,7 @@ module RepositoriesHelper
content_tag('p', form.text_field(:url, :size => 60, :required => true, content_tag('p', form.text_field(:url, :size => 60, :required => true,
:disabled => !repository.safe_attribute?('url')) + :disabled => !repository.safe_attribute?('url')) +
'<br />'.html_safe + '<br />'.html_safe +
'(file:///, http://, https://, svn://, svn+[tunnelscheme]://)') + "<em class='info'>".html_safe+"定义已有版本库URL路径定义格式file:///, http://, https://, svn://, svn+[tunnelscheme]://"+"</em>".html_safe) +
content_tag('p', form.text_field(:login, :size => 30))+ content_tag('p', form.text_field(:login, :size => 30))+
content_tag('p', form.password_field( content_tag('p', form.password_field(
:password, :size => 30, :name => 'ignore', :password, :size => 30, :name => 'ignore',
@ -198,13 +200,13 @@ module RepositoriesHelper
# end # end
def git_field_tags(form, repository) def git_field_tags(form, repository)
content_tag('p', form.text_field( # content_tag('p', form.text_field(
:url, :label => l(:field_path_to_repository), # :url, :label => l(:field_path_to_repository),
:size => 60, :required => true, # :size => 60, :required => true,
:disabled => !repository.safe_attribute?('url') # :disabled => !repository.safe_attribute?('url')
) + # ) +
'<br />'.html_safe + # '<br />'.html_safe +
l(:text_git_repository_note)) + # l(:text_git_repository_note)) +
content_tag('p', form.select( content_tag('p', form.select(
:path_encoding, [nil] + Setting::ENCODINGS, :path_encoding, [nil] + Setting::ENCODINGS,
:label => l(:field_scm_path_encoding) :label => l(:field_scm_path_encoding)

View File

@ -1,3 +1,5 @@
<% project_path_cut = 40 %>
<% ip = "222.247.54.100" %><!--Added by tanxianbo For formatting project's path-->
<% if @project.repositories.any? %> <% if @project.repositories.any? %>
<table class="list"> <table class="list">
<thead> <thead>
@ -5,7 +7,7 @@
<th><%= l(:field_identifier) %></th> <th><%= l(:field_identifier) %></th>
<th><%= l(:field_repository_is_default) %></th> <th><%= l(:field_repository_is_default) %></th>
<th><%= l(:label_scm) %></th> <th><%= l(:label_scm) %></th>
<th><%= l(:label_repository) %></th> <th><%= l(:label_repository_path) %></th>
<th></th> <th></th>
</tr> </tr>
</thead> </thead>
@ -18,15 +20,22 @@
</td> </td>
<td align="center"><%= checked_image repository.is_default? %></td> <td align="center"><%= checked_image repository.is_default? %></td>
<td><%=h repository.scm_name %></td> <td><%=h repository.scm_name %></td>
<%if repository.scm_name=="Git"%>
<td>http://<%= repository.identifier%>@<%= ip %><%=h repository.url.slice(project_path_cut, repository.url.length) %></td><!--Modified by tanxianbo-->
<%else %>
<td><%=h repository.url %></td> <td><%=h repository.url %></td>
<% end %>
<td class="buttons"> <td class="buttons">
<% if User.current.allowed_to?(:manage_repository, @project) %> <% if repository.scm_name=="Subversion"%>
<%if User.current.allowed_to?(:manage_repository, @project) %>
<%= link_to(l(:label_user_plural), committers_repository_path(repository), <%= link_to(l(:label_user_plural), committers_repository_path(repository),
:class => 'icon icon-user') %> :class => 'icon icon-user') %>
<%= link_to(l(:button_edit), edit_repository_path(repository), <%= link_to(l(:button_edit), edit_repository_path(repository),
:class => 'icon icon-edit') %> :class => 'icon icon-edit') %>
<%= delete_link repository_path(repository) %> <%= delete_link repository_path(repository) %>
<% end %> <% end %>
<% end %>
</td> </td>
</tr> </tr>
<% end %> <% end %>

View File

@ -0,0 +1,38 @@
<!-- #changed by xianbo tan -->
<style type="text/css">
.textbg{
background-color:gray;
border:none
}
</style>
<%= error_messages_for 'repository' %>
<div class="box tabular">
<p>
<%= label_tag('repository_scm', l(:label_scm)) %>
<!--Modified by tanxianbo-->
<%= select_tag('repository_scm',
options_for_select(["Git"],@repository.class.name.demodulize),
:data => {:remote => true, :method => 'get'})%>
<!--Ended by tanxianbo-->
<% if @repository && ! @repository.class.scm_available %>
<em class="info error"><%= l(:text_scm_command_not_available) %></em>
<% end %>
</p>
<p><%= f.check_box :is_default, :label => :field_repository_is_default %></p>
<p><%= f.text_field :identifier, :required=>true, :disabled => @repository.identifier_frozen? %>
<% unless @repository.identifier_frozen? %>
<em class="info"><%= l(:text_length_between, :min => 1, :max => Repository::IDENTIFIER_MAX_LENGTH) %>
<%= l(:text_repository_identifier_info).html_safe %></em>
<% end %></p>
<!-- <p><%= f.text_field :url, :size => 60, :required => true,:readonly=>true, :class=>'textbg'%></p> -->
<p><%= f.password_field :upassword, :required =>true, :label=> :field_password %></p>
<p><%= f.select(:path_encoding, [nil] + Setting::ENCODINGS, :label => l(:field_scm_path_encoding))%>
<%= l(:text_scm_path_encoding_note)%></p>
</div>
<p>
<%= submit_tag(@repository.new_record? ? l(:button_create) : l(:button_save)) %>
<%= link_to l(:button_cancel), settings_project_path(@project, :tab => 'repositories') %>
</p>

View File

@ -0,0 +1,6 @@
<!-- new repository new by xianbo-->
<h3><%= l(:label_repository_new_repos) %></h3>
<%= labelled_form_for :repository, @repository, :url =>project_repositories_path(@project),:html => {:id => 'repository-form'} do |f| %>
<%= render :partial => 'form_create', :locals => {:f => f} %>
<% end %>

View File

@ -0,0 +1 @@
$('#content').html('<%= escape_javascript(render :template => 'repositories/newrepo', :formats => [:html]) %>');