Как я могу просмотреть все коммиты ветки, используя libgit2?
У меня уже есть следующий фрагмент кода, но он не компилируется.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <git2.h>
int main(int argc, char *argv[]){
git_repository *repo;
git_repository_open(&repo, ".");
git_odb *obj_db;
obj_db = git_repository_database(repo);
git_object commit;
git_revparse_single(&commit, repo, "HEAD");
git_repository_free(repo);
return 0;
}
GCC сообщает:
log.c: In function ‘main’:
log.c:11:9: warning: assignment makes pointer from integer without a cast [enabled by default]
log.c:13:13: error: storage size of ‘commit’ isn’t known
Я скомпилировал с флагом -lgit2
. Есть ли возможность быстро просмотреть все коммиты, начиная с корневого коммита?
Обновить Новый код выглядит так:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <git2.h>
int main(int argc, char *argv[]){
git_repository *repo;
git_repository_open(&repo, ".");
git_odb *obj_db;
obj_db = git_repository_database(repo);
git_object *commit;
git_revparse_single(&commit, repo, "HEAD");
git_repository_free(repo);
return 0;
}
Я получаю следующие сообщения об ошибках:
log.c:11: undefined reference to `git_repository_database'
log.c:14: undefined reference to `git_revparse_single'
git_repository_database
не существует. Предположительно, вам нуженgit_repository_odb
, хотя он вам не нужен для журнала.git_revparse_single
был представлен в версии 0.18, что говорит о том, что в вашей системе установлена древняя библиотека. - person Carlos Martín Nieto   schedule 29.07.2013master
. Возможно,git_revwalk
не для этого предназначен? - person Fuhrmanator   schedule 10.01.2019