diff options
Diffstat (limited to 'lib/git_helpers.ml')
-rw-r--r-- | lib/git_helpers.ml | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/lib/git_helpers.ml b/lib/git_helpers.ml index d973a88..0626d02 100644 --- a/lib/git_helpers.ml +++ b/lib/git_helpers.ml @@ -1,20 +1,11 @@ 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) + let full_path = Filename.concat Config.git_directory repo_path in + let%lwt store_result = Git_unix.Store.v @@ Fpath.v full_path in + match store_result with + | Error _ -> Lwt.return_error "Could not open the Git repository." + | Ok store -> ( + Git_unix.Store.Ref.resolve store Git.Reference.head >|= function + | Error _ -> Error ("Failed to resolve HEAD for repo " ^ repo_path) + | Ok hash -> Ok (Git_unix.Store.Hash.to_hex hash)) |