Class libgit2
The native libgit2 functions. Upon the first invocation of any of these functions, the native library will be loaded and the git_libgit2_init() function will be called to set up the native library.
Inheritance
Namespace: Dogged.Native
Assembly: Dogged.Native.dll
Syntax
public static class libgit2 : object
Methods
git_blob_filter(git_buf, git_blob*, String, git_blob_filter_options*)
Declaration
public static extern int git_blob_filter(git_buf content, git_blob*blob, string path, git_blob_filter_options*options)
Parameters
| Type | Name | Description |
|---|---|---|
| git_buf | content | |
| git_blob* | blob | |
| System.String | path | |
| git_blob_filter_options* | options |
Returns
| Type | Description |
|---|---|
| System.Int32 |
git_blob_is_binary(git_blob*)
Declaration
public static extern int git_blob_is_binary(git_blob*blob)
Parameters
| Type | Name | Description |
|---|---|---|
| git_blob* | blob |
Returns
| Type | Description |
|---|---|
| System.Int32 |
git_blob_lookup(out git_blob*, git_repository*, ref git_oid)
Look up a blob from the repository.
Declaration
public static extern int git_blob_lookup(out git_blob*blob, git_repository*repo, ref git_oid id)
Parameters
| Type | Name | Description |
|---|---|---|
| git_blob* | blob | Pointer to the blob that was loaded from the repository |
| git_repository* | repo | The repository that contains the blob |
| git_oid | id | The id of the blob to lookup |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code |
git_blob_rawcontent(git_blob*)
Declaration
public static extern byte *git_blob_rawcontent(git_blob*blob)
Parameters
| Type | Name | Description |
|---|---|---|
| git_blob* | blob |
Returns
| Type | Description |
|---|---|
| System.Byte* |
git_blob_rawsize(git_blob*)
Get the size in bytes of the contents of a blob.
Declaration
public static extern long git_blob_rawsize(git_blob*blob)
Parameters
| Type | Name | Description |
|---|---|---|
| git_blob* | blob | The blob to examine |
Returns
| Type | Description |
|---|---|
| System.Int64 | Raw size of the blob in bytes |
git_buf_dispose(git_buf)
Declaration
public static extern void git_buf_dispose(git_buf buf)
Parameters
| Type | Name | Description |
|---|---|---|
| git_buf | buf |
git_clone(out git_repository*, String, String, git_clone_options*)
Clone a remote repository.
By default this creates its repository and initial remote to match git's defaults. You can use the options in the callback to customize how these are created.
Declaration
public static extern int git_clone(out git_repository*repo, string remotePath, string localPath, git_clone_options*options)
Parameters
| Type | Name | Description |
|---|---|---|
| git_repository* | repo | Pointer to the repository that will be cloned. |
| System.String | remotePath | The remote repository to clone |
| System.String | localPath | The local path to clone to |
| git_clone_options* | options | Configuration options for the clone. If null, defaults will be used. |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code |
git_commit_author(git_commit*)
Get the signature for the commit's author. This data is owned by the commit and should not be freed.
Declaration
public static extern git_signature*git_commit_author(git_commit*commit)
Parameters
| Type | Name | Description |
|---|---|---|
| git_commit* | commit | The commit to examine |
Returns
| Type | Description |
|---|---|
| git_signature* | A pointer to a signature for the author |
git_commit_committer(git_commit*)
Get the signature for the commit's committer. This data is owned by the commit and should not be freed.
Declaration
public static extern git_signature*git_commit_committer(git_commit*commit)
Parameters
| Type | Name | Description |
|---|---|---|
| git_commit* | commit | The commit to examine |
Returns
| Type | Description |
|---|---|
| git_signature* | A pointer to a signature for the committer |
git_commit_lookup(out git_commit*, git_repository*, ref git_oid)
Look up a commit from the repository.
Declaration
public static extern int git_commit_lookup(out git_commit*obj, git_repository*repo, ref git_oid id)
Parameters
| Type | Name | Description |
|---|---|---|
| git_commit* | obj | Pointer to the commit that was loaded from the repository |
| git_repository* | repo | The repository that contains the commit |
| git_oid | id | The id of the commit to lookup |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code |
git_commit_tree(out git_tree*, git_commit*)
Get the tree that the given commit points to. This tree must be freed when it is no longer needed.
Declaration
public static extern int git_commit_tree(out git_tree*tree, git_commit*commit)
Parameters
| Type | Name | Description |
|---|---|---|
| git_tree* | tree | A pointer to the tree |
| git_commit* | commit | The commit to examine |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code |
git_commit_tree_id(git_commit*)
Get the object id of the tree that the given commit points to. This differs from git_commit_tree(out git_tree*, git_commit*) in that no attempts are made to lookup the tree or validate it.
Declaration
public static extern git_oid*git_commit_tree_id(git_commit*commit)
Parameters
| Type | Name | Description |
|---|---|---|
| git_commit* | commit | The commit to examine |
Returns
| Type | Description |
|---|---|
| git_oid* | A pointer to the tree's object id |
git_error_last()
Returns the information (class and message) for the last error that occurred on the current thread. This information is undefined if the last libgit2 function did not return an error.
Declaration
public static extern git_error*git_error_last()
Returns
| Type | Description |
|---|---|
| git_error* | A pointer to a git_error that describes the error. |
git_filter_list_apply_to_blob(git_buf, git_filter_list*, git_blob*)
Apply a filter list to the contents of a blob.
Declaration
public static extern int git_filter_list_apply_to_blob(git_buf outputBuffer, git_filter_list*filters, git_blob*blob)
Parameters
| Type | Name | Description |
|---|---|---|
| git_buf | outputBuffer | Buffer to store the result of the filtering |
| git_filter_list* | filters | A loaded git_filter_list (or null) |
| git_blob* | blob | The blob to filter |
Returns
| Type | Description |
|---|---|
| System.Int32 |
git_filter_list_apply_to_data(git_buf, git_filter_list*, git_buf)
Apply filter list to a data buffer.
If the `inputBuffer` buffer holds data allocated by libgit2 (i.e. `inputBuffer->asize` is not zero), then it will be overwritten when applying the filters. If not, then it will be left untouched.
If there are no filters to apply (or `filters` is NULL), then the `outputBuffer` buffer will reference the `inputBuffer` buffer data (with `asize` set to zero) instead of allocating data. This keeps allocations to a minimum, but it means you have to be careful about freeing the `inputBuffer` data since `outputBuffer` may be pointing to it!
Declaration
public static extern int git_filter_list_apply_to_data(git_buf outputBuffer, git_filter_list*filters, git_buf inputBuffer)
Parameters
| Type | Name | Description |
|---|---|---|
| git_buf | outputBuffer | Buffer to store the result of the filtering |
| git_filter_list* | filters | A loaded git_filter_list (or null) |
| git_buf | inputBuffer | Buffer containing the data to filter |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code |
git_filter_list_apply_to_file(git_buf, git_filter_list*, git_repository*, String)
Apply a filter list to the contents of a file on disk.
Declaration
public static extern int git_filter_list_apply_to_file(git_buf outputBuffer, git_filter_list*filters, git_repository*repo, string path)
Parameters
| Type | Name | Description |
|---|---|---|
| git_buf | outputBuffer | Buffer to store the result of the filtering |
| git_filter_list* | filters | A loaded git_filter_list (or null) |
| git_repository* | repo | The repository to perform the filtering in |
| System.String | path | The path of the file to filter; a relative path will be taken as relative to the workdir |
Returns
| Type | Description |
|---|---|
| System.Int32 |
git_filter_list_free(git_filter_list*)
Free a git filter list.
Declaration
public static extern void git_filter_list_free(git_filter_list*filters)
Parameters
| Type | Name | Description |
|---|---|---|
| git_filter_list* | filters | The filter list to free |
git_filter_list_load(out git_filter_list*, git_repository*, git_blob*, String, git_filter_mode_t, UInt32)
Load the filter list for a given path.
This will return 0 (success) but set the output git_filter_list to NULL if no filters are requested for the given file.
Declaration
public static extern int git_filter_list_load(out git_filter_list*filters, git_repository*repo, git_blob*blob, string path, git_filter_mode_t mode, uint flags)
Parameters
| Type | Name | Description |
|---|---|---|
| git_filter_list* | filters | Output newly created git_filter_list (or NULL) |
| git_repository* | repo | Repository object that contains path |
| git_blob* | blob | The blob to which the filter will be applied (if known) |
| System.String | path | Relative path of the file to be filtered |
| git_filter_mode_t | mode | Filtering direction (WT->ODB or ODB->WT) |
| System.UInt32 | flags | Combination of |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success (which could still return NULL if no filters are needed for the requested file) or an error code |
git_filter_list_load_ext(out git_filter_list*, git_repository*, git_blob*, String, git_filter_mode_t, ref git_filter_options)
Load the filter list for a given path.
This will return 0 (success) but set the output git_filter_list to NULL if no filters are requested for the given file.
Declaration
public static extern int git_filter_list_load_ext(out git_filter_list*filters, git_repository*repo, git_blob*blob, string path, git_filter_mode_t mode, ref git_filter_options opts)
Parameters
| Type | Name | Description |
|---|---|---|
| git_filter_list* | filters | Output newly created git_filter_list (or NULL) |
| git_repository* | repo | Repository object that contains path |
| git_blob* | blob | The blob to which the filter will be applied (if known) |
| System.String | path | Relative path of the file to be filtered |
| git_filter_mode_t | mode | Filtering direction (WT->ODB or ODB->WT) |
| git_filter_options | opts |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success (which could still return NULL if no filters are needed for the requested file) or an error code |
git_index_entrycount(git_index*)
Get the count of entries currently in the index.
Declaration
public static extern UIntPtr git_index_entrycount(git_index*index)
Parameters
| Type | Name | Description |
|---|---|---|
| git_index* | index | The index to read the entry from |
Returns
| Type | Description |
|---|---|
| UIntPtr | Count of the current entries |
git_index_free(git_index*)
Free an existing index object.
Declaration
public static extern void git_index_free(git_index*index)
Parameters
| Type | Name | Description |
|---|---|---|
| git_index* | index | The index to free |
git_index_get_byindex(git_index*, UIntPtr)
Get a pointer to an entry in the index at the the given position.
The entry is not modifiable and should not be freed. Because the `git_index_entry` struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.
Declaration
public static extern git_index_entry*git_index_get_byindex(git_index*index, UIntPtr n)
Parameters
| Type | Name | Description |
|---|---|---|
| git_index* | index | The index to read the entry from |
| UIntPtr | n | The position of the index entry |
Returns
| Type | Description |
|---|---|
| git_index_entry* | A pointer to the entry or NULL if out of bounds |
git_index_get_bypath(git_index*, String, Int32)
Get a pointer to an entry in the index for the given path at the given stage level.
A "stage level" is a construct for handling conflicted files during a merge; generally, files are in stage level 0 (sometimes called the "main index"); if a file is in conflict after a merge, there will be no entry at stage level 0, instead there will be entries at stages 1-3 representing the conflicting contents of the common ancestor, the file in "our" branch and the file in "their" branch.
The entry is not modifiable and should not be freed. Because the `git_index_entry` struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.
Declaration
public static extern git_index_entry*git_index_get_bypath(git_index*index, string path, int stage)
Parameters
| Type | Name | Description |
|---|---|---|
| git_index* | index | The index to read the entry from |
| System.String | path | The path for the index entry |
| System.Int32 | stage | The stage level to query |
Returns
| Type | Description |
|---|---|
| git_index_entry* | A pointer to the entry or NULL if out of bounds |
git_index_iterator_free(git_index_iterator*)
Free an existing index iterator.
Declaration
public static extern void git_index_iterator_free(git_index_iterator*iterator)
Parameters
| Type | Name | Description |
|---|---|---|
| git_index_iterator* | iterator | The iterator to free |
git_index_iterator_new(out git_index_iterator*, git_index*)
Create a new index iterator; this will take a snapshot of the given index for iteration.
Declaration
public static extern int git_index_iterator_new(out git_index_iterator*iterator, git_index*index)
Parameters
| Type | Name | Description |
|---|---|---|
| git_index_iterator* | iterator | Pointer to the iterator that was created |
| git_index* | index | The index to iterate over |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code |
git_index_iterator_next(out git_index_entry*, git_index_iterator*)
Get the next index entry in the iterator. This entry is owned by the iterator and should not be freed.
Declaration
public static extern int git_index_iterator_next(out git_index_entry*entry, git_index_iterator*iterator)
Parameters
| Type | Name | Description |
|---|---|---|
| git_index_entry* | entry | Pointer to the entry in the index |
| git_index_iterator* | iterator | The iterator to query |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success, GIT_ITEROVER on successful completion of iteration, or an error code |
git_libgit2_features()
Query compile time options for libgit2. This will show the functionality that is built in to the library.
Declaration
public static extern git_feature_t git_libgit2_features()
Returns
| Type | Description |
|---|---|
| git_feature_t | A combination of git_feature_t values. |
git_libgit2_init()
Initialize the native library's global state.
This function must be called before any other libgit2 function in order to set up global state and threading.
This function may be called multiple times - it will return the number of times the initialization has been called (including this one) that have not subsequently been shutdown.
Declaration
public static extern int git_libgit2_init()
Returns
| Type | Description |
|---|---|
| System.Int32 | The number of initializations of the library, or an error code. |
git_libgit2_opts(git_libgit2_opt_t, git_config_level_t, git_buf)
Get or set a global configuration option for libgit2.
Declaration
public static extern int git_libgit2_opts(git_libgit2_opt_t option, git_config_level_t level, git_buf buf)
Parameters
| Type | Name | Description |
|---|---|---|
| git_libgit2_opt_t | option | The option value to get or set |
| git_config_level_t | level | |
| git_buf | buf |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code |
git_libgit2_opts(git_libgit2_opt_t, git_config_level_t, String)
Declaration
public static extern int git_libgit2_opts(git_libgit2_opt_t option, git_config_level_t level, string path)
Parameters
| Type | Name | Description |
|---|---|---|
| git_libgit2_opt_t | option | |
| git_config_level_t | level | |
| System.String | path |
Returns
| Type | Description |
|---|---|
| System.Int32 |
git_libgit2_shutdown()
Shutdown the global state.
Clean up the global state and threading context after calling it as many times as git_libgit2_init() was called - it will return the number of remainining initializations that have not been shutdown (after this one).
Declaration
public static extern int git_libgit2_shutdown()
Returns
| Type | Description |
|---|---|
| System.Int32 | The number of remaining initializations of the library, or an error code. |
git_object_dup(out git_object*, git_object*)
Create an in-memory copy of a Git object. This copy must be explicitly free'd or it will leak.
Declaration
public static extern int git_object_dup(out git_object*dest, git_object*source)
Parameters
| Type | Name | Description |
|---|---|---|
| git_object* | dest | Pointer to store the copy of the object |
| git_object* | source | Original object to copy |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code |
git_object_free(git_object*)
Free a git object.
Declaration
public static extern void git_object_free(git_object*obj)
Parameters
| Type | Name | Description |
|---|---|---|
| git_object* | obj | The object to free |
git_object_id(git_object*)
Gets the object id of the given object.
Declaration
public static extern git_oid*git_object_id(git_object*obj)
Parameters
| Type | Name | Description |
|---|---|---|
| git_object* | obj | The object to examine |
Returns
| Type | Description |
|---|---|
| git_oid* | A pointer to the object's id |
git_object_lookup(out git_object*, git_repository*, ref git_oid, git_object_t)
Look up an object from the repository.
Declaration
public static extern int git_object_lookup(out git_object*obj, git_repository*repo, ref git_oid id, git_object_t type)
Parameters
| Type | Name | Description |
|---|---|---|
| git_object* | obj | Pointer to the object that was loaded from the repository |
| git_repository* | repo | The repository that contains the object |
| git_oid | id | The id of the object to lookup |
| git_object_t | type | The type of the object to lookup |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code |
git_object_type(git_object*)
Get the type of an object.
Declaration
public static extern git_object_t git_object_type(git_object*obj)
Parameters
| Type | Name | Description |
|---|---|---|
| git_object* | obj | The object to query |
Returns
| Type | Description |
|---|---|
| git_object_t | The type of the object |
git_odb_add_backend(git_odb*, git_odb_backend*, Int32)
Add a custom backend to an existing object database.
The backends are checked in relative ordering, based on the value of the `priority` parameter.
Declaration
public static extern int git_odb_add_backend(git_odb*odb, git_odb_backend*backend, int priority)
Parameters
| Type | Name | Description |
|---|---|---|
| git_odb* | odb | Database to add the backend to |
| git_odb_backend* | backend | The object database backend to add |
| System.Int32 | priority | Value for ordering the backends queue |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code. |
git_odb_backend_loose(out git_odb_backend*, String, Int32, Int32, UInt32, UInt32)
Create a backend for loose object files stored within a typical git object directory containing a "fanout" of subdirectories, named with the first two characters of the object's ID and objects stored in files beneath that, each named with the remaining 38 characters of their ID.
Declaration
public static extern int git_odb_backend_loose(out git_odb_backend*backend, string objects_dir, int compression_level, int do_fsync, uint dir_mode, uint file_mode)
Parameters
| Type | Name | Description |
|---|---|---|
| git_odb_backend* | backend | Pointer to the odb backend that will be created. |
| System.String | objects_dir | The path to the directory containing packfiles |
| System.Int32 | compression_level | zlib compression level to use |
| System.Int32 | do_fsync | If non-zero, call fsync after writing |
| System.UInt32 | dir_mode | POSIX open(2)-style permissions to use creating a directory or 0 for defaults |
| System.UInt32 | file_mode | POSIX open(2)-style permissions to use creating a file or 0 for defaults |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code. |
git_odb_backend_one_pack(out git_odb_backend*, String)
Create a backend out of a single packfile. This can be useful for inspecting the contents of a single packfile.
Declaration
public static extern int git_odb_backend_one_pack(out git_odb_backend*backend, string index_file)
Parameters
| Type | Name | Description |
|---|---|---|
| git_odb_backend* | backend | Pointer to the odb backend that will be created. |
| System.String | index_file | The path to the packfile's .idx file |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code. |
git_odb_backend_pack(out git_odb_backend*, String)
Create a backend for packfiles within a typical git object directory that contains a "pack" directory that will be consulted to find the packfiles to load. Each packfile within that "pack" directory will be consulted as storage for the object database.
Declaration
public static extern int git_odb_backend_pack(out git_odb_backend*backend, string objects_dir)
Parameters
| Type | Name | Description |
|---|---|---|
| git_odb_backend* | backend | Pointer to the odb backend that will be created. |
| System.String | objects_dir | The path to the directory containing packfiles |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code. |
git_odb_foreach(git_odb*, git_odb_foreach_cb, IntPtr)
List all objects available in the database.
The callback will be called for each object available in the database. Note that the objects are likely to be returned in the index order, which would make accessing the objects in that order inefficient. Return a non-zero value from the callback to stop looping.
Declaration
public static extern int git_odb_foreach(git_odb*odb, git_odb_foreach_cb cb, IntPtr payload)
Parameters
| Type | Name | Description |
|---|---|---|
| git_odb* | odb | The database to iterate. |
| git_odb_foreach_cb | cb | The callback to invoke for each object |
| IntPtr | payload | Custom data to pass back to the callback |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success, non-zero callback return value, or error code |
git_odb_free(git_odb*)
Close an open database object.
Declaration
public static extern void git_odb_free(git_odb*odb)
Parameters
| Type | Name | Description |
|---|---|---|
| git_odb* | odb | The database to close. If null, no action is taken. |
git_odb_new(out git_odb*)
Create a new object database with no backends.
Before the ODB can be used for read/writing, a custom database backend must be manually added using `git_odb_add_backend()`
Declaration
public static extern int git_odb_new(out git_odb*odb)
Parameters
| Type | Name | Description |
|---|---|---|
| git_odb* | odb | Pointer to the object database that will be created. |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code. |
git_odb_object_data(git_odb_object*)
Return the data of an ODB object. This is the uncompressed, raw data as read from the ODB, without the leading header.
Declaration
public static extern byte *git_odb_object_data(git_odb_object*obj)
Parameters
| Type | Name | Description |
|---|---|---|
| git_odb_object* | obj | The object to read its contents |
Returns
| Type | Description |
|---|---|
| System.Byte* | The raw content of the object |
git_odb_object_free(git_odb_object*)
Free an ODB object. This method must always be called once a git_odb_object is no longer needed, otherwise memory will leak.
Declaration
public static extern void git_odb_object_free(git_odb_object*obj)
Parameters
| Type | Name | Description |
|---|---|---|
| git_odb_object* | obj | Object to close |
git_odb_object_id(git_odb_object*)
Declaration
public static extern git_oid*git_odb_object_id(git_odb_object*obj)
Parameters
| Type | Name | Description |
|---|---|---|
| git_odb_object* | obj |
Returns
| Type | Description |
|---|---|
| git_oid* |
git_odb_object_size(git_odb_object*)
Return the size of an ODB object. This is the real size of the data buffer, not the actual size of the object.
Declaration
public static extern UIntPtr git_odb_object_size(git_odb_object*obj)
Parameters
| Type | Name | Description |
|---|---|---|
| git_odb_object* | obj | The object to query |
Returns
| Type | Description |
|---|---|
| UIntPtr | The size of the object |
git_odb_object_type(git_odb_object*)
Return the type of an ODB object.
Declaration
public static extern git_object_t git_odb_object_type(git_odb_object*obj)
Parameters
| Type | Name | Description |
|---|---|---|
| git_odb_object* | obj | The object to query |
Returns
| Type | Description |
|---|---|
| git_object_t | The type of object |
git_odb_read(out git_odb_object*, git_odb*, ref git_oid)
Read an object from the database.
This method queries all available ODB backends trying to read the given OID.
Declaration
public static extern int git_odb_read(out git_odb_object*obj, git_odb*odb, ref git_oid id)
Parameters
| Type | Name | Description |
|---|---|---|
| git_odb_object* | obj | Point to store the read object |
| git_odb* | odb | The database to read from |
| git_oid | id | The object ID to read |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code |
git_odb_read_header(out UIntPtr, out git_object_t, git_odb*, ref git_oid)
Read the header of an object from the database, without reading its full contents.
The header includes the length and the type of an object.
Note that most backends do not support reading only the header of an object, so the whole object will be read and then the header will be returned.
Declaration
public static extern int git_odb_read_header(out UIntPtr len_out, out git_object_t type, git_odb*odb, ref git_oid id)
Parameters
| Type | Name | Description |
|---|---|---|
| UIntPtr | len_out | Pointer to store the length |
| git_object_t | type | |
| git_odb* | odb | Database to search for the object in |
| git_oid | id | ID of the objecft to read |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success, GIT_ENOTFOUND if the object is not in the database, or an error code |
git_odb_write(ref git_oid, git_odb*, Byte*, UIntPtr, git_object_t)
Write an object directly into the object database.
This method writes a full object straight into the ODB. For most cases, it is preferred to write objects through a write stream, which is both faster and less memory intensive, specially for big objects.
This method is provided for compatibility with custom backends which are not able to support streaming writes
Declaration
public static extern int git_odb_write(ref git_oid id, git_odb*odb, byte *data, UIntPtr len, git_object_t type)
Parameters
| Type | Name | Description |
|---|---|---|
| git_oid | id | Pointer to store the OID result of the write |
| git_odb* | odb | Object database to store the object |
| System.Byte* | data | Buffer with the data to store |
| UIntPtr | len | Size of the buffer |
| git_object_t | type | Type of the data to store |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code |
git_oid_cpy(ref git_oid, ref git_oid)
Copy an oid from one structure to another.
Declaration
public static extern int git_oid_cpy(ref git_oid dst, ref git_oid src)
Parameters
| Type | Name | Description |
|---|---|---|
| git_oid | dst | The oid structure the result is written into. |
| git_oid | src | The oid structure to copy from. |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or error code |
git_reference_free(git_reference*)
Free the given reference.
Declaration
public static extern void git_reference_free(git_reference*reference)
Parameters
| Type | Name | Description |
|---|---|---|
| git_reference* | reference | The reference to free |
git_reference_iterator_free(git_reference_iterator*)
Free the given reference iterator.
Declaration
public static extern void git_reference_iterator_free(git_reference_iterator*iterator)
Parameters
| Type | Name | Description |
|---|---|---|
| git_reference_iterator* | iterator | The iterator to free |
git_reference_iterator_new(out git_reference_iterator*, git_repository*)
Create an iterator for the repository's references.
Declaration
public static extern int git_reference_iterator_new(out git_reference_iterator*iterator, git_repository*repository)
Parameters
| Type | Name | Description |
|---|---|---|
| git_reference_iterator* | iterator | Pointer to the iterator that was created |
| git_repository* | repository |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code |
git_reference_lookup(out git_reference*, git_repository*, String)
Lookup a reference by name in a repository. The returned reference must be freed by the user.
Declaration
public static extern int git_reference_lookup(out git_reference*reference, git_repository*repo, string name)
Parameters
| Type | Name | Description |
|---|---|---|
| git_reference* | reference | Pointer to the reference that was loaded from the repository |
| git_repository* | repo | The repository that contains the reference |
| System.String | name | The name of the reference to lookup |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success, GIT_ENOTFOUND if no reference exists by that name, GIT_EINVALIDSPEC if the given name is invalid or an error code |
git_reference_name(git_reference*)
Get the full name of a reference.
Declaration
public static extern string git_reference_name(git_reference*reference)
Parameters
| Type | Name | Description |
|---|---|---|
| git_reference* | reference | The reference to get the name of |
Returns
| Type | Description |
|---|---|
| System.String | The full name of the reference |
git_reference_next(out git_reference*, git_reference_iterator*)
Get the next reference from the iterator.
Declaration
public static extern int git_reference_next(out git_reference*reference, git_reference_iterator*iterator)
Parameters
| Type | Name | Description |
|---|---|---|
| git_reference* | reference | Pointer to the reference that is next in iteration |
| git_reference_iterator* | iterator | The iterator for the repository's references |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code |
git_reference_peel(out git_object*, git_reference*, git_object_t)
Recursively peel reference until object of the specified type is found.
Declaration
public static extern int git_reference_peel(out git_object*obj, git_reference*reference, git_object_t type)
Parameters
| Type | Name | Description |
|---|---|---|
| git_object* | obj | Pointer to the object that was peeled |
| git_reference* | reference | The reference to peel |
| git_object_t | type | The type of object to peel to |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code |
git_reference_symbolic_target(git_reference*)
Get the full name of the target of this reference. This function is only supported for symbolic references.
Declaration
public static extern string git_reference_symbolic_target(git_reference*reference)
Parameters
| Type | Name | Description |
|---|---|---|
| git_reference* | reference | The reference to get the target of |
Returns
| Type | Description |
|---|---|
| System.String | The target of the reference or NULL if the reference is not symbolic |
git_reference_target(git_reference*)
Get the oid target of this reference. This function is only supported for direct references.
Declaration
public static extern git_oid*git_reference_target(git_reference*reference)
Parameters
| Type | Name | Description |
|---|---|---|
| git_reference* | reference | The reference to get the target of |
Returns
| Type | Description |
|---|---|
| git_oid* | The target of the reference or NULL if the reference is not direct |
git_reference_type(git_reference*)
Get the type of this reference.
Declaration
public static extern git_reference_t git_reference_type(git_reference*reference)
Parameters
| Type | Name | Description |
|---|---|---|
| git_reference* | reference | The reference to get the type of |
Returns
| Type | Description |
|---|---|
| git_reference_t | The type of the reference |
git_repository_discover(git_buf, String, Int32, String)
Declaration
public static extern int git_repository_discover(git_buf path, string start_path, int across_fs, string ceiling_dirs)
Parameters
| Type | Name | Description |
|---|---|---|
| git_buf | path | |
| System.String | start_path | |
| System.Int32 | across_fs | |
| System.String | ceiling_dirs |
Returns
| Type | Description |
|---|---|
| System.Int32 |
git_repository_free(git_repository*)
Close a previously opened repository and free any native memory that was allocated.
Note that after a repository is free'd, all the objects it has spawned will still exist until they are manually closed by the user with `git_object_free`, but accessing any of the attributes of an object without a backing repository will result in undefined behavior.
Declaration
public static extern void git_repository_free(git_repository*repo)
Parameters
| Type | Name | Description |
|---|---|---|
| git_repository* | repo | The repository handle to close. |
git_repository_head(out git_reference*, git_repository*)
Retrieve and resolve the reference pointed to by HEAD.
The returned git_reference will be owned by the caller and git_reference_free(git_reference*) must be called when done to release the allocated memory.
Declaration
public static extern int git_repository_head(out git_reference*reference, git_repository*repo)
Parameters
| Type | Name | Description |
|---|---|---|
| git_reference* | reference | Pointer to the reference that will be retrieved |
| git_repository* | repo | The repository object |
Returns
| Type | Description |
|---|---|
| System.Int32 |
git_repository_head_detached(git_repository*)
Indicates if the repository's HEAD is detached. A repository's HEAD is detached when it points directly to a commit instead of a branch.
Declaration
public static extern int git_repository_head_detached(git_repository*repo)
Parameters
| Type | Name | Description |
|---|---|---|
| git_repository* | repo | The repository object |
Returns
| Type | Description |
|---|---|
| System.Int32 | 1 if the HEAD is detached, 0 if it's not, or an error code |
git_repository_index(out git_index*, git_repository*)
Get the index file for this repository.
If a custom index has not been set, the default index for the repository will be returned (the one located in `.git/index`).
The index must be freed once it's no longer being used by the user.
Declaration
public static extern int git_repository_index(out git_index*index, git_repository*repo)
Parameters
| Type | Name | Description |
|---|---|---|
| git_index* | index | Pointer to the index that will be opened |
| git_repository* | repo | The repository object |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code |
git_repository_init(out git_repository*, String, UInt32)
Creates a new Git repository in the given folder.
Declaration
public static extern int git_repository_init(out git_repository*repo, string path, uint bare)
Parameters
| Type | Name | Description |
|---|---|---|
| git_repository* | repo | Pointer to the repository that will be created. |
| System.String | path | The path to the repository |
| System.UInt32 | bare | If non-zero, a Git repository without a working directory is created at the given path. If zero, the provided path will be considered as the working directory into which the .git directory will be created. |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code. |
git_repository_is_bare(git_repository*)
Checks if a repository is bare.
Declaration
public static extern int git_repository_is_bare(git_repository*repo)
Parameters
| Type | Name | Description |
|---|---|---|
| git_repository* | repo | Repository to test |
Returns
| Type | Description |
|---|---|
| System.Int32 | 1 if the repository is bare, 0 otherwise |
git_repository_new(out git_repository*)
Create a new repository with neither backends nor config object
Note that this is only useful if you wish to associate the repository with a non-filesystem-backed object database and config store.
Declaration
public static extern int git_repository_new(out git_repository*repo)
Parameters
| Type | Name | Description |
|---|---|---|
| git_repository* | repo | Pointer to the repository that will be created. |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code. |
git_repository_odb(out git_odb*, git_repository*)
Get the object database ("ODB") for this repository.
If a custom ODB has not been set, the default database for the repository will be returned (the one located in `.git/objects`).
The ODB must be freed once it's no longer being used by the user.
Declaration
public static extern int git_repository_odb(out git_odb*odb, git_repository*repo)
Parameters
| Type | Name | Description |
|---|---|---|
| git_odb* | odb | Pointer to store the loaded ODB |
| git_repository* | repo | A repository object |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code |
git_repository_open(out git_repository*, String)
Open a git repository.
The path argument must point to either a Git
repository folder, or an existing working tree.
The method will automatically detect if path
is a working tree or a bare repository. It will fail if the
given path is neither.
Declaration
public static extern int git_repository_open(out git_repository*repo, string path)
Parameters
| Type | Name | Description |
|---|---|---|
| git_repository* | repo | Pointer to the repository that will be opened. |
| System.String | path | The path to the repository |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code. |
git_repository_path(git_repository*)
Declaration
public static extern string git_repository_path(git_repository*repository)
Parameters
| Type | Name | Description |
|---|---|---|
| git_repository* | repository |
Returns
| Type | Description |
|---|---|
| System.String |
git_repository_set_odb(git_repository*, git_odb*)
Set the Object Database for this repository
The ODB will be used for all object-related operations involving this repository.
The repository will keep a reference to the ODB; the user must still free the ODB object after setting it to the repository, or it will leak.
Declaration
public static extern void git_repository_set_odb(git_repository*repo, git_odb*odb)
Parameters
| Type | Name | Description |
|---|---|---|
| git_repository* | repo | The repository to configure |
| git_odb* | odb | The object database to set |
git_repository_workdir(git_repository*)
Declaration
public static extern string git_repository_workdir(git_repository*repository)
Parameters
| Type | Name | Description |
|---|---|---|
| git_repository* | repository |
Returns
| Type | Description |
|---|---|
| System.String |
git_revparse(git_revspec, git_repository*, String)
Parse a revision string for from, to, and intent.
See `man gitrevisions` or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.
The contents of the revspec object must be freed by the user.
Pointer to an user-allocated git_revspec struct where the result of the rev-parse will be stored the repository to search in the revision spec to parseDeclaration
public static extern int git_revparse(git_revspec revspec, git_repository*repo, string spec)
Parameters
| Type | Name | Description |
|---|---|---|
| git_revspec | revspec | |
| git_repository* | repo | |
| System.String | spec |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success, GIT_INVALIDSPEC, GIT_ENOTFOUND, GIT_EAMBIGUOUS or an error code |
git_tree_entry_byindex(git_tree*, UIntPtr)
Get a pointer to an entry in the tree at the the given index.
The entry is not modifiable and should not be freed; it will be freed when the owning tree is freed.
Declaration
public static extern git_tree_entry*git_tree_entry_byindex(git_tree*tree, UIntPtr n)
Parameters
| Type | Name | Description |
|---|---|---|
| git_tree* | tree | The tree to query |
| UIntPtr | n | The index in the tree to return |
Returns
| Type | Description |
|---|---|
| git_tree_entry* | A tree entry for the given index |
git_tree_entry_byname(git_tree*, String)
Get a pointer to an entry in the tree for the the given filename.
The entry is not modifiable and should not be freed; it will be freed when the owning tree is freed.
Declaration
public static extern git_tree_entry*git_tree_entry_byname(git_tree*tree, string filename)
Parameters
| Type | Name | Description |
|---|---|---|
| git_tree* | tree | The tree to query |
| System.String | filename | The filename in the tree to return |
Returns
| Type | Description |
|---|---|
| git_tree_entry* | A tree entry for the given index |
git_tree_entry_filemode(git_tree_entry*)
Get the file mode of the given tree entry.
Declaration
public static extern uint git_tree_entry_filemode(git_tree_entry*entry)
Parameters
| Type | Name | Description |
|---|---|---|
| git_tree_entry* | entry | The tree entry to query |
Returns
| Type | Description |
|---|---|
| System.UInt32 | The file mode of the tree entry |
git_tree_entry_id(git_tree_entry*)
Get the object id of the given tree entry.
Declaration
public static extern git_oid*git_tree_entry_id(git_tree_entry*entry)
Parameters
| Type | Name | Description |
|---|---|---|
| git_tree_entry* | entry | The tree entry to query |
Returns
| Type | Description |
|---|---|
| git_oid* | The object id of the tree entry |
git_tree_entry_name(git_tree_entry*)
Get the filename of the given tree entry.
Declaration
public static extern string git_tree_entry_name(git_tree_entry*entry)
Parameters
| Type | Name | Description |
|---|---|---|
| git_tree_entry* | entry | The tree entry to query |
Returns
| Type | Description |
|---|---|
| System.String | The filename of the tree entry |
git_tree_entrycount(git_tree*)
Get the number of entries in the tree.
Declaration
public static extern UIntPtr git_tree_entrycount(git_tree*tree)
Parameters
| Type | Name | Description |
|---|---|---|
| git_tree* | tree | The tree to query |
Returns
| Type | Description |
|---|---|
| UIntPtr | The number of entries in the tree |
git_tree_lookup(out git_tree*, git_repository*, ref git_oid)
Look up a tree from the repository.
Declaration
public static extern int git_tree_lookup(out git_tree*obj, git_repository*repo, ref git_oid id)
Parameters
| Type | Name | Description |
|---|---|---|
| git_tree* | obj | Pointer to the tree that was loaded from the repository |
| git_repository* | repo | The repository that contains the tree |
| git_oid | id | The id of the tree to lookup |
Returns
| Type | Description |
|---|---|
| System.Int32 | 0 on success or an error code |