3
我想獲得足夠的信息來創建一個使用libgit2的歷史圖,但我不確定如何得到像提交的分支名稱等適當的東西。我如何創建一個歷史圖
我想重現類似的東西,其產生與以下的git命令:
git log --oneline --graph --decorate --all
這是我使用的代碼:
git_commit* old_head = NULL;
error = git_revparse_single((git_object**) &old_head, open_repo, "refs/heads/master");
if(error != 0)
{
return SG_PLUGIN_OK;
}
const git_oid *head_oid = git_object_id((git_object*)old_head);
git_revwalk *walk;
git_revwalk_new(&walk, open_repo);
git_revwalk_sorting(walk, GIT_SORT_TOPOLOGICAL | GIT_SORT_TIME);
git_revwalk_push(walk, head_oid);
const git_signature *cauth;
const char *cmsg;
git_time_t ctime;
git_oid newoid;
while((git_revwalk_next(&newoid, walk)) == 0)
{
git_commit *wcommit;
error = git_commit_lookup(&wcommit, open_repo, &newoid);
if(error != 0)
{
return SG_PLUGIN_OK;
}
ctime = git_commit_time(wcommit);
cmsg = git_commit_message(wcommit);
cauth = git_commit_author(wcommit);
TRACE("\t%s (%s at %d)\n", cmsg, cauth->email, ctime);
git_commit_free(wcommit);
}
git_revwalk_free(walk);
我可以遍歷提交,但我有以上代碼的幾個問題:
- 我剛剛得到提交的主要主分支,如果我迭代co de改變每個分支名稱的revparse_single然後我得到所有提交,但有些顯然是重複提交是在多個分支
- 我只是得到提交味精,作者和時間,所以我如何找出什麼分支名稱是?
- 我在做對吧?