gpt4 book ai didi

libgit2 - 如何创建历史图表

转载 作者:行者123 更新时间:2023-12-01 02:26:24 26 4
gpt4 key购买 nike

我正在尝试获取足够的信息来使用 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 );

我可以遍历提交,但上面的代码有几个问题:
  • 我只得到主主分支的提交,如果我迭代代码更改每个分支名称的 revparse_single,那么我得到所有提交,但有些提交显然是重复的,其中提交位于多个分支
  • 我只收到提交信息、作者和时间,那么我如何找出分支名称?
  • 我做得对吗?
  • 最佳答案

    使用单次步行并插入您想要使用的任何提示,您可以使用push_glob如果您愿意,可以推送所有分支。

    如果您想构建图表,那么您需要查看提交具有哪些父项,并使用该信息构建您的图表。

    至于分支名称,如果你指的是git-log的--decorate选项确实如此,您只需要记住每个分支提示指向什么提交,然后在打印该信息时将其绘制在它旁边。

    关于libgit2 - 如何创建历史图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16025145/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com