1.项目版本库界面调整

2.删除项目版本库调整
GitlabVersion
nwb 11 years ago
parent b550e98603
commit c675ac67e0

@ -98,6 +98,14 @@ class RepositoriesController < ApplicationController
# add by nwb # add by nwb
# 增加对gitlab版本库的支持 # 增加对gitlab版本库的支持
attrs = pickup_extra_info
@repository = Repository.factory('Git')
@repository.safe_attributes = params[:repository]
if attrs[:attrs_extra].keys.any?
@repository.merge_extra_info(attrs[:attrs_extra])
end
@repository.project = @project
# 数据检测 # 数据检测
if params[:repository][:identifier] == "" if params[:repository][:identifier] == ""
flash[:error] = l(:project_module_repository) + l(:blank) flash[:error] = l(:project_module_repository) + l(:blank)
@ -117,14 +125,6 @@ class RepositoriesController < ApplicationController
return return
end end
attrs = pickup_extra_info
@repository = Repository.factory('Git')
@repository.safe_attributes = params[:repository]
if attrs[:attrs_extra].keys.any?
@repository.merge_extra_info(attrs[:attrs_extra])
end
@repository.project = @project
# 判断gitlab用户是否存在不存在则创建 # 判断gitlab用户是否存在不存在则创建
user = User.current user = User.current
gitlab_user = GitlabUser.find_by_user_id(user.id) gitlab_user = GitlabUser.find_by_user_id(user.id)
@ -135,10 +135,12 @@ class RepositoriesController < ApplicationController
render :action => 'newrepo', :layout =>'base_projects' render :action => 'newrepo', :layout =>'base_projects'
return return
end end
gitlab_user = GitlabUser.find_by_user_id(user.id)
end end
# 创建gitlab版本库 # 创建gitlab版本库
repos = params[:repository][:identifier] repos = params[:repository][:identifier]
if !create_project_for_user(repos,@project.id,gitlab_user.gitlab_user_id) temp = create_project_for_user(repos,@project.id,gitlab_user.gitlab_user_id)
if !temp[:result]
# 创建gitlab项目失败 # 创建gitlab项目失败
flash[:error] = l(:error_create_gitlab_project) flash[:error] = l(:error_create_gitlab_project)
render :action => 'newrepo', :layout =>'base_projects' render :action => 'newrepo', :layout =>'base_projects'
@ -146,6 +148,9 @@ class RepositoriesController < ApplicationController
end end
# 连接创建成功后的gitlab版本库 # 连接创建成功后的gitlab版本库
gitproject = GitlabProject.find_by_gitlab_project_id(temp[:gitprojectid])
@repository.url = gitproject.repository_url
@repository.root_url = gitproject.repository_url
if request.post? && @repository.save if request.post? && @repository.save
redirect_to settings_project_path(@project, :tab => 'repositories') redirect_to settings_project_path(@project, :tab => 'repositories')
else else
@ -262,14 +267,14 @@ class RepositoriesController < ApplicationController
if(@repository.type=="Repository::Git") if(@repository.type=="Repository::Git")
logger.info "destory the repository value"+"root path"+@root_path+"repo_name"+@repo_name+ logger.info "destory the repository value"+"root path"+@root_path+"repo_name"+@repo_name+
"repository_name"+@repository_name+"user group"+@middle "repository_name"+@repository_name+"user group"+@middle
system "sed -i /"+@repo_name+"/{d} "+@root_path+"user.passwd" #system "sed -i /"+@repo_name+"/{d} "+@root_path+"user.passwd"
system "sed -i /"+@middle+"/{d} "+@root_path+"group.passwd" #system "sed -i /"+@middle+"/{d} "+@root_path+"group.passwd"
system "rm -r "+@root_path+"htdocs/"+@repository_name #system "rm -r "+@root_path+"htdocs/"+@repository_name
# if(@sed_user&&@sed_group&&@remove)
# else gitlabproject = GitlabProject.find_by_repository_url(@repository.url)
# logger.info "An error occured when destory the repository"+"delete form passwd: \n"+ if gitlabproject
# @sed_user+"delete from group"+@sed_group+"delete from file"+@remove gitlabproject.destroy
# end end
end end
end end

@ -39,7 +39,7 @@ module GitlabHelper
def login_check def login_check
if GitlabHelper.gitlab_token.nil? if GitlabHelper.gitlab_token.nil?
login_gitlab(GitlabHelper.LOGIN_USER,GitlabHelper.LOGIN_PASSWORD) login_gitlab(LOGIN_USER,LOGIN_PASSWORD)
end end
end end
@ -60,6 +60,7 @@ module GitlabHelper
return false return false
end end
rescue =>err rescue =>err
logger.error "gitlab: error: #{err.message}"
return false return false
end end
end end
@ -94,6 +95,7 @@ module GitlabHelper
return false return false
end end
rescue =>err rescue =>err
logger.error "gitlab: error: #{err.message}"
return false return false
end end
end end
@ -104,9 +106,10 @@ module GitlabHelper
# add by nwb # add by nwb
def create_project_for_user(project_name,project_id,user_id) def create_project_for_user(project_name,project_id,user_id)
login_check login_check
url = REPO_IP_ADDRESS + GITLAB_API + "/projects/user/" + user_id url = REPO_IP_ADDRESS + GITLAB_API + "/projects/user/" + user_id.to_s
uri = URI.parse(url) uri = URI.parse(url)
data = {user_id:user_id, name:project_name,private_token:GitlabHelper.gitlab_token} data = {user_id:user_id, name:project_name,private_token:GitlabHelper.gitlab_token}
tempResult = Hash.new
begin begin
res = Net::HTTP.post_form(uri, data) res = Net::HTTP.post_form(uri, data)
if res.code == '201' if res.code == '201'
@ -119,19 +122,22 @@ module GitlabHelper
web_url['http://localhost'] = REPO_IP_ADDRESS web_url['http://localhost'] = REPO_IP_ADDRESS
# 保存数据 # 保存数据
gitproject =GitlabProject.new gitproject = GitlabProject.new
gitproject.project_id = project_id gitproject.project_id = project_id
gitproject.gitlab_project_id = temp['id'] gitproject.gitlab_project_id = temp['id']
gitproject.repository_url = repository_url gitproject.repository_url = repository_url
gitproject.web_url = web_url gitproject.web_url = web_url
gitproject.save gitproject.save
return true tempResult[:result]= true
tempResult[:gitprojectid]=gitproject.gitlab_project_id
else else
return false tempResult[:result]= false
end end
rescue =>err rescue =>err
return false logger.error "gitlab: error: #{err.message}"
tempResult[:result]= false
end end
tempResult
end end
# 创建用户 # 创建用户
@ -161,6 +167,7 @@ module GitlabHelper
return false return false
end end
rescue =>err rescue =>err
logger.error "gitlab: error: #{err.message}"
return false return false
end end
end end
@ -188,6 +195,7 @@ module GitlabHelper
return false return false
end end
rescue =>err rescue =>err
logger.error "gitlab: error: #{err.message}"
return false return false
end end
end end
@ -215,6 +223,7 @@ module GitlabHelper
return false return false
end end
rescue =>err rescue =>err
logger.error "gitlab: error: #{err.message}"
return false return false
end end
end end
@ -239,6 +248,7 @@ module GitlabHelper
return false return false
end end
rescue =>err rescue =>err
logger.error "gitlab: error: #{err.message}"
return false return false
end end
end end
@ -262,6 +272,7 @@ module GitlabHelper
response = http.start { |http| http.request(request) } response = http.start { |http| http.request(request) }
return JSON.parse response.body return JSON.parse response.body
rescue =>err rescue =>err
logger.error "gitlab: error: #{err.message}"
return nil return nil
end end
end end
@ -285,6 +296,7 @@ module GitlabHelper
response = http.start { |http| http.request request } response = http.start { |http| http.request request }
return JSON.parse response.body return JSON.parse response.body
rescue =>err rescue =>err
logger.error "gitlab: error: #{err.message}"
return nil return nil
end end
end end

@ -135,6 +135,23 @@ class Repository < ActiveRecord::Base
end end
end end
# 获取版本库地址
def repos_url
if self.scm_name=="Git"
gitlabproject = GitlabProject.find_by_repository_url(self.url)
if gitlabproject.nil?
# 兼容老git模式
ip = RepositoriesHelper::REPO_IP_ADDRESS
project_path_cut = RepositoriesHelper::PROJECT_PATH_CUT
"http://" + self.login.to_s + self.identifier.to_s + ip + self.url.slice(project_path_cut, self.url.length)
else
self.url
end
else
self.url
end
end
def <=>(repository) def <=>(repository)
if is_default? if is_default?
-1 -1

@ -20,11 +20,7 @@
</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><%=h repository.repos_url %></td>
<td>http://<%= repository.login.to_s %>_<%= repository.identifier.to_s%>@<%= ip %><%=h repository.url.slice(project_path_cut, repository.url.length) %></td><!--Modified by tanxianbo-->
<%else %>
<td><%=h repository.url %></td>
<% end %>
<td class="buttons" style="text-align:left"> <td class="buttons" style="text-align:left">
<% if repository.scm_name=="Subversion"%> <% if repository.scm_name=="Subversion"%>
@ -43,6 +39,7 @@
:class => 'icon icon-user') %> :class => 'icon icon-user') %>
<% if repository.login.to_s==User.current.login.to_s %> <% if repository.login.to_s==User.current.login.to_s %>
<%= delete_link repository_path(repository) %> <%= delete_link repository_path(repository) %>
<%#= link_to l(:button_delete), repository_path(repository), :method => :delete,:data => {:confirm => l(:label_are_you_sure)},:class => 'icon icon-del'%>
<% end %> <% end %>
<% end %> <% end %>
<% end %> <% end %>

@ -132,6 +132,7 @@ en:
actionview_instancetag_blank_option: Please select actionview_instancetag_blank_option: Please select
blank: "can't be blank"
attachment_all: "All" attachment_all: "All"
attachment_browse: "Attachment Content Browse" attachment_browse: "Attachment Content Browse"
attachment_sufix_browse: "Attachment Type Browse" attachment_sufix_browse: "Attachment Type Browse"
@ -1369,6 +1370,7 @@ en:
label_gitlab_email: The email user to login gitlab label_gitlab_email: The email user to login gitlab
label_gitlab_account: The account user to login gitlab label_gitlab_account: The account user to login gitlab
label_gitlab_password: The password user to login gitlab label_gitlab_password: The password user to login gitlab
label_are_you_sure: Are you sure
label_how_commit_code: How to commit code label_how_commit_code: How to commit code
label_how_commit_code_chinese: Chinese label_how_commit_code_chinese: Chinese
label_welcome_leave_message: Hi!The platform is currently in beta version.If you have any comments and suggestions, please label_welcome_leave_message: Hi!The platform is currently in beta version.If you have any comments and suggestions, please

@ -198,6 +198,7 @@ zh:
error_create_gitlab_user: "创建Gitlab用户失败!可能已存在指定的用户名或邮件名。" error_create_gitlab_user: "创建Gitlab用户失败!可能已存在指定的用户名或邮件名。"
error_create_gitlab_project: "创建Gitlab项目失败!指定用户可能已拥有指定的Gitlab项目。" error_create_gitlab_project: "创建Gitlab项目失败!指定用户可能已拥有指定的Gitlab项目。"
blank: "不能为空字符"
error_class_period_only_num: "课程学时只能为数字" error_class_period_only_num: "课程学时只能为数字"
error_can_t_load_default_data: "无法载入默认设置:%{value}" error_can_t_load_default_data: "无法载入默认设置:%{value}"
@ -1566,9 +1567,10 @@ zh:
label_have_message : 》有新的留言 label_have_message : 》有新的留言
label_all_revisions: 所有版本: label_all_revisions: 所有版本:
label_upassword_info: 该密码在项目组内可共享 label_upassword_info: 该密码在项目组内可共享
label_gitlab_account: 用户登录Gitlab的账号推荐使用当前用户 label_gitlab_account: 用户登录Gitlab的账号推荐使用当前用户。注意:若当前用户已创建过版本库,则会使用老账号
label_gitlab_email: 用户登录Gitlab的邮件推荐使用当前用户邮件 label_gitlab_email: 用户登录Gitlab的邮件推荐使用当前用户邮件
label_gitlab_password: 用户登录Gitlab的密码推荐使用当前用户密码 label_gitlab_password: 用户登录Gitlab的密码推荐使用当前用户密码。注意若当前用户已创建过版本库则会使用老密码
label_are_you_sure: 您确定要删除版本库吗如果这是系统创建的Git库将同时删除所有版本数据。
label_how_commit_code: 查看如何提交代码: label_how_commit_code: 查看如何提交代码:
label_how_commit_code_chinese: 中文 label_how_commit_code_chinese: 中文
# modified by bai # modified by bai

Loading…
Cancel
Save