mirror of
https://git.proxmox.com/git/libgit2
synced 2025-07-05 19:55:36 +00:00
examples: general: extract function demonstrating OID parsing
This commit is contained in:
parent
29d9afc0fb
commit
c313e3d986
@ -43,6 +43,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
static void oid_parsing(git_oid *out);
|
||||||
static void object_database(git_repository *repo, git_oid *oid);
|
static void object_database(git_repository *repo, git_oid *oid);
|
||||||
static void commit_writing(git_repository *repo);
|
static void commit_writing(git_repository *repo);
|
||||||
static void commit_parsing(git_repository *repo);
|
static void commit_parsing(git_repository *repo);
|
||||||
@ -71,6 +72,8 @@ static void check_error(int error_code, const char *action)
|
|||||||
|
|
||||||
int main (int argc, char** argv)
|
int main (int argc, char** argv)
|
||||||
{
|
{
|
||||||
|
git_oid oid;
|
||||||
|
|
||||||
// Initialize the library, this will set up any global state which libgit2 needs
|
// Initialize the library, this will set up any global state which libgit2 needs
|
||||||
// including threading and crypto
|
// including threading and crypto
|
||||||
git_libgit2_init();
|
git_libgit2_init();
|
||||||
@ -91,32 +94,7 @@ int main (int argc, char** argv)
|
|||||||
error = git_repository_open(&repo, repo_path);
|
error = git_repository_open(&repo, repo_path);
|
||||||
check_error(error, "opening repository");
|
check_error(error, "opening repository");
|
||||||
|
|
||||||
// ### SHA-1 Value Conversions
|
oid_parsing(&oid);
|
||||||
|
|
||||||
// For our first example, we will convert a 40 character hex value to the
|
|
||||||
// 20 byte raw SHA1 value.
|
|
||||||
printf("*Hex to Raw*\n");
|
|
||||||
char hex[] = "4a202b346bb0fb0db7eff3cffeb3c70babbd2045";
|
|
||||||
|
|
||||||
// The `git_oid` is the structure that keeps the SHA value. We will use
|
|
||||||
// this throughout the example for storing the value of the current SHA
|
|
||||||
// key we're working with.
|
|
||||||
git_oid oid;
|
|
||||||
git_oid_fromstr(&oid, hex);
|
|
||||||
|
|
||||||
// Once we've converted the string into the oid value, we can get the raw
|
|
||||||
// value of the SHA by accessing `oid.id`
|
|
||||||
|
|
||||||
// Next we will convert the 20 byte raw SHA1 value to a human readable 40
|
|
||||||
// char hex value.
|
|
||||||
printf("\n*Raw to Hex*\n");
|
|
||||||
char out[GIT_OID_HEXSZ+1];
|
|
||||||
out[GIT_OID_HEXSZ] = '\0';
|
|
||||||
|
|
||||||
// If you have a oid, you can easily get the hex value of the SHA as well.
|
|
||||||
git_oid_fmt(out, &oid);
|
|
||||||
printf("SHA hex string: %s\n", out);
|
|
||||||
|
|
||||||
object_database(repo, &oid);
|
object_database(repo, &oid);
|
||||||
commit_writing(repo);
|
commit_writing(repo);
|
||||||
commit_parsing(repo);
|
commit_parsing(repo);
|
||||||
@ -134,6 +112,46 @@ int main (int argc, char** argv)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ### SHA-1 Value Conversions
|
||||||
|
*/
|
||||||
|
static void oid_parsing(git_oid *oid)
|
||||||
|
{
|
||||||
|
char out[GIT_OID_HEXSZ+1];
|
||||||
|
char hex[] = "4a202b346bb0fb0db7eff3cffeb3c70babbd2045";
|
||||||
|
|
||||||
|
printf("*Hex to Raw*\n");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For our first example, we will convert a 40 character hex value to the
|
||||||
|
* 20 byte raw SHA1 value.
|
||||||
|
*
|
||||||
|
* The `git_oid` is the structure that keeps the SHA value. We will use
|
||||||
|
* this throughout the example for storing the value of the current SHA
|
||||||
|
* key we're working with.
|
||||||
|
*/
|
||||||
|
git_oid_fromstr(oid, hex);
|
||||||
|
|
||||||
|
// Once we've converted the string into the oid value, we can get the raw
|
||||||
|
// value of the SHA by accessing `oid.id`
|
||||||
|
|
||||||
|
// Next we will convert the 20 byte raw SHA1 value to a human readable 40
|
||||||
|
// char hex value.
|
||||||
|
printf("\n*Raw to Hex*\n");
|
||||||
|
out[GIT_OID_HEXSZ] = '\0';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If you have a oid, you can easily get the hex value of the SHA as well.
|
||||||
|
*/
|
||||||
|
git_oid_fmt(out, oid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If you have a oid, you can easily get the hex value of the SHA as well.
|
||||||
|
*/
|
||||||
|
git_oid_fmt(out, oid);
|
||||||
|
printf("SHA hex string: %s\n", out);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ### Working with the Object Database
|
* ### Working with the Object Database
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user