mirror of
https://github.com/SkinnyMind/libgit2dart.git
synced 2025-05-05 04:39:07 -04:00
chore: upgrade to libgit2-1.2.0
This commit is contained in:
parent
b83fea9360
commit
a1e420d86c
36 changed files with 2889 additions and 1024 deletions
174
libgit2/headers/git2/sys/commit_graph.h
Normal file
174
libgit2/headers/git2/sys/commit_graph.h
Normal file
|
@ -0,0 +1,174 @@
|
|||
/*
|
||||
* 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);
|
||||
|
||||
/**
|
||||
* Create a new writer for `commit-graph` files.
|
||||
*
|
||||
* @param out Location to store the writer pointer.
|
||||
* @param objects_info_dir The `objects/info` directory.
|
||||
* The `commit-graph` file will be written in this directory.
|
||||
* @return 0 or an error code
|
||||
*/
|
||||
GIT_EXTERN(int) git_commit_graph_writer_new(
|
||||
git_commit_graph_writer **out,
|
||||
const char *objects_info_dir);
|
||||
|
||||
/**
|
||||
* Free the commit-graph writer and its resources.
|
||||
*
|
||||
* @param w The writer to free. If NULL no action is taken.
|
||||
*/
|
||||
GIT_EXTERN(void) git_commit_graph_writer_free(git_commit_graph_writer *w);
|
||||
|
||||
/**
|
||||
* Add an `.idx` file (associated to a packfile) to the writer.
|
||||
*
|
||||
* @param w The writer.
|
||||
* @param repo The repository that owns the `.idx` file.
|
||||
* @param idx_path The path of an `.idx` file.
|
||||
* @return 0 or an error code
|
||||
*/
|
||||
GIT_EXTERN(int) git_commit_graph_writer_add_index_file(
|
||||
git_commit_graph_writer *w,
|
||||
git_repository *repo,
|
||||
const char *idx_path);
|
||||
|
||||
/**
|
||||
* Add a revwalk to the writer. This will add all the commits from the revwalk
|
||||
* to the commit-graph.
|
||||
*
|
||||
* @param w The writer.
|
||||
* @param walk The git_revwalk.
|
||||
* @return 0 or an error code
|
||||
*/
|
||||
GIT_EXTERN(int) git_commit_graph_writer_add_revwalk(
|
||||
git_commit_graph_writer *w,
|
||||
git_revwalk *walk);
|
||||
|
||||
|
||||
/**
|
||||
* The strategy to use when adding a new set of commits to a pre-existing
|
||||
* commit-graph chain.
|
||||
*/
|
||||
typedef enum {
|
||||
/**
|
||||
* Do not split commit-graph files. The other split strategy-related option
|
||||
* fields are ignored.
|
||||
*/
|
||||
GIT_COMMIT_GRAPH_SPLIT_STRATEGY_SINGLE_FILE = 0,
|
||||
} git_commit_graph_split_strategy_t;
|
||||
|
||||
/**
|
||||
* Options structure for
|
||||
* `git_commit_graph_writer_commit`/`git_commit_graph_writer_dump`.
|
||||
*
|
||||
* Initialize with `GIT_COMMIT_GRAPH_WRITER_OPTIONS_INIT`. Alternatively, you
|
||||
* can use `git_commit_graph_writer_options_init`.
|
||||
*/
|
||||
typedef struct {
|
||||
unsigned int version;
|
||||
|
||||
/**
|
||||
* The strategy to use when adding new commits to a pre-existing commit-graph
|
||||
* chain.
|
||||
*/
|
||||
git_commit_graph_split_strategy_t split_strategy;
|
||||
|
||||
/**
|
||||
* The number of commits in level N is less than X times the number of
|
||||
* commits in level N + 1. Default is 2.
|
||||
*/
|
||||
float size_multiple;
|
||||
|
||||
/**
|
||||
* The number of commits in level N + 1 is more than C commits.
|
||||
* Default is 64000.
|
||||
*/
|
||||
size_t max_commits;
|
||||
} git_commit_graph_writer_options;
|
||||
|
||||
#define GIT_COMMIT_GRAPH_WRITER_OPTIONS_VERSION 1
|
||||
#define GIT_COMMIT_GRAPH_WRITER_OPTIONS_INIT { \
|
||||
GIT_COMMIT_GRAPH_WRITER_OPTIONS_VERSION \
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize git_commit_graph_writer_options structure
|
||||
*
|
||||
* Initializes a `git_commit_graph_writer_options` with default values. Equivalent to
|
||||
* creating an instance with `GIT_COMMIT_GRAPH_WRITER_OPTIONS_INIT`.
|
||||
*
|
||||
* @param opts The `git_commit_graph_writer_options` struct to initialize.
|
||||
* @param version The struct version; pass `GIT_COMMIT_GRAPH_WRITER_OPTIONS_VERSION`.
|
||||
* @return Zero on success; -1 on failure.
|
||||
*/
|
||||
GIT_EXTERN(int) git_commit_graph_writer_options_init(
|
||||
git_commit_graph_writer_options *opts,
|
||||
unsigned int version);
|
||||
|
||||
/**
|
||||
* Write a `commit-graph` file to a file.
|
||||
*
|
||||
* @param w The writer
|
||||
* @param opts Pointer to git_commit_graph_writer_options struct.
|
||||
* @return 0 or an error code
|
||||
*/
|
||||
GIT_EXTERN(int) git_commit_graph_writer_commit(
|
||||
git_commit_graph_writer *w,
|
||||
git_commit_graph_writer_options *opts);
|
||||
|
||||
/**
|
||||
* Dump the contents of the `commit-graph` to an in-memory buffer.
|
||||
*
|
||||
* @param buffer Buffer where to store the contents of the `commit-graph`.
|
||||
* @param w The writer.
|
||||
* @param opts Pointer to git_commit_graph_writer_options struct.
|
||||
* @return 0 or an error code
|
||||
*/
|
||||
GIT_EXTERN(int) git_commit_graph_writer_dump(
|
||||
git_buf *buffer,
|
||||
git_commit_graph_writer *w,
|
||||
git_commit_graph_writer_options *opts);
|
||||
|
||||
/** @} */
|
||||
GIT_END_DECL
|
||||
#endif
|
|
@ -167,17 +167,18 @@ typedef void GIT_CALLBACK(git_filter_shutdown_fn)(git_filter *self);
|
|||
*
|
||||
* The `payload` will be a pointer to a reference payload for the filter.
|
||||
* This will start as NULL, but `check` can assign to this pointer for
|
||||
* later use by the `apply` callback. Note that the value should be heap
|
||||
* allocated (not stack), so that it doesn't go away before the `apply`
|
||||
* later use by the `stream` callback. Note that the value should be heap
|
||||
* allocated (not stack), so that it doesn't go away before the `stream`
|
||||
* callback can use it. If a filter allocates and assigns a value to the
|
||||
* `payload`, it will need a `cleanup` callback to free the payload.
|
||||
*/
|
||||
typedef int GIT_CALLBACK(git_filter_check_fn)(
|
||||
git_filter *self,
|
||||
void **payload, /* points to NULL ptr on entry, may be set */
|
||||
git_filter *self,
|
||||
void **payload, /* NULL on entry, may be set */
|
||||
const git_filter_source *src,
|
||||
const char **attr_values);
|
||||
const char **attr_values);
|
||||
|
||||
#ifndef GIT_DEPRECATE_HARD
|
||||
/**
|
||||
* Callback to actually perform the data filtering
|
||||
*
|
||||
|
@ -189,32 +190,45 @@ typedef int GIT_CALLBACK(git_filter_check_fn)(
|
|||
*
|
||||
* The `payload` value will refer to any payload that was set by the
|
||||
* `check` callback. It may be read from or written to as needed.
|
||||
*
|
||||
* @deprecated use git_filter_stream_fn
|
||||
*/
|
||||
typedef int GIT_CALLBACK(git_filter_apply_fn)(
|
||||
git_filter *self,
|
||||
void **payload, /* may be read and/or set */
|
||||
git_buf *to,
|
||||
const git_buf *from,
|
||||
git_filter *self,
|
||||
void **payload, /* may be read and/or set */
|
||||
git_buf *to,
|
||||
const git_buf *from,
|
||||
const git_filter_source *src);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Callback to perform the data filtering.
|
||||
*
|
||||
* Specified as `filter.stream`, this is a callback that filters data
|
||||
* in a streaming manner. This function will provide a
|
||||
* `git_writestream` that will the original data will be written to;
|
||||
* with that data, the `git_writestream` will then perform the filter
|
||||
* translation and stream the filtered data out to the `next` location.
|
||||
*/
|
||||
typedef int GIT_CALLBACK(git_filter_stream_fn)(
|
||||
git_writestream **out,
|
||||
git_filter *self,
|
||||
void **payload,
|
||||
git_writestream **out,
|
||||
git_filter *self,
|
||||
void **payload,
|
||||
const git_filter_source *src,
|
||||
git_writestream *next);
|
||||
git_writestream *next);
|
||||
|
||||
/**
|
||||
* Callback to clean up after filtering has been applied
|
||||
*
|
||||
* Specified as `filter.cleanup`, this is an optional callback invoked
|
||||
* after the filter has been applied. If the `check` or `apply` callbacks
|
||||
* allocated a `payload` to keep per-source filter state, use this
|
||||
* callback to free that payload and release resources as required.
|
||||
* after the filter has been applied. If the `check`, `apply`, or
|
||||
* `stream` callbacks allocated a `payload` to keep per-source filter
|
||||
* state, use this callback to free that payload and release resources
|
||||
* as required.
|
||||
*/
|
||||
typedef void GIT_CALLBACK(git_filter_cleanup_fn)(
|
||||
git_filter *self,
|
||||
void *payload);
|
||||
git_filter *self,
|
||||
void *payload);
|
||||
|
||||
/**
|
||||
* Filter structure used to register custom filters.
|
||||
|
@ -248,21 +262,28 @@ struct git_filter {
|
|||
/**
|
||||
* Called to determine whether the filter should be invoked for a
|
||||
* given file. If this function returns `GIT_PASSTHROUGH` then the
|
||||
* `apply` function will not be invoked and the contents will be passed
|
||||
* through unmodified.
|
||||
* `stream` or `apply` functions will not be invoked and the
|
||||
* contents will be passed through unmodified.
|
||||
*/
|
||||
git_filter_check_fn check;
|
||||
|
||||
#ifdef GIT_DEPRECATE_HARD
|
||||
void *reserved;
|
||||
#else
|
||||
/**
|
||||
* Called to actually apply the filter to file contents. If this
|
||||
* function returns `GIT_PASSTHROUGH` then the contents will be passed
|
||||
* through unmodified.
|
||||
* Provided for backward compatibility; this will apply the
|
||||
* filter to the given contents in a `git_buf`. Callers should
|
||||
* provide a `stream` function instead.
|
||||
*/
|
||||
git_filter_apply_fn apply;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Called to apply the filter in a streaming manner. If this is not
|
||||
* specified then the system will call `apply` with the whole buffer.
|
||||
* Called to apply the filter, this function will provide a
|
||||
* `git_writestream` that will the original data will be
|
||||
* written to; with that data, the `git_writestream` will then
|
||||
* perform the filter translation and stream the filtered data
|
||||
* out to the `next` location.
|
||||
*/
|
||||
git_filter_stream_fn stream;
|
||||
|
||||
|
@ -289,9 +310,9 @@ GIT_EXTERN(int) git_filter_init(git_filter *filter, unsigned int version);
|
|||
* As mentioned elsewhere, the initialize callback will not be invoked
|
||||
* immediately. It is deferred until the filter is used in some way.
|
||||
*
|
||||
* A filter's attribute checks and `check` and `apply` callbacks will be
|
||||
* issued in order of `priority` on smudge (to workdir), and in reverse
|
||||
* order of `priority` on clean (to odb).
|
||||
* A filter's attribute checks and `check` and `stream` (or `apply`)
|
||||
* callbacks will be issued in order of `priority` on smudge (to
|
||||
* workdir), and in reverse order of `priority` on clean (to odb).
|
||||
*
|
||||
* Two filters are preregistered with libgit2:
|
||||
* - GIT_FILTER_CRLF with priority 0
|
||||
|
|
74
libgit2/headers/git2/sys/midx.h
Normal file
74
libgit2/headers/git2/sys/midx.h
Normal file
|
@ -0,0 +1,74 @@
|
|||
/*
|
||||
* 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_midx_h__
|
||||
#define INCLUDE_sys_git_midx_h__
|
||||
|
||||
#include "git2/common.h"
|
||||
#include "git2/types.h"
|
||||
|
||||
/**
|
||||
* @file git2/midx.h
|
||||
* @brief Git multi-pack-index routines
|
||||
* @defgroup git_midx Git multi-pack-index routines
|
||||
* @ingroup Git
|
||||
* @{
|
||||
*/
|
||||
GIT_BEGIN_DECL
|
||||
|
||||
/**
|
||||
* Create a new writer for `multi-pack-index` files.
|
||||
*
|
||||
* @param out location to store the writer pointer.
|
||||
* @param pack_dir the directory where the `.pack` and `.idx` files are. The
|
||||
* `multi-pack-index` file will be written in this directory, too.
|
||||
* @return 0 or an error code
|
||||
*/
|
||||
GIT_EXTERN(int) git_midx_writer_new(
|
||||
git_midx_writer **out,
|
||||
const char *pack_dir);
|
||||
|
||||
/**
|
||||
* Free the multi-pack-index writer and its resources.
|
||||
*
|
||||
* @param w the writer to free. If NULL no action is taken.
|
||||
*/
|
||||
GIT_EXTERN(void) git_midx_writer_free(git_midx_writer *w);
|
||||
|
||||
/**
|
||||
* Add an `.idx` file to the writer.
|
||||
*
|
||||
* @param w the writer
|
||||
* @param idx_path the path of an `.idx` file.
|
||||
* @return 0 or an error code
|
||||
*/
|
||||
GIT_EXTERN(int) git_midx_writer_add(
|
||||
git_midx_writer *w,
|
||||
const char *idx_path);
|
||||
|
||||
/**
|
||||
* Write a `multi-pack-index` file to a file.
|
||||
*
|
||||
* @param w the writer
|
||||
* @return 0 or an error code
|
||||
*/
|
||||
GIT_EXTERN(int) git_midx_writer_commit(
|
||||
git_midx_writer *w);
|
||||
|
||||
/**
|
||||
* Dump the contents of the `multi-pack-index` to an in-memory buffer.
|
||||
*
|
||||
* @param midx Buffer where to store the contents of the `multi-pack-index`.
|
||||
* @param w the writer
|
||||
* @return 0 or an error code
|
||||
*/
|
||||
GIT_EXTERN(int) git_midx_writer_dump(
|
||||
git_buf *midx,
|
||||
git_midx_writer *w);
|
||||
|
||||
/** @} */
|
||||
GIT_END_DECL
|
||||
#endif
|
|
@ -84,6 +84,13 @@ struct git_odb_backend {
|
|||
git_odb_writepack **, git_odb_backend *, git_odb *odb,
|
||||
git_indexer_progress_cb progress_cb, void *progress_payload);
|
||||
|
||||
/**
|
||||
* If the backend supports pack files, this will create a
|
||||
* `multi-pack-index` file which will contain an index of all objects
|
||||
* across all the `.pack` files.
|
||||
*/
|
||||
int GIT_CALLBACK(writemidx)(git_odb_backend *);
|
||||
|
||||
/**
|
||||
* "Freshens" an already existing object, updating its last-used
|
||||
* time. This occurs when `git_odb_write` was called, but the
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#define INCLUDE_sys_git_transport_h
|
||||
|
||||
#include "git2/net.h"
|
||||
#include "git2/transport.h"
|
||||
#include "git2/types.h"
|
||||
#include "git2/strarray.h"
|
||||
#include "git2/proxy.h"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue