diff options
Diffstat (limited to 'lib/gall/repository.lua')
-rw-r--r-- | lib/gall/repository.lua | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/gall/repository.lua b/lib/gall/repository.lua index 3a4bb75..0e2c2d5 100644 --- a/lib/gall/repository.lua +++ b/lib/gall/repository.lua @@ -212,6 +212,25 @@ function repomethod:merge_base(sha_1, sha_2, get_all) return unpack(ret) end +if ll.git2 then + local old_merge_base = repomethod.merge_base + function repomethod:merge_base(sha_1, sha_2, get_all) + if get_all then + return old_merge_base(self, sha_1, sha_2, get_all) + end + local oid_1 = ll.git2.OID.hex(sha_1) + local oid_2 = ll.git2.OID.hex(sha_2) + local oid_base, err = ll.git2.merge.base(self.git2.repo, oid_1, oid_2) + if not oid_base then + if tostring(err) == "ENOTFOUND" then + return true + end + return nil, err + end + return tostring(oid_base), err + end +end + function repomethod:rev_list(oldhead, newhead, firstonly) local args = { newhead, "^" .. oldhead } if firstonly then |