Skip to content

Commit

Permalink
Speed up Store.last-modified by comparing hashes instead of file co…
Browse files Browse the repository at this point in the history
…ntents
  • Loading branch information
zazedd authored and art-w committed Sep 19, 2024
1 parent 2f2ad48 commit b908da8
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 9 deletions.
10 changes: 5 additions & 5 deletions src/irmin/store.ml
Original file line number Diff line number Diff line change
Expand Up @@ -1153,9 +1153,9 @@ module Make (B : Backend.S) = struct
let current, current_depth = Heap.pop_minimum heap in
let parents = Commit.parents current in
let tree = Commit.tree current in
let* current_value = Tree.find tree key in
let* current_tree = Tree.find_tree tree key in
if List.length parents = 0 then
if current_value <> None then Lwt.return (current :: acc)
if current_tree <> None then Lwt.return (current :: acc)
else Lwt.return acc
else
let max_depth =
Expand All @@ -1173,9 +1173,9 @@ module Make (B : Backend.S) = struct
Heap.add heap (commit, current_depth + 1)
in
let tree = Commit.tree commit in
let+ e = Tree.find tree key in
match (e, current_value) with
| Some x, Some y -> not (equal_contents x y)
let+ e = Tree.find_tree tree key in
match (e, current_tree) with
| Some x, Some y -> Tree.hash x <> Tree.hash y
| Some _, None -> true
| None, Some _ -> true
| _, _ -> false)
Expand Down
7 changes: 3 additions & 4 deletions src/irmin/store_intf.ml
Original file line number Diff line number Diff line change
Expand Up @@ -1006,10 +1006,9 @@ module type S_generic_key = sig
head is not set) and stopping at [min] if specified. *)

val last_modified : ?depth:int -> ?n:int -> t -> path -> commit list Lwt.t
(** [last_modified ?number c k] is the list of the last [number] commits that
modified [path], in ascending order of date. [depth] is the maximum depth
to be explored in the commit graph, if any. Default value for [number] is
1. *)
(** [last_modified ?n c k] is the list of the last [n] commits that modified
[path], in ascending order of date. [depth] is the maximum depth to be
explored in the commit graph, if any. Default value for [n] is 1. *)

(** Manipulate branches. *)
module Branch : sig
Expand Down

0 comments on commit b908da8

Please sign in to comment.