Commit 268ec199 authored by Tiago Botelho's avatar Tiago Botelho

removes the possibility of commit messages having carriage returns

parent 3ff8d802
...@@ -791,7 +791,7 @@ class Repository ...@@ -791,7 +791,7 @@ class Repository
} }
options.merge!(get_committer_and_author(user, email: author_email, name: author_name)) options.merge!(get_committer_and_author(user, email: author_email, name: author_name))
Rugged::Commit.create(rugged, options) create_commit(options)
end end
end end
# rubocop:enable Metrics/ParameterLists # rubocop:enable Metrics/ParameterLists
...@@ -838,7 +838,7 @@ class Repository ...@@ -838,7 +838,7 @@ class Repository
tree: merge_index.write_tree(rugged), tree: merge_index.write_tree(rugged),
) )
commit_id = Rugged::Commit.create(rugged, actual_options) commit_id = create_commit(actual_options)
merge_request.update(in_progress_merge_commit_sha: commit_id) merge_request.update(in_progress_merge_commit_sha: commit_id)
commit_id commit_id
end end
...@@ -861,8 +861,7 @@ class Repository ...@@ -861,8 +861,7 @@ class Repository
committer = user_to_committer(user) committer = user_to_committer(user)
Rugged::Commit.create(rugged, create_commit(message: commit.revert_message(user),
message: commit.revert_message(user),
author: committer, author: committer,
committer: committer, committer: committer,
tree: revert_tree_id, tree: revert_tree_id,
...@@ -885,8 +884,7 @@ class Repository ...@@ -885,8 +884,7 @@ class Repository
committer = user_to_committer(user) committer = user_to_committer(user)
Rugged::Commit.create(rugged, create_commit(message: commit.message,
message: commit.message,
author: { author: {
email: commit.author_email, email: commit.author_email,
name: commit.author_name, name: commit.author_name,
...@@ -902,7 +900,7 @@ class Repository ...@@ -902,7 +900,7 @@ class Repository
GitOperationService.new(user, self).with_branch(branch_name) do GitOperationService.new(user, self).with_branch(branch_name) do
committer = user_to_committer(user) committer = user_to_committer(user)
Rugged::Commit.create(rugged, params.merge(author: committer, committer: committer)) create_commit(params.merge(author: committer, committer: committer))
end end
end end
...@@ -1146,6 +1144,12 @@ class Repository ...@@ -1146,6 +1144,12 @@ class Repository
Gitlab::Metrics.add_event(event, { path: path_with_namespace }.merge(tags)) Gitlab::Metrics.add_event(event, { path: path_with_namespace }.merge(tags))
end end
def create_commit(params = {})
params[:message].delete!("\r")
Rugged::Commit.create(rugged, params)
end
def repository_storage_path def repository_storage_path
@project.repository_storage_path @project.repository_storage_path
end end
......
---
title: Remove carriage returns from commit messages
merge_request: 11077
author:
...@@ -872,27 +872,6 @@ module Gitlab ...@@ -872,27 +872,6 @@ module Gitlab
rugged.remotes[remote_name].push(refspecs) rugged.remotes[remote_name].push(refspecs)
end end
# Merge the +source_name+ branch into the +target_name+ branch. This is
# equivalent to `git merge --no_ff +source_name+`, since a merge commit
# is always created.
def merge(source_name, target_name, options = {})
our_commit = rugged.branches[target_name].target
their_commit = rugged.branches[source_name].target
raise "Invalid merge target" if our_commit.nil?
raise "Invalid merge source" if their_commit.nil?
merge_index = rugged.merge_commits(our_commit, their_commit)
return false if merge_index.conflicts?
actual_options = options.merge(
parents: [our_commit, their_commit],
tree: merge_index.write_tree(rugged),
update_ref: "refs/heads/#{target_name}"
)
Rugged::Commit.create(rugged, actual_options)
end
AUTOCRLF_VALUES = { AUTOCRLF_VALUES = {
"true" => true, "true" => true,
"false" => false, "false" => false,
......
...@@ -1098,21 +1098,33 @@ describe Repository, models: true do ...@@ -1098,21 +1098,33 @@ describe Repository, models: true do
end end
describe '#merge' do describe '#merge' do
it 'merges the code and return the commit id' do let(:merge_request) { create(:merge_request, source_branch: 'feature', target_branch: 'master', source_project: project) }
let(:commit_options) do
author = repository.user_to_committer(user)
{ message: 'Test \r\n\r\n message', committer: author, author: author }
end
it 'merges the code and returns the commit id' do
expect(merge_commit).to be_present expect(merge_commit).to be_present
expect(repository.blob_at(merge_commit.id, 'files/ruby/feature.rb')).to be_present expect(repository.blob_at(merge_commit.id, 'files/ruby/feature.rb')).to be_present
end end
it 'sets the `in_progress_merge_commit_sha` flag for the given merge request' do it 'sets the `in_progress_merge_commit_sha` flag for the given merge request' do
merge_request = create(:merge_request, source_branch: 'feature', target_branch: 'master', source_project: project) merge_commit_id = merge(repository, user, merge_request, commit_options)
merge_commit_id = repository.merge(user,
merge_request.diff_head_sha,
merge_request,
commit_options)
expect(merge_request.in_progress_merge_commit_sha).to eq(merge_commit_id) expect(merge_request.in_progress_merge_commit_sha).to eq(merge_commit_id)
end end
it 'removes carriage returns from commit message' do
merge_commit_id = merge(repository, user, merge_request, commit_options)
expect(repository.commit(merge_commit_id).message).to eq(commit_options[:message].delete("\r"))
end
def merge(repository, user, merge_request, options = {})
repository.merge(user, merge_request.diff_head_sha, merge_request, options)
end
end end
describe '#revert' do describe '#revert' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment