| ... | @@ -10,7 +10,9 @@ module Gitlab |
... | @@ -10,7 +10,9 @@ module Gitlab |
|
|
module Git
|
|
module Git
|
|
|
module RuggedImpl
|
|
module RuggedImpl
|
|
|
module Repository
|
|
module Repository
|
|
|
FEATURE_FLAGS = %i(rugged_find_commit).freeze
|
|
extend ::Gitlab::Utils::Override
|
|
|
|
|
|
|
|
FEATURE_FLAGS = %i(rugged_find_commit rugged_tree_entries rugged_tree_entry rugged_commit_is_ancestor).freeze
|
|
|
|
|
|
|
|
def alternate_object_directories
|
|
def alternate_object_directories
|
|
|
relative_object_directories.map { |d| File.join(path, d) }
|
|
relative_object_directories.map { |d| File.join(path, d) }
|
| ... | @@ -41,6 +43,29 @@ module Gitlab |
... | @@ -41,6 +43,29 @@ module Gitlab |
|
|
obj = rugged.rev_parse(revspec)
|
|
obj = rugged.rev_parse(revspec)
|
|
|
Ref.dereference_object(obj)
|
|
Ref.dereference_object(obj)
|
|
|
end
|
|
end
|
|
|
|
|
|
|
|
override :ancestor?
|
|
|
|
def ancestor?(from, to)
|
|
|
|
if Feature.enabled?(:rugged_commit_is_ancestor)
|
|
|
|
rugged_is_ancestor?(from, to)
|
|
|
|
else
|
|
|
|
super
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def rugged_is_ancestor?(ancestor_id, descendant_id)
|
|
|
|
return false if ancestor_id.nil? || descendant_id.nil?
|
|
|
|
|
|
|
|
rugged_merge_base(ancestor_id, descendant_id) == ancestor_id
|
|
|
|
rescue Rugged::OdbError
|
|
|
|
false
|
|
|
|
end
|
|
|
|
|
|
|
|
def rugged_merge_base(from, to)
|
|
|
|
rugged.merge_base(from, to)
|
|
|
|
rescue Rugged::ReferenceError
|
|
|
|
nil
|
|
|
|
end
|
|
|
end
|
|
end
|
|
|
end
|
|
end
|
|
|
end
|
|
end
|
| ... | |
... | |
| ... | | ... | |