diff options
author | Sean McGivern <sean@mcgivern.me.uk> | 2018-01-16 11:03:51 +0000 |
---|---|---|
committer | Sean McGivern <sean@mcgivern.me.uk> | 2018-01-16 11:03:51 +0000 |
commit | b94b8aae29112f693bb53b60c6c28c8f7bb8fe9b (patch) | |
tree | ddb469e646f82af360ffe1eeb00d82c9f19cf6f5 /lib | |
parent | 480c01a9749ad1aa4ab033ae9e2270ab597c2cce (diff) | |
parent | f32f04a50f702f7a021e79b17dddc8cc1e3f6d5a (diff) | |
download | gitlab-ce-b94b8aae29112f693bb53b60c6c28c8f7bb8fe9b.tar.gz |
Merge branch 'feature/migrate-commit-uri-to-gitaly' into 'master'
Migrate Commit#uri_type to Gitaly
Closes gitaly#915
See merge request gitlab-org/gitlab-ce!16453
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/git/commit.rb | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/lib/gitlab/git/commit.rb b/lib/gitlab/git/commit.rb index 016437b2419..46e0c0e82a2 100644 --- a/lib/gitlab/git/commit.rb +++ b/lib/gitlab/git/commit.rb @@ -436,6 +436,16 @@ module Gitlab parent_ids.size > 1 end + def tree_entry(path) + @repository.gitaly_migrate(:commit_tree_entry) do |is_migrated| + if is_migrated + gitaly_tree_entry(path) + else + rugged_tree_entry(path) + end + end + end + def to_gitaly_commit return raw_commit if raw_commit.is_a?(Gitaly::GitCommit) @@ -450,11 +460,6 @@ module Gitlab ) end - # Is this the same as Blob.find_entry_by_path ? - def rugged_tree_entry(path) - rugged_commit.tree.path(path) - end - private def init_from_hash(hash) @@ -501,6 +506,28 @@ module Gitlab SERIALIZE_KEYS end + def gitaly_tree_entry(path) + # We're only interested in metadata, so limit actual data to 1 byte + # since Gitaly doesn't support "send no data" option. + entry = @repository.gitaly_commit_client.tree_entry(id, path, 1) + return unless entry + + # To be compatible with the rugged format + entry = entry.to_h + entry.delete(:data) + entry[:name] = File.basename(path) + entry[:type] = entry[:type].downcase + + entry + end + + # Is this the same as Blob.find_entry_by_path ? + def rugged_tree_entry(path) + rugged_commit.tree.path(path) + rescue Rugged::TreeError + nil + end + def gitaly_commit_author_from_rugged(author_or_committer) Gitaly::CommitAuthor.new( name: author_or_committer[:name].b, |