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)