mirror of
https://github.com/libgit2/libgit2.git
synced 2026-01-25 11:06:32 +00:00
This change does a medium-size refactor of the git_commit_graph_file and the interaction with the ODB. Now instead of the ODB owning a direct reference to the git_commit_graph_file, there will be an intermediate git_commit_graph. The main advantage of that is that now end users can explicitly set a git_commit_graph that is eagerly checked for errors, while still being able to lazily use the commit-graph in a regular ODB, if the file is present.
46 lines
1.3 KiB
C
46 lines
1.3 KiB
C
/*
|
|
* Copyright (C) the libgit2 contributors. All rights reserved.
|
|
*
|
|
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
|
* a Linking Exception. For full terms see the included COPYING file.
|
|
*/
|
|
#ifndef INCLUDE_sys_git_commit_graph_h__
|
|
#define INCLUDE_sys_git_commit_graph_h__
|
|
|
|
#include "git2/common.h"
|
|
#include "git2/types.h"
|
|
|
|
/**
|
|
* @file git2/sys/commit_graph.h
|
|
* @brief Git commit-graph
|
|
* @defgroup git_commit_graph Git commit-graph APIs
|
|
* @ingroup Git
|
|
* @{
|
|
*/
|
|
GIT_BEGIN_DECL
|
|
|
|
/**
|
|
* Opens a `git_commit_graph` from a path to an objects directory.
|
|
*
|
|
* This finds, opens, and validates the `commit-graph` file.
|
|
*
|
|
* @param cgraph_out the `git_commit_graph` struct to initialize.
|
|
* @param objects_dir the path to a git objects directory.
|
|
* @return Zero on success; -1 on failure.
|
|
*/
|
|
GIT_EXTERN(int) git_commit_graph_open(git_commit_graph **cgraph_out, const char *objects_dir);
|
|
|
|
/**
|
|
* Frees commit-graph data. This should only be called when memory allocated
|
|
* using `git_commit_graph_open` is not returned to libgit2 because it was not
|
|
* associated with the ODB through a successful call to
|
|
* `git_odb_set_commit_graph`.
|
|
*
|
|
* @param cgraph the commit-graph object to free. If NULL, no action is taken.
|
|
*/
|
|
GIT_EXTERN(void) git_commit_graph_free(git_commit_graph *cgraph);
|
|
|
|
GIT_END_DECL
|
|
|
|
#endif
|