![]() |
Nilorea Library
C utilities for networking, threading, graphics
|
libgit2 wrapper for Git repository operations More...
#include "nilorea/n_git.h"#include "nilorea/n_log.h"#include "nilorea/n_common.h"#include <string.h>#include <stdio.h>
Include dependency graph for n_git.c:Go to the source code of this file.
Functions | |
| static void | _n_git_commit_info_destroy (void *ptr) |
| Destructor for N_GIT_COMMIT_INFO used by LIST. | |
| static int | _n_git_cred_cb (git_credential **out, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload) |
| libgit2 credential callback for remote operations. | |
| static int | _n_git_diff_print_cb (const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload) |
| Callback for git_diff_print, appends each line to an N_STR. | |
| static void | _n_git_ensure_init (void) |
| Ensure libgit2 is initialized (idempotent). | |
| static void | _n_git_log_error (const char *func_name) |
| Log the last libgit2 error. | |
| static void | _n_git_status_entry_destroy (void *ptr) |
| Destructor for N_GIT_STATUS_ENTRY used by LIST. | |
| static void | _n_git_string_destroy (void *ptr) |
| Destructor for char* branch name strings used by LIST. | |
| int | n_git_checkout_commit (N_GIT_REPO *repo, const char *hash) |
| Checkout a specific commit (detached HEAD). | |
| int | n_git_checkout_path (N_GIT_REPO *repo, const char *filepath) |
| Restore a single file from HEAD (discard working directory changes). | |
| void | n_git_close (N_GIT_REPO **repo) |
| Close a Git repository and free resources. | |
| int | n_git_commit (N_GIT_REPO *repo, const char *message, const char *author_name, const char *author_email) |
| Create a commit from the current index. | |
| int | n_git_create_branch (N_GIT_REPO *repo, const char *branch_name) |
| Create a new branch from HEAD. | |
| int | n_git_current_branch (N_GIT_REPO *repo, char *out, size_t out_size) |
| Get the name of the current branch. | |
| int | n_git_delete_branch (N_GIT_REPO *repo, const char *branch_name) |
| Delete a local branch. | |
| N_STR * | n_git_diff_commits (N_GIT_REPO *repo, const char *hash_a, const char *hash_b) |
| Get a diff between two commits identified by hash. | |
| N_STR * | n_git_diff_workdir (N_GIT_REPO *repo) |
| Get a diff of the working directory against the index. | |
| N_GIT_REPO * | n_git_init (const char *path) |
| Initialize a new Git repository. | |
| LIST * | n_git_list_branches (N_GIT_REPO *repo) |
| List all local branch names. | |
| LIST * | n_git_log (N_GIT_REPO *repo, size_t max_entries) |
| Retrieve commit log entries starting from HEAD. | |
| N_GIT_REPO * | n_git_open (const char *path) |
| Open an existing Git repository. | |
| int | n_git_pull (N_GIT_REPO *repo) |
| Fetch from "origin" and fast-forward merge the current branch. | |
| int | n_git_push (N_GIT_REPO *repo) |
| Push the current branch to the "origin" remote. | |
| int | n_git_remote_set_url (N_GIT_REPO *repo, const char *url) |
| Ensure a remote named "origin" exists with the given URL. | |
| int | n_git_set_remote_auth (N_GIT_REPO *repo, const N_GIT_REMOTE_AUTH *auth) |
| Set remote authentication credentials on a repo handle. | |
| int | n_git_stage (N_GIT_REPO *repo, const char *filepath) |
| Stage a single file by path. | |
| int | n_git_stage_all (N_GIT_REPO *repo) |
| Stage all modified and untracked files. | |
| LIST * | n_git_status (N_GIT_REPO *repo) |
| Get the status of all files in the working directory. | |
| int | n_git_switch_branch (N_GIT_REPO *repo, const char *branch_name) |
| Switch to an existing local branch. | |
| int | n_git_unstage (N_GIT_REPO *repo, const char *filepath) |
| Unstage a single file (reset from HEAD). | |
Variables | |
| static int | _n_git_initialized = 0 |
| static flag ensuring git_libgit2_init is called only once | |
|
static |
Destructor for N_GIT_COMMIT_INFO used by LIST.
| ptr | Pointer to the entry to free. |
Definition at line 79 of file n_git.c.
References FreeNoLog.
Referenced by n_git_log().
Here is the caller graph for this function:
|
static |
libgit2 credential callback for remote operations.
Definition at line 940 of file n_git.c.
References N_GIT_AUTH_BASIC, N_GIT_AUTH_SSH, N_GIT_AUTH_TOKEN, N_GIT_REMOTE_AUTH::password, N_GIT_REMOTE_AUTH::ssh_passphrase, N_GIT_REMOTE_AUTH::ssh_privkey_path, N_GIT_REMOTE_AUTH::ssh_pubkey_path, N_GIT_REMOTE_AUTH::type, and N_GIT_REMOTE_AUTH::username.
Referenced by n_git_pull(), and n_git_push().
Here is the caller graph for this function:
|
static |
Callback for git_diff_print, appends each line to an N_STR.
| delta | Unused. |
| hunk | Unused. |
| line | The diff line to append. |
| payload | Pointer to the N_STR* accumulator. |
Definition at line 101 of file n_git.c.
References FreeNoLog, Malloc, and nstrprintf_cat.
Referenced by n_git_diff_commits(), and n_git_diff_workdir().
Here is the caller graph for this function:
|
static |
Ensure libgit2 is initialized (idempotent).
Definition at line 46 of file n_git.c.
References _n_git_initialized.
Referenced by n_git_init(), n_git_open(), n_git_pull(), n_git_push(), and n_git_remote_set_url().
Here is the caller graph for this function:
|
static |
Log the last libgit2 error.
| func_name | Name of the calling function for context. |
Definition at line 57 of file n_git.c.
References LOG_ERR, and n_log.
Referenced by n_git_checkout_commit(), n_git_checkout_path(), n_git_commit(), n_git_create_branch(), n_git_current_branch(), n_git_delete_branch(), n_git_diff_commits(), n_git_diff_workdir(), n_git_init(), n_git_list_branches(), n_git_log(), n_git_open(), n_git_pull(), n_git_push(), n_git_remote_set_url(), n_git_stage(), n_git_stage_all(), n_git_status(), n_git_switch_branch(), and n_git_unstage().
Here is the caller graph for this function:
|
static |
Destructor for N_GIT_STATUS_ENTRY used by LIST.
| ptr | Pointer to the entry to free. |
Definition at line 70 of file n_git.c.
References FreeNoLog.
Referenced by n_git_status().
Here is the caller graph for this function:
|
static |
Destructor for char* branch name strings used by LIST.
| ptr | Pointer to the string to free. |
Definition at line 88 of file n_git.c.
References FreeNoLog.
Referenced by n_git_list_branches().
Here is the caller graph for this function:
|
static |
static flag ensuring git_libgit2_init is called only once
Definition at line 41 of file n_git.c.
Referenced by _n_git_ensure_init().