The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#include <git2.h>
#include <stdio.h>

int main (int argc, char** argv)
{
  git_repository *repo;
  git_index *index;
  unsigned int i, e, ecount;
  git_index_entry **entries;
  git_oid oid;

  char out[41];
  out[40] = '\0';

  git_repository_open(&repo, "/opt/libgit2-test/.git");

  git_repository_index(&index, repo);
  git_index_read(index);

  ecount = git_index_entrycount(index);
  for (i = 0; i < ecount; ++i) {
    git_index_entry *e = git_index_get(index, i);

    oid = e->oid;
    git_oid_fmt(out, &oid);

    printf("File Path: %s\n", e->path);
    printf(" Blob SHA: %s\n", out);
    printf("File Size: %d\n", (int)e->file_size);
    printf("   Device: %d\n", (int)e->dev);
    printf("    Inode: %d\n", (int)e->ino);
    printf("      UID: %d\n", (int)e->uid);
    printf("      GID: %d\n", (int)e->gid);
    printf("    ctime: %d\n", (int)e->ctime.seconds);
    printf("    mtime: %d\n", (int)e->mtime.seconds);
    printf("\n");
  }

  git_index_free(index);

  git_repository_free(repo);
}