11d5ad2f17
The truth is that at the point where there error message is written we can only guess what went wrong.
40 lines
1.1 KiB
Ruby
40 lines
1.1 KiB
Ruby
require_relative "base_service"
|
|
|
|
module Files
|
|
class UpdateService < BaseService
|
|
def execute
|
|
allowed = if project.protected_branch?(ref)
|
|
can?(current_user, :push_code_to_protected_branches, project)
|
|
else
|
|
can?(current_user, :push_code, project)
|
|
end
|
|
|
|
unless allowed
|
|
return error("You are not allowed to push into this branch")
|
|
end
|
|
|
|
unless repository.branch_names.include?(ref)
|
|
return error("You can only create files if you are on top of a branch")
|
|
end
|
|
|
|
blob = repository.blob_at_branch(ref, path)
|
|
|
|
unless blob
|
|
return error("You can only edit text files")
|
|
end
|
|
|
|
edit_file_action = Gitlab::Satellite::EditFileAction.new(current_user, project, ref, path)
|
|
created_successfully = edit_file_action.commit!(
|
|
params[:content],
|
|
params[:commit_message],
|
|
params[:encoding]
|
|
)
|
|
|
|
if created_successfully
|
|
success
|
|
else
|
|
error("Your changes could not be committed. Maybe the file changed, or there was nothing to commit?")
|
|
end
|
|
end
|
|
end
|
|
end
|