summaryrefslogtreecommitdiff
path: root/app/controllers/concerns/creates_commit.rb
diff options
context:
space:
mode:
authorLin Jen-Shin <godfat@godfat.org>2017-01-06 22:20:02 +0800
committerLin Jen-Shin <godfat@godfat.org>2017-01-06 22:20:02 +0800
commit358501df2d3229f68be700d2fc57cd3c3e7e5042 (patch)
tree400e926dbd8387e9acefe63b4c8022ce75c51991 /app/controllers/concerns/creates_commit.rb
parenta4b97b2cb61c03d08e25cf2cd7fcbb3f21611350 (diff)
downloadgitlab-ce-358501df2d3229f68be700d2fc57cd3c3e7e5042.tar.gz
Properly fix the edge case!
Diffstat (limited to 'app/controllers/concerns/creates_commit.rb')
-rw-r--r--app/controllers/concerns/creates_commit.rb17
1 files changed, 15 insertions, 2 deletions
diff --git a/app/controllers/concerns/creates_commit.rb b/app/controllers/concerns/creates_commit.rb
index c503f8bf696..516b1cac6ef 100644
--- a/app/controllers/concerns/creates_commit.rb
+++ b/app/controllers/concerns/creates_commit.rb
@@ -97,8 +97,6 @@ module CreatesCommit
# TODO: We should really clean this up
def set_commit_variables
- @mr_source_branch = @target_branch unless create_merge_request?
-
if can?(current_user, :push_code, @project)
# Edit file in this project
@tree_edit_project = @project
@@ -121,10 +119,25 @@ module CreatesCommit
@mr_target_project = @project
@mr_target_branch = @ref || @target_branch
end
+
+ @mr_source_branch = guess_mr_source_branch
end
def initial_commit?
@mr_target_branch.nil? ||
!@mr_target_project.repository.branch_exists?(@mr_target_branch)
end
+
+ def guess_mr_source_branch
+ # XXX: Happens when viewing a commit without a branch. In this case,
+ # @target_branch would be the default branch for @mr_source_project,
+ # however we want a generated new branch here. Thus we can't use
+ # @target_branch, but should pass nil to indicate that we want a new
+ # branch instead of @target_branch.
+ return if
+ create_merge_request? &&
+ @mr_source_project.repository.branch_exists?(@target_branch)
+
+ @target_branch
+ end
end