mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-02 17:42:31 +00:00
examples: general: extract function demonstrating index walking
This commit is contained in:
parent
f9a7973dd9
commit
c079e3c847
@ -43,6 +43,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
static void index_walking(git_repository *repo);
|
||||||
static void reference_listing(git_repository *repo);
|
static void reference_listing(git_repository *repo);
|
||||||
static void config_files(const char *repo_path);
|
static void config_files(const char *repo_path);
|
||||||
|
|
||||||
@ -426,30 +427,46 @@ int main (int argc, char** argv)
|
|||||||
// result in undefined behavior
|
// result in undefined behavior
|
||||||
git_revwalk_free(walk);
|
git_revwalk_free(walk);
|
||||||
|
|
||||||
// ### Index File Manipulation
|
index_walking(repo);
|
||||||
|
reference_listing(repo);
|
||||||
|
config_files(repo_path);
|
||||||
|
|
||||||
// The [index file API][gi] allows you to read, traverse, update and write
|
// Finally, when you're done with the repository, you can free it as well.
|
||||||
// the Git index file (sometimes thought of as the staging area).
|
git_repository_free(repo);
|
||||||
//
|
|
||||||
// [gi]: http://libgit2.github.com/libgit2/#HEAD/group/index
|
|
||||||
|
|
||||||
printf("\n*Index Walking*\n");
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ### Index File Manipulation *
|
||||||
|
* The [index file API][gi] allows you to read, traverse, update and write
|
||||||
|
* the Git index file (sometimes thought of as the staging area).
|
||||||
|
*
|
||||||
|
* [gi]: http://libgit2.github.com/libgit2/#HEAD/group/index
|
||||||
|
*/
|
||||||
|
static void index_walking(git_repository *repo)
|
||||||
|
{
|
||||||
git_index *index;
|
git_index *index;
|
||||||
unsigned int i, ecount;
|
unsigned int i, ecount;
|
||||||
|
|
||||||
// You can either open the index from the standard location in an open
|
printf("\n*Index Walking*\n");
|
||||||
// repository, as we're doing here, or you can open and manipulate any
|
|
||||||
// index file with `git_index_open_bare()`. The index for the repository
|
/**
|
||||||
// will be located and loaded from disk.
|
* You can either open the index from the standard location in an open
|
||||||
|
* repository, as we're doing here, or you can open and manipulate any
|
||||||
|
* index file with `git_index_open_bare()`. The index for the repository
|
||||||
|
* will be located and loaded from disk.
|
||||||
|
*/
|
||||||
git_repository_index(&index, repo);
|
git_repository_index(&index, repo);
|
||||||
|
|
||||||
// For each entry in the index, you can get a bunch of information
|
/**
|
||||||
// including the SHA (oid), path and mode which map to the tree objects
|
* For each entry in the index, you can get a bunch of information
|
||||||
// that are written out. It also has filesystem properties to help
|
* including the SHA (oid), path and mode which map to the tree objects
|
||||||
// determine what to inspect for changes (ctime, mtime, dev, ino, uid,
|
* that are written out. It also has filesystem properties to help
|
||||||
// gid, file_size and flags) All these properties are exported publicly in
|
* determine what to inspect for changes (ctime, mtime, dev, ino, uid,
|
||||||
// the `git_index_entry` struct
|
* gid, file_size and flags) All these properties are exported publicly in
|
||||||
|
* the `git_index_entry` struct
|
||||||
|
*/
|
||||||
ecount = git_index_entrycount(index);
|
ecount = git_index_entrycount(index);
|
||||||
for (i = 0; i < ecount; ++i) {
|
for (i = 0; i < ecount; ++i) {
|
||||||
const git_index_entry *e = git_index_get_byindex(index, i);
|
const git_index_entry *e = git_index_get_byindex(index, i);
|
||||||
@ -460,14 +477,6 @@ int main (int argc, char** argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
git_index_free(index);
|
git_index_free(index);
|
||||||
|
|
||||||
reference_listing(repo);
|
|
||||||
config_files(repo_path);
|
|
||||||
|
|
||||||
// Finally, when you're done with the repository, you can free it as well.
|
|
||||||
git_repository_free(repo);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user