Skip to content
Snippets Groups Projects
Commit 90f8feae authored by Alejandro Rodríguez's avatar Alejandro Rodríguez
Browse files

Adapt to new Gitaly commit message format

parent 7ee7d3f9
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -210,6 +210,8 @@ module Gitlab
init_from_hash(raw_commit)
elsif raw_commit.is_a?(Rugged::Commit)
init_from_rugged(raw_commit)
elsif raw_commit.is_a?(Gitaly::GitCommit)
init_from_gitaly(raw_commit)
else
raise "Invalid raw commit type: #{raw_commit.class}"
end
Loading
Loading
@@ -371,6 +373,24 @@ module Gitlab
@parent_ids = commit.parents.map(&:oid)
end
 
def init_from_gitaly(commit)
@raw_commit = commit
@id = commit.id
# NOTE: For ease of parsing in Gitaly, we have only the subject of
# the commit and not the full message.
# TODO: Once gitaly "takes over" Rugged consider separating the
# subject from the message to make it clearer when there's one
# available but not the other.
@message = commit.subject.dup
@authored_date = Time.at(commit.author.date.seconds)
@author_name = commit.author.name.dup
@author_email = commit.author.email.dup
@committed_date = Time.at(commit.committer.date.seconds)
@committer_name = commit.committer.name.dup
@committer_email = commit.committer.email.dup
@parent_ids = commit.parent_ids
end
def serialize_keys
SERIALIZE_KEYS
end
Loading
Loading
Loading
Loading
@@ -96,11 +96,11 @@ module Gitlab
id: response.commit_id,
message: message,
authored_date: Time.at(response.commit_author.date.seconds),
author_name: response.commit_author.name,
author_email: response.commit_author.email,
author_name: response.commit_author.name.dup,
author_email: response.commit_author.email.dup,
committed_date: Time.at(response.commit_committer.date.seconds),
committer_name: response.commit_committer.name,
committer_email: response.commit_committer.email
committer_name: response.commit_committer.name.dup,
committer_email: response.commit_committer.email.dup
}
 
Gitlab::Git::Commit.decorate(hash)
Loading
Loading
Loading
Loading
@@ -64,6 +64,41 @@ describe Gitlab::Git::Commit, seed_helper: true do
end
end
 
describe "Commit info from gitaly commit" do
let(:id) { 'f00' }
let(:subject) { "My commit".force_encoding('ASCII-8BIT') }
let(:committer) do
Gitaly::CommitAuthor.new(
name: generate(:name),
email: generate(:email),
date: Google::Protobuf::Timestamp.new(seconds: 123)
)
end
let(:author) do
Gitaly::CommitAuthor.new(
name: generate(:name),
email: generate(:email),
date: Google::Protobuf::Timestamp.new(seconds: 456)
)
end
let(:gitaly_commit) do
Gitaly::GitCommit.new(
id: id, subject: subject, author: author, committer: committer
)
end
let(:commit) { described_class.new(gitaly_commit) }
it { expect(commit.short_id).to eq(id[0..10]) }
it { expect(commit.id).to eq(id) }
it { expect(commit.sha).to eq(id) }
it { expect(commit.safe_message).to eq(subject) }
it { expect(commit.created_at).to eq(Time.at(committer.date.seconds)) }
it { expect(commit.author_email).to eq(author.email) }
it { expect(commit.author_name).to eq(author.name) }
it { expect(commit.committer_name).to eq(committer.name) }
it { expect(commit.committer_email).to eq(committer.email) }
end
context 'Class methods' do
describe '.find' do
it "should return first head commit if without params" do
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment