Rename from base to start because base could mean merge base
This commit is contained in:
parent
e3c36850a6
commit
ccc73c455b
11 changed files with 91 additions and 91 deletions
|
@ -4,10 +4,10 @@ module CreatesCommit
|
|||
def create_commit(service, success_path:, failure_path:, failure_view: nil, success_notice: nil)
|
||||
set_commit_variables
|
||||
|
||||
base_branch = @mr_target_branch unless initial_commit?
|
||||
start_branch = @mr_target_branch unless initial_commit?
|
||||
commit_params = @commit_params.merge(
|
||||
base_project: @mr_target_project,
|
||||
base_branch: base_branch,
|
||||
start_project: @mr_target_project,
|
||||
start_branch: start_branch,
|
||||
target_branch: @mr_source_branch
|
||||
)
|
||||
|
||||
|
|
|
@ -748,12 +748,12 @@ class Repository
|
|||
user, path,
|
||||
message:, branch_name:,
|
||||
author_email: nil, author_name: nil,
|
||||
base_branch_name: nil, base_project: project)
|
||||
start_branch_name: nil, start_project: project)
|
||||
check_tree_entry_for_dir(branch_name, path)
|
||||
|
||||
if base_branch_name
|
||||
base_project.repository.
|
||||
check_tree_entry_for_dir(base_branch_name, path)
|
||||
if start_branch_name
|
||||
start_project.repository.
|
||||
check_tree_entry_for_dir(start_branch_name, path)
|
||||
end
|
||||
|
||||
commit_file(
|
||||
|
@ -765,8 +765,8 @@ class Repository
|
|||
update: false,
|
||||
author_email: author_email,
|
||||
author_name: author_name,
|
||||
base_branch_name: base_branch_name,
|
||||
base_project: base_project)
|
||||
start_branch_name: start_branch_name,
|
||||
start_project: start_project)
|
||||
end
|
||||
# rubocop:enable Metrics/ParameterLists
|
||||
|
||||
|
@ -775,7 +775,7 @@ class Repository
|
|||
user, path, content,
|
||||
message:, branch_name:, update: true,
|
||||
author_email: nil, author_name: nil,
|
||||
base_branch_name: nil, base_project: project)
|
||||
start_branch_name: nil, start_project: project)
|
||||
unless update
|
||||
error_message = "Filename already exists; update not allowed"
|
||||
|
||||
|
@ -783,8 +783,8 @@ class Repository
|
|||
raise Gitlab::Git::Repository::InvalidBlobName.new(error_message)
|
||||
end
|
||||
|
||||
if base_branch_name &&
|
||||
base_project.repository.tree_entry_at(base_branch_name, path)
|
||||
if start_branch_name &&
|
||||
start_project.repository.tree_entry_at(start_branch_name, path)
|
||||
raise Gitlab::Git::Repository::InvalidBlobName.new(error_message)
|
||||
end
|
||||
end
|
||||
|
@ -795,8 +795,8 @@ class Repository
|
|||
branch_name: branch_name,
|
||||
author_email: author_email,
|
||||
author_name: author_name,
|
||||
base_branch_name: base_branch_name,
|
||||
base_project: base_project,
|
||||
start_branch_name: start_branch_name,
|
||||
start_project: start_project,
|
||||
actions: [{ action: :create,
|
||||
file_path: path,
|
||||
content: content }])
|
||||
|
@ -808,7 +808,7 @@ class Repository
|
|||
user, path, content,
|
||||
message:, branch_name:, previous_path:,
|
||||
author_email: nil, author_name: nil,
|
||||
base_branch_name: nil, base_project: project)
|
||||
start_branch_name: nil, start_project: project)
|
||||
action = if previous_path && previous_path != path
|
||||
:move
|
||||
else
|
||||
|
@ -821,8 +821,8 @@ class Repository
|
|||
branch_name: branch_name,
|
||||
author_email: author_email,
|
||||
author_name: author_name,
|
||||
base_branch_name: base_branch_name,
|
||||
base_project: base_project,
|
||||
start_branch_name: start_branch_name,
|
||||
start_project: start_project,
|
||||
actions: [{ action: action,
|
||||
file_path: path,
|
||||
content: content,
|
||||
|
@ -835,15 +835,15 @@ class Repository
|
|||
user, path,
|
||||
message:, branch_name:,
|
||||
author_email: nil, author_name: nil,
|
||||
base_branch_name: nil, base_project: project)
|
||||
start_branch_name: nil, start_project: project)
|
||||
multi_action(
|
||||
user: user,
|
||||
message: message,
|
||||
branch_name: branch_name,
|
||||
author_email: author_email,
|
||||
author_name: author_name,
|
||||
base_branch_name: base_branch_name,
|
||||
base_project: base_project,
|
||||
start_branch_name: start_branch_name,
|
||||
start_project: start_project,
|
||||
actions: [{ action: :delete,
|
||||
file_path: path }])
|
||||
end
|
||||
|
@ -853,16 +853,16 @@ class Repository
|
|||
def multi_action(
|
||||
user:, branch_name:, message:, actions:,
|
||||
author_email: nil, author_name: nil,
|
||||
base_branch_name: nil, base_project: project)
|
||||
start_branch_name: nil, start_project: project)
|
||||
GitOperationService.new(user, self).with_branch(
|
||||
branch_name,
|
||||
base_branch_name: base_branch_name,
|
||||
base_project: base_project) do |base_commit|
|
||||
start_branch_name: start_branch_name,
|
||||
start_project: start_project) do |start_commit|
|
||||
index = rugged.index
|
||||
|
||||
parents = if base_commit
|
||||
index.read_tree(base_commit.raw_commit.tree)
|
||||
[base_commit.sha]
|
||||
parents = if start_commit
|
||||
index.read_tree(start_commit.raw_commit.tree)
|
||||
[start_commit.sha]
|
||||
else
|
||||
[]
|
||||
end
|
||||
|
@ -910,8 +910,8 @@ class Repository
|
|||
|
||||
def merge(user, merge_request, options = {})
|
||||
GitOperationService.new(user, self).with_branch(
|
||||
merge_request.target_branch) do |base_commit|
|
||||
our_commit = base_commit.sha
|
||||
merge_request.target_branch) do |start_commit|
|
||||
our_commit = start_commit.sha
|
||||
their_commit = merge_request.diff_head_sha
|
||||
|
||||
raise 'Invalid merge target' unless our_commit
|
||||
|
@ -935,15 +935,15 @@ class Repository
|
|||
|
||||
def revert(
|
||||
user, commit, branch_name, revert_tree_id = nil,
|
||||
base_branch_name: nil, base_project: project)
|
||||
start_branch_name: nil, start_project: project)
|
||||
revert_tree_id ||= check_revert_content(commit, branch_name)
|
||||
|
||||
return false unless revert_tree_id
|
||||
|
||||
GitOperationService.new(user, self).with_branch(
|
||||
branch_name,
|
||||
base_branch_name: base_branch_name,
|
||||
base_project: base_project) do |base_commit|
|
||||
start_branch_name: start_branch_name,
|
||||
start_project: start_project) do |start_commit|
|
||||
|
||||
committer = user_to_committer(user)
|
||||
|
||||
|
@ -952,21 +952,21 @@ class Repository
|
|||
author: committer,
|
||||
committer: committer,
|
||||
tree: revert_tree_id,
|
||||
parents: [base_commit.sha])
|
||||
parents: [start_commit.sha])
|
||||
end
|
||||
end
|
||||
|
||||
def cherry_pick(
|
||||
user, commit, branch_name, cherry_pick_tree_id = nil,
|
||||
base_branch_name: nil, base_project: project)
|
||||
start_branch_name: nil, start_project: project)
|
||||
cherry_pick_tree_id ||= check_cherry_pick_content(commit, branch_name)
|
||||
|
||||
return false unless cherry_pick_tree_id
|
||||
|
||||
GitOperationService.new(user, self).with_branch(
|
||||
branch_name,
|
||||
base_branch_name: base_branch_name,
|
||||
base_project: base_project) do |base_commit|
|
||||
start_branch_name: start_branch_name,
|
||||
start_project: start_project) do |start_commit|
|
||||
|
||||
committer = user_to_committer(user)
|
||||
|
||||
|
@ -979,7 +979,7 @@ class Repository
|
|||
},
|
||||
committer: committer,
|
||||
tree: cherry_pick_tree_id,
|
||||
parents: [base_commit.sha])
|
||||
parents: [start_commit.sha])
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1066,20 +1066,20 @@ class Repository
|
|||
Gitlab::Popen.popen(args, path_to_repo).first.lines.map(&:strip)
|
||||
end
|
||||
|
||||
def with_repo_branch_commit(base_repository, base_branch_name)
|
||||
def with_repo_branch_commit(start_repository, start_branch_name)
|
||||
branch_name_or_sha =
|
||||
if base_repository == self
|
||||
base_branch_name
|
||||
if start_repository == self
|
||||
start_branch_name
|
||||
else
|
||||
tmp_ref = "refs/tmp/#{SecureRandom.hex}/head"
|
||||
|
||||
fetch_ref(
|
||||
base_repository.path_to_repo,
|
||||
"#{Gitlab::Git::BRANCH_REF_PREFIX}#{base_branch_name}",
|
||||
start_repository.path_to_repo,
|
||||
"#{Gitlab::Git::BRANCH_REF_PREFIX}#{start_branch_name}",
|
||||
tmp_ref
|
||||
)
|
||||
|
||||
base_repository.commit(base_branch_name).sha
|
||||
start_repository.commit(start_branch_name).sha
|
||||
end
|
||||
|
||||
yield(commit(branch_name_or_sha))
|
||||
|
|
|
@ -4,8 +4,8 @@ module Commits
|
|||
class ChangeError < StandardError; end
|
||||
|
||||
def execute
|
||||
@base_project = params[:base_project] || @project
|
||||
@base_branch = params[:base_branch]
|
||||
@start_project = params[:start_project] || @project
|
||||
@start_branch = params[:start_branch]
|
||||
@target_branch = params[:target_branch]
|
||||
@commit = params[:commit]
|
||||
@create_merge_request = params[:create_merge_request].present?
|
||||
|
@ -28,7 +28,7 @@ module Commits
|
|||
|
||||
if @create_merge_request
|
||||
into = @commit.public_send("#{action}_branch_name")
|
||||
tree_branch = @base_branch
|
||||
tree_branch = @start_branch
|
||||
else
|
||||
into = tree_branch = @target_branch
|
||||
end
|
||||
|
@ -45,8 +45,8 @@ module Commits
|
|||
@commit,
|
||||
into,
|
||||
tree_id,
|
||||
base_project: @base_project,
|
||||
base_branch_name: @base_branch)
|
||||
start_project: @start_project,
|
||||
start_branch_name: @start_branch)
|
||||
|
||||
success
|
||||
else
|
||||
|
|
|
@ -3,18 +3,18 @@ require 'securerandom'
|
|||
# Compare 2 branches for one repo or between repositories
|
||||
# and return Gitlab::Git::Compare object that responds to commits and diffs
|
||||
class CompareService
|
||||
attr_reader :base_project, :base_branch_name
|
||||
attr_reader :start_project, :start_branch_name
|
||||
|
||||
def initialize(new_base_project, new_base_branch_name)
|
||||
@base_project = new_base_project
|
||||
@base_branch_name = new_base_branch_name
|
||||
def initialize(new_start_project, new_start_branch_name)
|
||||
@start_project = new_start_project
|
||||
@start_branch_name = new_start_branch_name
|
||||
end
|
||||
|
||||
def execute(target_project, target_branch, straight: false)
|
||||
# If compare with other project we need to fetch ref first
|
||||
target_project.repository.with_repo_branch_commit(
|
||||
base_project.repository,
|
||||
base_branch_name) do |commit|
|
||||
start_project.repository,
|
||||
start_branch_name) do |commit|
|
||||
break unless commit
|
||||
|
||||
compare(commit.sha, target_project, target_branch, straight)
|
||||
|
|
|
@ -3,8 +3,8 @@ module Files
|
|||
class ValidationError < StandardError; end
|
||||
|
||||
def execute
|
||||
@base_project = params[:base_project] || @project
|
||||
@base_branch = params[:base_branch]
|
||||
@start_project = params[:start_project] || @project
|
||||
@start_branch = params[:start_branch]
|
||||
@target_branch = params[:target_branch]
|
||||
|
||||
@commit_message = params[:commit_message]
|
||||
|
@ -22,7 +22,7 @@ module Files
|
|||
# Validate parameters
|
||||
validate
|
||||
|
||||
# Create new branch if it different from base_branch
|
||||
# Create new branch if it different from start_branch
|
||||
validate_target_branch if different_branch?
|
||||
|
||||
result = commit
|
||||
|
@ -38,7 +38,7 @@ module Files
|
|||
private
|
||||
|
||||
def different_branch?
|
||||
@base_branch != @target_branch || @base_project != @project
|
||||
@start_branch != @target_branch || @start_project != @project
|
||||
end
|
||||
|
||||
def file_has_changed?
|
||||
|
@ -59,7 +59,7 @@ module Files
|
|||
end
|
||||
|
||||
unless project.empty_repo?
|
||||
unless @base_project.repository.branch_exists?(@base_branch)
|
||||
unless @start_project.repository.branch_exists?(@start_branch)
|
||||
raise_error('You can only create or edit files when you are on a branch')
|
||||
end
|
||||
|
||||
|
|
|
@ -8,8 +8,8 @@ module Files
|
|||
branch_name: @target_branch,
|
||||
author_email: @author_email,
|
||||
author_name: @author_name,
|
||||
base_project: @base_project,
|
||||
base_branch_name: @base_branch)
|
||||
start_project: @start_project,
|
||||
start_branch_name: @start_branch)
|
||||
end
|
||||
|
||||
def validate
|
||||
|
|
|
@ -10,8 +10,8 @@ module Files
|
|||
update: false,
|
||||
author_email: @author_email,
|
||||
author_name: @author_name,
|
||||
base_project: @base_project,
|
||||
base_branch_name: @base_branch)
|
||||
start_project: @start_project,
|
||||
start_branch_name: @start_branch)
|
||||
end
|
||||
|
||||
def validate
|
||||
|
@ -34,7 +34,7 @@ module Files
|
|||
unless project.empty_repo?
|
||||
@file_path.slice!(0) if @file_path.start_with?('/')
|
||||
|
||||
blob = repository.blob_at_branch(@base_branch, @file_path)
|
||||
blob = repository.blob_at_branch(@start_branch, @file_path)
|
||||
|
||||
if blob
|
||||
raise_error('Your changes could not be committed because a file with the same name already exists')
|
||||
|
|
|
@ -8,8 +8,8 @@ module Files
|
|||
branch_name: @target_branch,
|
||||
author_email: @author_email,
|
||||
author_name: @author_name,
|
||||
base_project: @base_project,
|
||||
base_branch_name: @base_branch)
|
||||
start_project: @start_project,
|
||||
start_branch_name: @start_branch)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -10,8 +10,8 @@ module Files
|
|||
actions: params[:actions],
|
||||
author_email: @author_email,
|
||||
author_name: @author_name,
|
||||
base_project: @base_project,
|
||||
base_branch_name: @base_branch
|
||||
start_project: @start_project,
|
||||
start_branch_name: @start_branch
|
||||
)
|
||||
end
|
||||
|
||||
|
@ -63,7 +63,7 @@ module Files
|
|||
end
|
||||
|
||||
def last_commit
|
||||
Gitlab::Git::Commit.last_for_path(repository, @base_branch, @file_path)
|
||||
Gitlab::Git::Commit.last_for_path(repository, @start_branch, @file_path)
|
||||
end
|
||||
|
||||
def regex_check(file)
|
||||
|
|
|
@ -9,8 +9,8 @@ module Files
|
|||
previous_path: @previous_path,
|
||||
author_email: @author_email,
|
||||
author_name: @author_name,
|
||||
base_project: @base_project,
|
||||
base_branch_name: @base_branch)
|
||||
start_project: @start_project,
|
||||
start_branch_name: @start_branch)
|
||||
end
|
||||
|
||||
private
|
||||
|
@ -25,7 +25,7 @@ module Files
|
|||
|
||||
def last_commit
|
||||
@last_commit ||= Gitlab::Git::Commit.
|
||||
last_for_path(@base_project.repository, @base_branch, @file_path)
|
||||
last_for_path(@start_project.repository, @start_branch, @file_path)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -46,23 +46,23 @@ class GitOperationService
|
|||
end
|
||||
end
|
||||
|
||||
# Whenever `base_branch_name` is passed, if `branch_name` doesn't exist,
|
||||
# it would be created from `base_branch_name`.
|
||||
# If `base_project` is passed, and the branch doesn't exist,
|
||||
# it would try to find the base from it instead of current repository.
|
||||
# Whenever `start_branch_name` is passed, if `branch_name` doesn't exist,
|
||||
# it would be created from `start_branch_name`.
|
||||
# If `start_project` is passed, and the branch doesn't exist,
|
||||
# it would try to find the commits from it instead of current repository.
|
||||
def with_branch(
|
||||
branch_name,
|
||||
base_branch_name: nil,
|
||||
base_project: repository.project,
|
||||
start_branch_name: nil,
|
||||
start_project: repository.project,
|
||||
&block)
|
||||
|
||||
check_with_branch_arguments!(
|
||||
branch_name, base_branch_name, base_project)
|
||||
branch_name, start_branch_name, start_project)
|
||||
|
||||
update_branch_with_hooks(branch_name) do
|
||||
repository.with_repo_branch_commit(
|
||||
base_project.repository,
|
||||
base_branch_name || branch_name,
|
||||
start_project.repository,
|
||||
start_branch_name || branch_name,
|
||||
&block)
|
||||
end
|
||||
end
|
||||
|
@ -148,27 +148,27 @@ class GitOperationService
|
|||
end
|
||||
|
||||
def check_with_branch_arguments!(
|
||||
branch_name, base_branch_name, base_project)
|
||||
branch_name, start_branch_name, start_project)
|
||||
return if repository.branch_exists?(branch_name)
|
||||
|
||||
if repository.project != base_project
|
||||
unless base_branch_name
|
||||
if repository.project != start_project
|
||||
unless start_branch_name
|
||||
raise ArgumentError,
|
||||
'Should also pass :base_branch_name if' +
|
||||
' :base_project is different from current project'
|
||||
'Should also pass :start_branch_name if' +
|
||||
' :start_project is different from current project'
|
||||
end
|
||||
|
||||
unless base_project.repository.branch_exists?(base_branch_name)
|
||||
unless start_project.repository.branch_exists?(start_branch_name)
|
||||
raise ArgumentError,
|
||||
"Cannot find branch #{branch_name} nor" \
|
||||
" #{base_branch_name} from" \
|
||||
" #{base_project.path_with_namespace}"
|
||||
" #{start_branch_name} from" \
|
||||
" #{start_project.path_with_namespace}"
|
||||
end
|
||||
elsif base_branch_name
|
||||
unless repository.branch_exists?(base_branch_name)
|
||||
elsif start_branch_name
|
||||
unless repository.branch_exists?(start_branch_name)
|
||||
raise ArgumentError,
|
||||
"Cannot find branch #{branch_name} nor" \
|
||||
" #{base_branch_name} from" \
|
||||
" #{start_branch_name} from" \
|
||||
" #{repository.project.path_with_namespace}"
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue