diff --git a/app/controllers/pull_requests_controller.rb b/app/controllers/pull_requests_controller.rb
index 8e119b19c..00ba47dec 100644
--- a/app/controllers/pull_requests_controller.rb
+++ b/app/controllers/pull_requests_controller.rb
@@ -3,6 +3,7 @@ class PullRequestsController < ApplicationController
before_filter :connect_gitlab, :only => [:index, :show, :create, :accept_pull_request, :pull_request_commits, :pull_request_changes, :new]
layout "base_projects"
include PullRequestsHelper
+ include ApplicationHelper
# 返回json格式
def index
@@ -21,16 +22,19 @@ class PullRequestsController < ApplicationController
end
end
+ # 主要取源项目和目标项目分支及标识(用户名/版本库名)
def new
- @rev = @g.branches(@project.gpid).map{|b| b.name}
- @target_project = []
+ identifier = get_rep_identifier_by_project @project
+ @source_project_name = "#{get_user_name(@project.user_id)}/#{identifier}"
+ @source_rev = @g.branches(@project.gpid).map{|b| b.name}
+
+ # 获取forked源项目信息
if @project.forked_from_project_id
@forked_project = Project.find(@project.forked_from_project_id)
- @target_project << "#{get_user_name(@forked_project.user_id)}/#{@forked_project.name}"
+ identifier = get_rep_identifier_by_project @forked_project
+ @forked_project_name = "#{get_user_name(@forked_project.user_id)}/#{identifier}"
+ @forked_rev = @g.branches(@forked_project.gpid).map{|b| b.name}
end
- # @forked_rev = @g.branches(forked_project.gpid).map{|b| b.name}
- @target_project << "#{get_user_name(@project.user_id)}/#{@project.name}"
-
end
# Creates a merge request.
diff --git a/app/views/pull_requests/_form.html.erb b/app/views/pull_requests/_form.html.erb
index 9b44fa943..c7e21a7b9 100644
--- a/app/views/pull_requests/_form.html.erb
+++ b/app/views/pull_requests/_form.html.erb
@@ -9,15 +9,26 @@
源分支
- <%= select_tag :branch, options_for_select(@rev), :name => "source_branch", :value => "source_branch", :class => "ml30 fontGrey3 fb fl", :style => "padding:5px 0 5px 5px;" %>
+ <%= select_tag :branch, options_for_select(@source_rev), :name => "source_branch", :value => "source_branch", :class => "ml30 fontGrey3 fb fl", :style => "padding:5px 0 5px 5px;" %>
目标分支
- <% unless @target_project.blank? %>
- <%= select_tag :branch, options_for_select(@target_project), :name => "target_project", :value => "target_project", :class => "ml30 fontGrey3 fb fl", :style => "padding:5px 0 5px 5px;", :id => "targetProject" %>
+ <% if @forked_project.nil? %>
+ <%= select_tag :branch, options_for_select(@source_project_name), :name => "target_project", :value => "target_project",
+ :class => "ml30 fontGrey3 fb fl", :style => "padding:5px 0 5px 5px;", :id => "targetProject" %>\
+ <%= select_tag :branch, options_for_select(@source_rev), :name => "target_branch", :value => "target_branch",
+ :class => "ml30 fontGrey3 fb fl", :style => "padding:5px 0 5px 5px;", :id => "targetBranch" %>
+ <% else %>
+
+
+ <%#= select_tag :branch, options_for_select([@source_project_name, @forked_project_name]), :name => "target_project", :value => "target_project",
+ :class => "ml30 fontGrey3 fb fl", :style => "padding:5px 0 5px 5px;", :id => "targetProject" %>
+ <%#= select_tag :branch, options_for_select(@source_rev), :name => "target_branch", :value => "target_branch",
+ :class => "ml30 fontGrey3 fb fl", :style => "padding:5px 0 5px 5px;", :id => "targetBranch" %>
<% end %>
- <%= select_tag :branch, options_for_select(@rev), :name => "target_branch", :value => "target_branch", :class => "ml30 fontGrey3 fb fl", :style => "padding:5px 0 5px 5px;", :id => "targetBranch" %>
-
diff --git a/public/javascripts/project.js b/public/javascripts/project.js
index fa5648ffa..3918c116d 100644
--- a/public/javascripts/project.js
+++ b/public/javascripts/project.js
@@ -658,3 +658,25 @@ function search_tag_attachment(url,tag_name,q,course_id,sort)
}
}
+
+
+function choice_branch(name, branch, source_rev, forked_rev) {
+ switch (name) {
+ case "source_project_name" :
+ alert(source_rev);
+ var branchOptions = source_rev;
+ break;
+ case "forked_project_name" :
+ alert(forked_rev);
+ var branchOptions = forked_rev;
+ break;
+ default:
+ var branchOptions = new Array("");
+ break;
+ }
+
+ branch.options.length = 0;
+ for (var i = 0; i < branchOptions.length; i++) {
+ branch.options[i] = new Option(branchOptions[i], branchOptions[i]);
+ }
+}
\ No newline at end of file