summaryrefslogtreecommitdiff
path: root/lib/git_helpers.ml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/git_helpers.ml')
-rw-r--r--lib/git_helpers.ml20
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/git_helpers.ml b/lib/git_helpers.ml
new file mode 100644
index 0000000..d973a88
--- /dev/null
+++ b/lib/git_helpers.ml
@@ -0,0 +1,20 @@
+open Lwt.Infix
+open Git_unix
+
+let get_head_commit_hash repo_path =
+ let root = Fpath.v repo_path in
+
+ (* 1. Open the Git repository *)
+ let%lwt repo =
+ Store.v root >>= function
+ | Ok repo -> Lwt.return repo
+ | Error _ -> Lwt.fail_with "Could not open the Git repository."
+ in
+
+ (* 2. Resolve HEAD to get the latest commit hash *)
+ let%lwt commit_hash =
+ Git_unix.Store.Ref.resolve repo Git.Reference.master >>= function
+ | Ok hash -> Lwt.return hash
+ | Error _ -> Lwt.fail_with "Failed to resolve HEAD"
+ in
+ Lwt.return @@ (commit_hash |> Digestif.SHA1.to_hex)
Copyright 2019--2025 Marius PETER