【发布时间】:2015-04-14 14:23:19
【问题描述】:
我正在使用 libgit2/git2go v0.22 并尝试从远程存储库实现类似于“git pull”的东西。在这种情况下,工作目录不写入任何内容:不更改、不提交、不推送。它只会从远程提取数据。
使用 git2go 我可以克隆远程存储库、加载/查找远程源、获取远程、列出远程标头等。似乎唯一不起作用的步骤是合并。 我的代码如下所示(我省略了错误处理):
repo, err:= git.OpenRepository(sitesConfig.Sites[SiteName].Path)
remote, err:= repo.LookupRemote("origin")
err = remote.SetCallbacks(&rcbs)
err = remote.Connect(git.ConnectDirectionFetch)
err = remote.ConnectFetch()
remote_master, err := repo.LookupReference("refs/remotes/origin/master")
mergeRemoteHead, err := repo.AnnotatedCommitFromRef(remote_master)
mergeHeads := make([]*git.AnnotatedCommit, 1)
mergeHeads[0] = mergeRemoteHead
err = repo.Merge(mergeHeads, nil, nil)
repo.StateCleanup()
运行此代码时未出现错误,但工作目录未更新。在同一目录上使用“git pull”和“git fetch && git marge origin/master”效果很好。
有什么遗漏吗?最终提交?
【问题讨论】: